revolver and ak47 updated, added decal system and shooting impact, and added 3rd and 1st person custom view-s for the revolver and other small changes

This commit is contained in:
2026-03-14 18:02:03 +01:00
parent beec47a593
commit 87e4c03db6
25 changed files with 1021 additions and 2781 deletions

View File

@@ -4,6 +4,8 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.sound.SoundCategory;
import net.minecraft.sound.SoundEvents;
import net.minecraft.util.Hand;
import net.minecraft.util.TypedActionResult;
import net.minecraft.util.UseAction;
@@ -24,7 +26,8 @@ public class AK47Item extends Item {
if (player.getItemCooldownManager().isCoolingDown(this)) return;
if (!consumeAmmo(player)) return;
player.getWorld().playSound(null, player.getBlockPos(),
SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.PLAYERS, 0.5f, 1.8f);
BulletEntity bullet = new BulletEntity(world, player);
bullet.setVelocity(player, player.getPitch(), player.getYaw(), 0f, 4.5f, 1.0f);
world.spawnEntity(bullet);

View File

@@ -1,13 +1,22 @@
package dev.tggamesyt.szar;
import net.fabricmc.fabric.api.networking.v1.PacketByteBufs;
import net.fabricmc.fabric.api.networking.v1.PlayerLookup;
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.projectile.thrown.ThrownItemEntity;
import net.minecraft.item.Item;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.EntityHitResult;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
public class BulletEntity extends ThrownItemEntity {
@@ -75,4 +84,31 @@ public class BulletEntity extends ThrownItemEntity {
discard();
}
@Override
protected void onBlockHit(net.minecraft.util.hit.BlockHitResult hit) {
super.onBlockHit(hit);
// Use exact hit position + nudge along face normal to sit on surface
Vec3d pos = hit.getPos();
Direction face = hit.getSide();
spawnImpact(pos, face);
discard();
}
private void spawnImpact(Vec3d pos, Direction face) {
if (!(getWorld() instanceof ServerWorld serverWorld)) return;
serverWorld.spawnParticles(ParticleTypes.SMOKE,
pos.x, pos.y, pos.z, 5, 0.05, 0.05, 0.05, 0.02);
PacketByteBuf buf = PacketByteBufs.create();
buf.writeDouble(pos.x);
buf.writeDouble(pos.y);
buf.writeDouble(pos.z);
buf.writeEnumConstant(face);
PlayerLookup.tracking(this).forEach(player ->
ServerPlayNetworking.send(player, Szar.BULLET_IMPACT, buf)
);
}
}

View File

@@ -13,6 +13,7 @@ import net.minecraft.entity.mob.MobEntity;
import net.minecraft.entity.mob.PathAwareEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Items;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.util.TypeFilter;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
@@ -51,11 +52,11 @@ public class PoliceEntity extends PathAwareEntity {
Box searchBox = new Box(pos).expand(60);
int playerCount = world.getEntitiesByType(
List<PlayerEntity> nearbyPlayers = world.getEntitiesByType(
TypeFilter.instanceOf(PlayerEntity.class),
searchBox,
e -> true
).size();
);
int policeCount = world.getEntitiesByType(
TypeFilter.instanceOf(PoliceEntity.class),
@@ -63,8 +64,22 @@ public class PoliceEntity extends PathAwareEntity {
e -> true
).size();
int limit = Math.min(playerCount, 10);
return policeCount < limit;
int limit = Math.min(nearbyPlayers.size(), 10);
if (policeCount >= limit) return false;
// Check if at least one nearby player is off cooldown
ServerPlayerEntity eligiblePlayer = nearbyPlayers.stream()
.filter(p -> p instanceof ServerPlayerEntity)
.map(p -> (ServerPlayerEntity) p)
.filter(PoliceSpawnTimerStore::canSpawnForPlayer)
.findFirst()
.orElse(null);
if (eligiblePlayer == null) return false;
// Record the spawn against that player
PoliceSpawnTimerStore.recordSpawn(eligiblePlayer);
return true;
}

View File

@@ -0,0 +1,29 @@
package dev.tggamesyt.szar;
import net.minecraft.server.network.ServerPlayerEntity;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
public class PoliceSpawnTimerStore {
private static final long COOLDOWN_TICKS = 20 * 60 * 10L; // 10 minutes in ticks
// UUID → last spawn time in world ticks
private static final Map<UUID, Long> lastSpawnTime = new ConcurrentHashMap<>();
public static boolean canSpawnForPlayer(ServerPlayerEntity player) {
long now = player.getWorld().getTime();
Long last = lastSpawnTime.get(player.getUuid());
if (last == null) return true;
return (now - last) >= COOLDOWN_TICKS;
}
public static void recordSpawn(ServerPlayerEntity player) {
lastSpawnTime.put(player.getUuid(), player.getWorld().getTime());
}
public static void remove(ServerPlayerEntity player) {
lastSpawnTime.remove(player.getUuid());
}
}

View File

@@ -145,7 +145,8 @@ public class RouletteBlockEntity extends BlockEntity {
int total = stack.getCount() * multiplier;
while (total > 0) {
int batchSize = Math.min(total, stack.getMaxCount());
ItemStack give = new ItemStack(stack.getItem(), batchSize);
ItemStack give = stack.copy();
give.setCount(batchSize);
player.getInventory().offerOrDrop(give);
total -= batchSize;
}

View File

@@ -133,22 +133,28 @@ public class SlotMachineBlockEntity extends BlockEntity {
void finishSpin() {
if (getForceWin()) {
int payout = switch (getwinTier()) {
case 0 -> getcurrentBetAmount() * 2; // fruit 2x
case 1 -> getcurrentBetAmount() * 10; // golden apple small
case 2 -> getcurrentBetAmount() * 30; // jackpot
case 0 -> getcurrentBetAmount() * 2;
case 1 -> getcurrentBetAmount() * 10;
case 2 -> getcurrentBetAmount() * 30;
default -> 0;
};
Direction facing = getCachedState().get(SlotMachineBlock.FACING);
BlockPos drop = getPos().offset(facing);
assert getWorld() != null;
ItemScatterer.spawn(
getWorld(),
drop.getX(),
drop.getY(),
drop.getZ(),
new ItemStack(getcurrentBetStack().getItem(), payout)
);
// Spawn payout stacks, respecting max stack size
ItemStack template = getcurrentBetStack().copy();
int remaining = payout;
int maxStack = template.getMaxCount();
while (remaining > 0) {
int count = Math.min(remaining, maxStack);
ItemStack stack = template.copy();
stack.setCount(count);
ItemScatterer.spawn(getWorld(), drop.getX(), drop.getY(), drop.getZ(), stack);
remaining -= count;
}
}
setcurrentBetAmount(0);
setcurrentBetStack(ItemStack.EMPTY);

View File

@@ -27,6 +27,7 @@ import net.minecraft.block.*;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.BlockEntityType;
import net.minecraft.entity.*;
import net.minecraft.entity.damage.DamageSource;
import net.minecraft.entity.damage.DamageType;
import net.minecraft.entity.data.DataTracker;
import net.minecraft.entity.data.TrackedData;
@@ -93,6 +94,7 @@ public class Szar implements ModInitializer {
public static final Identifier REVOLVER_SHOOT = new Identifier(MOD_ID, "revolver_shoot");
public static final Identifier REVOLVER_SPIN = new Identifier(MOD_ID, "revolver_spin");
public static final Identifier REVOLVER_SYNC = new Identifier(MOD_ID, "revolver_sync");
public static final Identifier BULLET_IMPACT = new Identifier(MOD_ID, "bullet_impact");
public static final Identifier REVOLVER_CHAMBER_CHANGE = new Identifier(MOD_ID, "revolver_chamber_change");
public static final SoundEvent BESZIV = Registry.register(
Registries.SOUND_EVENT,
@@ -371,6 +373,9 @@ public class Szar implements ModInitializer {
private final Map<UUID, BlockPos> sleepingPlayers = new HashMap<>();
@Override
public void onInitialize() {
ServerPlayConnectionEvents.DISCONNECT.register((handler, server) -> {
PoliceSpawnTimerStore.remove(handler.player);
});
ServerPlayNetworking.registerGlobalReceiver(REVOLVER_CHAMBER_CHANGE, (server, player, handler, buf, responseSender) -> {
int index = buf.readInt();
boolean wasLoaded = buf.readBoolean(); // true = unloading, false = loading
@@ -448,7 +453,11 @@ public class Szar implements ModInitializer {
SoundEvents.ENTITY_GENERIC_EXPLODE, SoundCategory.PLAYERS, 0.5f, 1.8f);
if (isHeadshot) {
player.damage(player.getWorld().getDamageSources().genericKill(), Float.MAX_VALUE);
RegistryEntry<DamageType> bullet_damage = SERVER.getRegistryManager()
.get(RegistryKeys.DAMAGE_TYPE)
.getEntry(BULLET_DAMAGE)
.orElseThrow(() -> new IllegalStateException("Bullet DamageType not registered!"));
player.damage(new DamageSource(bullet_damage, player), Float.MAX_VALUE);
} else {
BulletEntity bullet = new BulletEntity(player.getWorld(), player);
bullet.setVelocity(player, player.getPitch(), player.getYaw(), 0f, 4.5f, 0.0f);

View File

@@ -125,5 +125,8 @@
"item.szar.revolver": "Revolver",
"item.szar.revolver_bullet": "Revolver Bullet",
"item.szar.bullet_shell": "Revolver Bullet Shell"
"item.szar.bullet_shell": "Revolver Bullet Shell",
"key.categories.szar": "Szar",
"key.szar.spin": "Interact with Revolver"
}

View File

@@ -1,89 +1,517 @@
{
"format_version": "1.9.0",
"credit": "Made with Blockbench",
"format_version": "1.21.11",
"credit": "Converted from TechGuns ModelAK",
"texture_size": [128, 64],
"textures": {
"0": "szar:item/ak47",
"particle": "szar:item/ak47"
"0": "szar:item/ak47texture",
"particle": "szar:item/ak47texture"
},
"elements": [
{
"from": [7, 0, 7],
"to": [9, 7, 9],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 0, 9]},
"name": "Magazine05",
"from": [3.25, 8, 8],
"to": [4.25, 12, 9],
"rotation": {"angle": 0, "axis": "x", "origin": [3.25, 12, 8]},
"faces": {
"north": {"uv": [4, 4, 6, 11], "texture": "#0"},
"east": {"uv": [6, 4, 8, 11], "texture": "#0"},
"south": {"uv": [8, 4, 10, 11], "texture": "#0"},
"west": {"uv": [10, 0, 12, 7], "texture": "#0"},
"up": {"uv": [12, 15, 10, 13], "texture": "#0"},
"down": {"uv": [14, 13, 12, 15], "texture": "#0"}
"north": {"uv": [0.25, 0.5, 0.5, 2.5], "texture": "#0"},
"east": {"uv": [0.5, 0.5, 0.75, 2.5], "texture": "#0"},
"south": {"uv": [0.75, 0.5, 1, 2.5], "texture": "#0"},
"west": {"uv": [0, 0.5, 0.25, 2.5], "texture": "#0"},
"up": {"uv": [0.25, 0, 0.5, 0.5], "texture": "#0"},
"down": {"uv": [0.5, 0, 0.75, 0.5], "texture": "#0"}
}
},
{
"from": [7, 6, 3],
"to": [9, 8, 13],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 10]},
"name": "Grip2",
"from": [3, 10.5, 17.5],
"to": [4.5, 11.5, 18],
"faces": {
"north": {"uv": [0, 14, 2, 16], "texture": "#0"},
"east": {"uv": [0, 0, 10, 2], "texture": "#0"},
"south": {"uv": [2, 14, 4, 16], "texture": "#0"},
"west": {"uv": [0, 2, 10, 4], "texture": "#0"},
"up": {"uv": [2, 14, 0, 4], "texture": "#0"},
"down": {"uv": [4, 4, 2, 14], "texture": "#0"}
"north": {"uv": [0.125, 3, 0.5, 3.5], "texture": "#0"},
"east": {"uv": [0.5, 3, 0.625, 3.5], "texture": "#0"},
"south": {"uv": [0.625, 3, 1, 3.5], "texture": "#0"},
"west": {"uv": [0, 3, 0.125, 3.5], "texture": "#0"},
"up": {"uv": [0.125, 2.75, 0.5, 3], "texture": "#0"},
"down": {"uv": [0.5, 2.75, 0.875, 3], "texture": "#0"}
}
},
{
"from": [7, 4, 13],
"to": [9, 8, 15],
"rotation": {"angle": 0, "axis": "y", "origin": [7, 7, 10]},
"name": "MagHolder",
"from": [3, 10, 11.5],
"to": [4.5, 11.5, 12.5],
"faces": {
"north": {"uv": [10, 7, 12, 11], "texture": "#0"},
"east": {"uv": [4, 11, 6, 15], "texture": "#0"},
"south": {"uv": [6, 11, 8, 15], "texture": "#0"},
"west": {"uv": [8, 11, 10, 15], "texture": "#0"},
"up": {"uv": [16, 4, 14, 2], "texture": "#0"},
"down": {"uv": [16, 4, 14, 6], "texture": "#0"}
"north": {"uv": [2.5, 4, 2.875, 4.75], "texture": "#0"},
"east": {"uv": [2.875, 4, 3.125, 4.75], "texture": "#0"},
"south": {"uv": [3.125, 4, 3.5, 4.75], "texture": "#0"},
"west": {"uv": [2.25, 4, 2.5, 4.75], "texture": "#0"},
"up": {"uv": [2.5, 3.5, 2.875, 4], "texture": "#0"},
"down": {"uv": [2.875, 3.5, 3.25, 4], "texture": "#0"}
}
},
{
"from": [7, 5, 15],
"to": [9, 7, 19],
"rotation": {"angle": 22.5, "axis": "x", "origin": [8, 7, 15]},
"name": "Trigger02",
"from": [3.5, 10.25, 14.5],
"to": [4, 11.75, 15],
"rotation": {"angle": -22.5, "axis": "x", "origin": [3.5, 11.75, 14.5]},
"faces": {
"north": {"uv": [14, 6, 16, 8], "texture": "#0"},
"east": {"uv": [10, 11, 14, 13], "texture": "#0"},
"south": {"uv": [14, 8, 16, 10], "texture": "#0"},
"west": {"uv": [12, 0, 16, 2], "texture": "#0"},
"up": {"uv": [14, 6, 12, 2], "texture": "#0"},
"down": {"uv": [14, 6, 12, 10], "texture": "#0"}
"north": {"uv": [1.75, 4, 1.875, 4.75], "texture": "#0"},
"east": {"uv": [1.875, 4, 2, 4.75], "texture": "#0"},
"south": {"uv": [2, 4, 2.125, 4.75], "texture": "#0"},
"west": {"uv": [1.625, 4, 1.75, 4.75], "texture": "#0"},
"up": {"uv": [1.75, 3.75, 1.875, 4], "texture": "#0"},
"down": {"uv": [1.875, 3.75, 2, 4], "texture": "#0"}
}
},
{
"name": "Barrel",
"from": [3.75, 12.75, -3.5],
"to": [5.25, 14.25, -2],
"rotation": {"angle": 45, "axis": "z", "origin": [3.75, 14.25, -3.5]},
"faces": {
"north": {"uv": [5, 7.5, 5.375, 8.25], "texture": "#0"},
"east": {"uv": [5.375, 7.5, 5.75, 8.25], "texture": "#0"},
"south": {"uv": [5.75, 7.5, 6.125, 8.25], "texture": "#0"},
"west": {"uv": [4.625, 7.5, 5, 8.25], "texture": "#0"},
"up": {"uv": [5, 6.75, 5.375, 7.5], "texture": "#0"},
"down": {"uv": [5.375, 6.75, 5.75, 7.5], "texture": "#0"}
}
},
{
"name": "Receiver06",
"from": [3.5, 14.5, 18.25],
"to": [4, 15, 18.75],
"rotation": {"angle": -45, "axis": "x", "origin": [3.5, 15, 18.25]},
"faces": {
"north": {"uv": [6.125, 0.25, 6.25, 0.5], "texture": "#0"},
"east": {"uv": [6.25, 0.25, 6.375, 0.5], "texture": "#0"},
"south": {"uv": [6.375, 0.25, 6.5, 0.5], "texture": "#0"},
"west": {"uv": [6, 0.25, 6.125, 0.5], "texture": "#0"},
"up": {"uv": [6.125, 0, 6.25, 0.25], "texture": "#0"},
"down": {"uv": [6.25, 0, 6.375, 0.25], "texture": "#0"}
}
},
{
"name": "Trigger01",
"from": [3.25, 9.5, 13],
"to": [4.25, 10, 16.5],
"faces": {
"north": {"uv": [3.625, 5, 3.875, 5.25], "texture": "#0"},
"east": {"uv": [3.875, 5, 4.75, 5.25], "texture": "#0"},
"south": {"uv": [4.75, 5, 5, 5.25], "texture": "#0"},
"west": {"uv": [2.75, 5, 3.625, 5.25], "texture": "#0"},
"up": {"uv": [3.625, 3.25, 3.875, 5], "texture": "#0"},
"down": {"uv": [3.875, 3.25, 4.125, 5], "texture": "#0"}
}
},
{
"name": "Magazine01",
"from": [3.25, 9.5, 12.5],
"to": [4.25, 11.5, 13],
"faces": {
"north": {"uv": [4.375, 3.5, 4.625, 4.5], "texture": "#0"},
"east": {"uv": [4.625, 3.5, 4.75, 4.5], "texture": "#0"},
"south": {"uv": [4.75, 3.5, 5, 4.5], "texture": "#0"},
"west": {"uv": [4.25, 3.5, 4.375, 4.5], "texture": "#0"},
"up": {"uv": [4.375, 3.25, 4.625, 3.5], "texture": "#0"},
"down": {"uv": [4.625, 3.25, 4.875, 3.5], "texture": "#0"}
}
},
{
"name": "Magazine02",
"from": [3, 10, 15],
"to": [4.5, 11.5, 17.5],
"faces": {
"north": {"uv": [0.625, 5, 1, 5.75], "texture": "#0"},
"east": {"uv": [1, 5, 1.625, 5.75], "texture": "#0"},
"south": {"uv": [1.625, 5, 2, 5.75], "texture": "#0"},
"west": {"uv": [0, 5, 0.625, 5.75], "texture": "#0"},
"up": {"uv": [0.625, 3.75, 1, 5], "texture": "#0"},
"down": {"uv": [1, 3.75, 1.375, 5], "texture": "#0"}
}
},
{
"name": "Grip1",
"from": [3, 6, 15.5],
"to": [4.5, 10, 17.5],
"rotation": {"angle": 22.5, "axis": "x", "origin": [3, 10, 15.5]},
"faces": {
"north": {"uv": [3.75, 1, 4.125, 3], "texture": "#0"},
"east": {"uv": [4.125, 1, 4.625, 3], "texture": "#0"},
"south": {"uv": [4.625, 1, 5, 3], "texture": "#0"},
"west": {"uv": [3.25, 1, 3.75, 3], "texture": "#0"},
"up": {"uv": [3.75, 0, 4.125, 1], "texture": "#0"},
"down": {"uv": [4.125, 0, 4.5, 1], "texture": "#0"}
}
},
{
"name": "Magazine06",
"from": [3.25, 4.3, 7.5],
"to": [4.25, 8.3, 8.5],
"rotation": {"angle": -22.5, "axis": "x", "origin": [3.25, 8.3, 7.5]},
"faces": {
"north": {"uv": [0.25, 0.5, 0.5, 2.5], "texture": "#0"},
"east": {"uv": [0.5, 0.5, 0.75, 2.5], "texture": "#0"},
"south": {"uv": [0.75, 0.5, 1, 2.5], "texture": "#0"},
"west": {"uv": [0, 0.5, 0.25, 2.5], "texture": "#0"},
"up": {"uv": [0.25, 0, 0.5, 0.5], "texture": "#0"},
"down": {"uv": [0.5, 0, 0.75, 0.5], "texture": "#0"}
}
},
{
"name": "Magazine03",
"from": [3, 8, 9],
"to": [4.5, 12, 11.5],
"rotation": {"angle": 0, "axis": "x", "origin": [3, 12, 9]},
"faces": {
"north": {"uv": [1.75, 1.25, 2.125, 3.25], "texture": "#0"},
"east": {"uv": [2.125, 1.25, 2.75, 3.25], "texture": "#0"},
"south": {"uv": [2.75, 1.25, 3.125, 3.25], "texture": "#0"},
"west": {"uv": [1.125, 1.25, 1.75, 3.25], "texture": "#0"},
"up": {"uv": [1.75, 0, 2.125, 1.25], "texture": "#0"},
"down": {"uv": [2.125, 0, 2.5, 1.25], "texture": "#0"}
}
},
{
"name": "Magazine04",
"from": [3, 4, 8.5],
"to": [4.5, 8.5, 11],
"rotation": {"angle": -22.5, "axis": "x", "origin": [3, 8.5, 8.5]},
"faces": {
"north": {"uv": [1.75, 1.25, 2.125, 3.5], "texture": "#0"},
"east": {"uv": [2.125, 1.25, 2.75, 3.5], "texture": "#0"},
"south": {"uv": [2.75, 1.25, 3.125, 3.5], "texture": "#0"},
"west": {"uv": [1.125, 1.25, 1.75, 3.5], "texture": "#0"},
"up": {"uv": [1.75, 0, 2.125, 1.25], "texture": "#0"},
"down": {"uv": [2.125, 0, 2.5, 1.25], "texture": "#0"}
}
},
{
"name": "Receiver03",
"from": [2.75, 14, 2.5],
"to": [4.75, 15.5, 6],
"faces": {
"north": {"uv": [6.875, 1.75, 7.375, 2.5], "texture": "#0"},
"east": {"uv": [7.375, 1.75, 8.25, 2.5], "texture": "#0"},
"south": {"uv": [8.25, 1.75, 8.75, 2.5], "texture": "#0"},
"west": {"uv": [6, 1.75, 6.875, 2.5], "texture": "#0"},
"up": {"uv": [6.875, 0, 7.375, 1.75], "texture": "#0"},
"down": {"uv": [7.375, 0, 7.875, 1.75], "texture": "#0"}
}
},
{
"name": "Handguard01",
"from": [3, 14, -2],
"to": [4.5, 15.5, 2.5],
"faces": {
"north": {"uv": [7.125, 4.75, 7.5, 5.5], "texture": "#0"},
"east": {"uv": [7.5, 4.75, 8.625, 5.5], "texture": "#0"},
"south": {"uv": [8.625, 4.75, 9, 5.5], "texture": "#0"},
"west": {"uv": [6, 4.75, 7.125, 5.5], "texture": "#0"},
"up": {"uv": [7.125, 2.5, 7.5, 4.75], "texture": "#0"},
"down": {"uv": [7.5, 2.5, 7.875, 4.75], "texture": "#0"}
}
},
{
"name": "Handguard02",
"from": [2.75, 11.5, -2],
"to": [4.75, 14, 5],
"faces": {
"north": {"uv": [13.25, 3.5, 13.75, 4.75], "texture": "#0"},
"east": {"uv": [13.75, 3.5, 15.5, 4.75], "texture": "#0"},
"south": {"uv": [15.5, 3.5, 16, 4.75], "texture": "#0"},
"west": {"uv": [11.5, 3.5, 13.25, 4.75], "texture": "#0"},
"up": {"uv": [13.25, 0, 13.75, 3.5], "texture": "#0"},
"down": {"uv": [13.75, 0, 14.25, 3.5], "texture": "#0"}
}
},
{
"name": "Barrel03",
"from": [3.5, 13.0167, -13],
"to": [4, 16.0167, -12.5],
"rotation": {"angle": 22.5, "axis": "x", "origin": [3.5, 16.0167, -13]},
"faces": {
"north": {"uv": [0.125, 11.75, 0.25, 13.25], "texture": "#0"},
"east": {"uv": [0.25, 11.75, 0.375, 13.25], "texture": "#0"},
"south": {"uv": [0.375, 11.75, 0.5, 13.25], "texture": "#0"},
"west": {"uv": [0, 11.75, 0.125, 13.25], "texture": "#0"},
"up": {"uv": [0.125, 11.5, 0.25, 11.75], "texture": "#0"},
"down": {"uv": [0.25, 11.5, 0.375, 11.75], "texture": "#0"}
}
},
{
"name": "Barrel02",
"from": [3.75, 14.5167, -6.5],
"to": [4.75, 15.5167, -2],
"rotation": {"angle": 45, "axis": "z", "origin": [3.75, 15.5167, -6.5]},
"faces": {
"north": {"uv": [5.75, 10.75, 6, 11.25], "texture": "#0"},
"east": {"uv": [6, 10.75, 7.125, 11.25], "texture": "#0"},
"south": {"uv": [7.125, 10.75, 7.375, 11.25], "texture": "#0"},
"west": {"uv": [4.625, 10.75, 5.75, 11.25], "texture": "#0"},
"up": {"uv": [5.75, 8.5, 6, 10.75], "texture": "#0"},
"down": {"uv": [6, 8.5, 6.25, 10.75], "texture": "#0"}
}
},
{
"name": "Receiver02",
"from": [2.75, 11.5, 5],
"to": [4.75, 14, 19],
"faces": {
"north": {"uv": [3.5, 14.75, 4, 16], "texture": "#0"},
"east": {"uv": [4, 14.75, 7.5, 16], "texture": "#0"},
"south": {"uv": [7.5, 14.75, 8, 16], "texture": "#0"},
"west": {"uv": [0, 14.75, 3.5, 16], "texture": "#0"},
"up": {"uv": [3.5, 7.75, 4, 14.75], "texture": "#0"},
"down": {"uv": [4, 7.75, 4.5, 14.75], "texture": "#0"}
}
},
{
"name": "Stock09",
"from": [2.75, 13.5, 19],
"to": [4.75, 14, 20],
"faces": {
"north": {"uv": [9.75, 9.25, 10.25, 9.5], "texture": "#0"},
"east": {"uv": [10.25, 9.25, 10.5, 9.5], "texture": "#0"},
"south": {"uv": [10.5, 9.25, 11, 9.5], "texture": "#0"},
"west": {"uv": [9.5, 9.25, 9.75, 9.5], "texture": "#0"},
"up": {"uv": [9.75, 8.75, 10.25, 9.25], "texture": "#0"},
"down": {"uv": [10.25, 8.75, 10.75, 9.25], "texture": "#0"}
}
},
{
"name": "Barrel04",
"from": [3.25, 12.5167, -8],
"to": [4.25, 13.5167, -5.5],
"rotation": {"angle": 45, "axis": "x", "origin": [3.25, 13.5167, -8]},
"faces": {
"north": {"uv": [2.25, 11.25, 2.5, 11.75], "texture": "#0"},
"east": {"uv": [2.5, 11.25, 3.125, 11.75], "texture": "#0"},
"south": {"uv": [3.125, 11.25, 3.375, 11.75], "texture": "#0"},
"west": {"uv": [1.625, 11.25, 2.25, 11.75], "texture": "#0"},
"up": {"uv": [2.25, 10, 2.5, 11.25], "texture": "#0"},
"down": {"uv": [2.5, 10, 2.75, 11.25], "texture": "#0"}
}
},
{
"name": "BarrelIS",
"from": [3.5, 16.0167, -13.5],
"to": [4, 16.5167, -12.5],
"faces": {
"north": {"uv": [0.25, 8.75, 0.375, 9], "texture": "#0"},
"east": {"uv": [0.375, 8.75, 0.625, 9], "texture": "#0"},
"south": {"uv": [0.625, 8.75, 0.75, 9], "texture": "#0"},
"west": {"uv": [0, 8.75, 0.25, 9], "texture": "#0"},
"up": {"uv": [0.25, 8.25, 0.375, 8.75], "texture": "#0"},
"down": {"uv": [0.375, 8.25, 0.5, 8.75], "texture": "#0"}
}
},
{
"name": "BarrelMain",
"from": [3.75, 12.75, -16],
"to": [4.75, 13.75, -3.5],
"rotation": {"angle": 45, "axis": "z", "origin": [3.75, 13.75, -17]},
"faces": {
"north": {"uv": [12.125, 15.5, 12.375, 16], "texture": "#0"},
"east": {"uv": [12.375, 15.5, 15.75, 16], "texture": "#0"},
"south": {"uv": [15.75, 15.5, 16, 16], "texture": "#0"},
"west": {"uv": [8.75, 15.5, 12.125, 16], "texture": "#0"},
"up": {"uv": [12.125, 8.75, 12.375, 15.5], "texture": "#0"},
"down": {"uv": [12.375, 8.75, 12.625, 15.5], "texture": "#0"}
}
},
{
"name": "BarrelFront",
"from": [3.75, 12.75, -14],
"to": [5.25, 14.25, -11],
"rotation": {"angle": 45, "axis": "z", "origin": [3.75, 14.25, -14]},
"faces": {
"north": {"uv": [0.75, 13.5, 1.125, 14.25], "texture": "#0"},
"east": {"uv": [1.125, 13.5, 1.875, 14.25], "texture": "#0"},
"south": {"uv": [1.875, 13.5, 2.25, 14.25], "texture": "#0"},
"west": {"uv": [0, 13.5, 0.75, 14.25], "texture": "#0"},
"up": {"uv": [0.75, 12, 1.125, 13.5], "texture": "#0"},
"down": {"uv": [1.125, 12, 1.5, 13.5], "texture": "#0"}
}
},
{
"name": "BarrelMid",
"from": [3.75, 12.75, -8],
"to": [5.25, 14.25, -6.5],
"rotation": {"angle": 45, "axis": "z", "origin": [3.75, 14.25, -8]},
"faces": {
"north": {"uv": [0.375, 10.5, 0.75, 11.25], "texture": "#0"},
"east": {"uv": [0.75, 10.5, 1.125, 11.25], "texture": "#0"},
"south": {"uv": [1.125, 10.5, 1.5, 11.25], "texture": "#0"},
"west": {"uv": [0, 10.5, 0.375, 11.25], "texture": "#0"},
"up": {"uv": [0.375, 9.75, 0.75, 10.5], "texture": "#0"},
"down": {"uv": [0.75, 9.75, 1.125, 10.5], "texture": "#0"}
}
},
{
"name": "ISTop",
"from": [3.5, 15.0167, 3],
"to": [4, 15.5167, 6.5],
"rotation": {"angle": 0, "axis": "x", "origin": [3.5, 15.5167, 3]},
"faces": {
"north": {"uv": [0.875, 7.75, 1, 8], "texture": "#0"},
"east": {"uv": [1, 7.75, 1.875, 8], "texture": "#0"},
"south": {"uv": [1.875, 7.75, 2, 8], "texture": "#0"},
"west": {"uv": [0, 7.75, 0.875, 8], "texture": "#0"},
"up": {"uv": [0.875, 6, 1, 7.75], "texture": "#0"},
"down": {"uv": [1, 6, 1.125, 7.75], "texture": "#0"}
}
},
{
"name": "ISFront",
"from": [3.5, 13.0167, -13.5],
"to": [4, 16.0167, -13],
"faces": {
"north": {"uv": [0.125, 11.75, 0.25, 13.25], "texture": "#0"},
"east": {"uv": [0.25, 11.75, 0.375, 13.25], "texture": "#0"},
"south": {"uv": [0.375, 11.75, 0.5, 13.25], "texture": "#0"},
"west": {"uv": [0, 11.75, 0.125, 13.25], "texture": "#0"},
"up": {"uv": [0.125, 11.5, 0.25, 11.75], "texture": "#0"},
"down": {"uv": [0.25, 11.5, 0.375, 11.75], "texture": "#0"}
}
},
{
"name": "Receiver05",
"from": [3, 14, 6],
"to": [4.5, 15.5, 17.5],
"faces": {
"north": {"uv": [5.125, 5.75, 5.5, 6.5], "texture": "#0"},
"east": {"uv": [5.5, 5.75, 8.375, 6.5], "texture": "#0"},
"south": {"uv": [8.375, 5.75, 8.75, 6.5], "texture": "#0"},
"west": {"uv": [2.25, 5.75, 5.125, 6.5], "texture": "#0"},
"up": {"uv": [5.125, 0, 5.5, 5.75], "texture": "#0"},
"down": {"uv": [5.5, 0, 5.875, 5.75], "texture": "#0"}
}
},
{
"name": "Receiver04",
"from": [3, 14, 17.5],
"to": [4.5, 15.5, 19.5],
"rotation": {"angle": -45, "axis": "x", "origin": [3, 15.5, 17.5]},
"faces": {
"north": {"uv": [2.125, 9, 2.5, 9.75], "texture": "#0"},
"east": {"uv": [2.5, 9, 3, 9.75], "texture": "#0"},
"south": {"uv": [3, 9, 3.375, 9.75], "texture": "#0"},
"west": {"uv": [1.625, 9, 2.125, 9.75], "texture": "#0"},
"up": {"uv": [2.125, 8, 2.5, 9], "texture": "#0"},
"down": {"uv": [2.5, 8, 2.875, 9], "texture": "#0"}
}
},
{
"name": "Stock04",
"from": [2.75, 11, 21.5],
"to": [4.75, 11.5, 32],
"faces": {
"north": {"uv": [8.375, 14.25, 8.875, 14.5], "texture": "#0"},
"east": {"uv": [8.875, 14.25, 11.5, 14.5], "texture": "#0"},
"south": {"uv": [11.5, 14.25, 12, 14.5], "texture": "#0"},
"west": {"uv": [5.75, 14.25, 8.375, 14.5], "texture": "#0"},
"up": {"uv": [8.375, 9, 8.875, 14.25], "texture": "#0"},
"down": {"uv": [8.875, 9, 9.375, 14.25], "texture": "#0"}
}
},
{
"name": "Stock03",
"from": [2.75, 11.5, 19],
"to": [4.75, 13.5, 32],
"faces": {
"north": {"uv": [10.5, 6.75, 11, 7.75], "texture": "#0"},
"east": {"uv": [11, 6.75, 14.25, 7.75], "texture": "#0"},
"south": {"uv": [14.25, 6.75, 14.75, 7.75], "texture": "#0"},
"west": {"uv": [7.25, 6.75, 10.5, 7.75], "texture": "#0"},
"up": {"uv": [10.5, 0.25, 11, 6.75], "texture": "#0"},
"down": {"uv": [11, 0.25, 11.5, 6.75], "texture": "#0"}
}
},
{
"name": "Stock05",
"from": [2.75, 9.5, 28.5],
"to": [4.75, 10, 32],
"faces": {
"north": {"uv": [8.375, 12, 8.875, 12.25], "texture": "#0"},
"east": {"uv": [8.875, 12, 9.75, 12.25], "texture": "#0"},
"south": {"uv": [9.75, 12, 10.25, 12.25], "texture": "#0"},
"west": {"uv": [7.5, 12, 8.375, 12.25], "texture": "#0"},
"up": {"uv": [8.375, 10.25, 8.875, 12], "texture": "#0"},
"down": {"uv": [8.875, 10.25, 9.375, 12], "texture": "#0"}
}
},
{
"name": "Stock06",
"from": [2.75, 13.5, 26],
"to": [4.75, 14, 32],
"faces": {
"north": {"uv": [8.375, 11.5, 8.875, 11.75], "texture": "#0"},
"east": {"uv": [8.875, 11.5, 10.375, 11.75], "texture": "#0"},
"south": {"uv": [10.375, 11.5, 10.875, 11.75], "texture": "#0"},
"west": {"uv": [6.875, 11.5, 8.375, 11.75], "texture": "#0"},
"up": {"uv": [8.375, 8.5, 8.875, 11.5], "texture": "#0"},
"down": {"uv": [8.875, 8.5, 9.375, 11.5], "texture": "#0"}
}
},
{
"name": "Stock07",
"from": [2.75, 10, 27],
"to": [4.75, 10.5, 32],
"faces": {
"north": {"uv": [8.375, 12.5, 8.875, 12.75], "texture": "#0"},
"east": {"uv": [8.875, 12.5, 10.125, 12.75], "texture": "#0"},
"south": {"uv": [10.125, 12.5, 10.625, 12.75], "texture": "#0"},
"west": {"uv": [7.125, 12.5, 8.375, 12.75], "texture": "#0"},
"up": {"uv": [8.375, 10, 8.875, 12.5], "texture": "#0"},
"down": {"uv": [8.875, 10, 9.375, 12.5], "texture": "#0"}
}
},
{
"name": "Stock08",
"from": [2.75, 10.5, 24.5],
"to": [4.75, 11, 32],
"faces": {
"north": {"uv": [8.375, 13, 8.875, 13.25], "texture": "#0"},
"east": {"uv": [8.875, 13, 10.75, 13.25], "texture": "#0"},
"south": {"uv": [10.75, 13, 11.25, 13.25], "texture": "#0"},
"west": {"uv": [6.5, 13, 8.375, 13.25], "texture": "#0"},
"up": {"uv": [8.375, 9.25, 8.875, 13], "texture": "#0"},
"down": {"uv": [8.875, 9.25, 9.375, 13], "texture": "#0"}
}
}
],
"display": {
"thirdperson_righthand": {
"translation": [0, 4, -2.5]
"translation": [2, -0.75, -2.25],
"scale": [0.5, 0.5, 0.5]
},
"thirdperson_lefthand": {
"translation": [-2, -0.75, -2.25],
"scale": [0.5, 0.5, 0.5]
},
"firstperson_righthand": {
"translation": [0, 5.5, -1.75]
"translation": [2.63, 2.7, -0.87],
"scale": [0.6, 0.6, 0.6]
},
"firstperson_lefthand": {
"translation": [0, 5.5, -1.75]
"translation": [-2.63, 2.7, -0.87],
"scale": [0.6, 0.6, 0.6]
},
"ground": {
"rotation": [66, 180, 0],
"translation": [0, -4, 4],
"scale": [0.67, 0.67, 0.67]
"translation": [0, 3, 0],
"scale": [0.5, 0.5, 0.5]
},
"gui": {
"rotation": [0, 90, 0],
"translation": [-2.5, 3, 0]
"rotation": [30, -135, 0],
"translation": [-1, -1.75, 0],
"scale": [0.4, 0.4, 0.4]
},
"head": {
"translation": [0, 9.75, -9.25]
"translation": [4.5, 3.25, 0]
},
"fixed": {
"rotation": [0, -90, 0],
"translation": [2.25, 2.75, -0.25]
"rotation": [90, 45, -90],
"translation": [-2, -2, -2.25],
"scale": [0.6, 0.6, 0.6]
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -154,5 +154,13 @@
"stream": true
}
]
},
"reload": {
"sounds": [
{
"name": "szar:reload",
"stream": true
}
]
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B