diff --git a/src/main/java/com/atsuishio/superbwarfare/block/BarbedWireBlock.java b/src/main/java/com/atsuishio/superbwarfare/block/BarbedWireBlock.java index 235e2e299..5fd4373ca 100644 --- a/src/main/java/com/atsuishio/superbwarfare/block/BarbedWireBlock.java +++ b/src/main/java/com/atsuishio/superbwarfare/block/BarbedWireBlock.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.block; +import com.atsuishio.superbwarfare.entity.vehicle.VehicleEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.core.registries.Registries; @@ -7,7 +8,6 @@ import net.minecraft.network.chat.Component; import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.damagesource.DamageTypes; import net.minecraft.world.entity.Entity; -import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.TooltipFlag; import net.minecraft.world.item.context.BlockPlaceContext; @@ -93,9 +93,9 @@ public class BarbedWireBlock extends Block { public void entityInside(BlockState blockstate, Level world, BlockPos pos, Entity entity) { super.entityInside(blockstate, world, pos, entity); - if (entity instanceof LivingEntity living) { - living.makeStuckInBlock(Blocks.AIR.defaultBlockState(), new Vec3(0.25, 0.05, 0.25)); - living.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.CACTUS)), 1); + if (!(entity instanceof VehicleEntity)) { + entity.makeStuckInBlock(Blocks.AIR.defaultBlockState(), new Vec3(0.15, 0.04, 0.15)); + entity.hurt(new DamageSource(world.registryAccess().registryOrThrow(Registries.DAMAGE_TYPE).getHolderOrThrow(DamageTypes.CACTUS)), 2); } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerLaserLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerLaserLayer.java new file mode 100644 index 000000000..7bc023d96 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerLaserLayer.java @@ -0,0 +1,28 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +public class LaserTowerLaserLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/laser_tower_laser.png"); + + public LaserTowerLaserLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, LaserTowerEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + RenderType glowRenderType = RenderType.energySwirl(LAYER, 1, 1); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerPowerLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerPowerLayer.java new file mode 100644 index 000000000..7e9a4996f --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/LaserTowerPowerLayer.java @@ -0,0 +1,31 @@ +package com.atsuishio.superbwarfare.client.layer; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.texture.OverlayTexture; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.renderer.GeoRenderer; +import software.bernie.geckolib.renderer.layer.GeoRenderLayer; + +import static com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity.ACTIVE; + +public class LaserTowerPowerLayer extends GeoRenderLayer { + + private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/laser_tower_e.png"); + + public LaserTowerPowerLayer(GeoRenderer entityRenderer) { + super(entityRenderer); + } + + @Override + public void render(PoseStack poseStack, LaserTowerEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + if (animatable.getEnergy() <= 0 || !animatable.getEntityData().get(ACTIVE)) return; + RenderType glowRenderType = RenderType.eyes(LAYER); + getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, 1, 1, 1, 1); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/LaserTowerModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/LaserTowerModel.java new file mode 100644 index 000000000..cbd553046 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/LaserTowerModel.java @@ -0,0 +1,34 @@ +package com.atsuishio.superbwarfare.client.model.entity; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.core.animatable.model.CoreGeoBone; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.model.GeoModel; + +import static com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity.LASER_LENGTH; + +public class LaserTowerModel extends GeoModel { + + @Override + public ResourceLocation getAnimationResource(LaserTowerEntity entity) { + return ModUtils.loc("animations/laser_tower.animation.json"); + } + + @Override + public ResourceLocation getModelResource(LaserTowerEntity entity) { + return ModUtils.loc("geo/laser_tower.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(LaserTowerEntity entity) { + return ModUtils.loc("textures/entity/laser_tower.png"); + } + + @Override + public void setCustomAnimations(LaserTowerEntity animatable, long instanceId, AnimationState animationState) { + CoreGeoBone laser = getAnimationProcessor().getBone("laser"); + laser.setScaleZ(10 * animatable.getEntityData().get(LASER_LENGTH)); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserTowerRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserTowerRenderer.java new file mode 100644 index 000000000..d978bbeb2 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/LaserTowerRenderer.java @@ -0,0 +1,59 @@ +package com.atsuishio.superbwarfare.client.renderer.entity; + +import com.atsuishio.superbwarfare.client.layer.LaserTowerLaserLayer; +import com.atsuishio.superbwarfare.client.layer.LaserTowerPowerLayer; +import com.atsuishio.superbwarfare.client.model.entity.LaserTowerModel; +import com.atsuishio.superbwarfare.entity.vehicle.LaserTowerEntity; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.entity.EntityRendererProvider; +import net.minecraft.resources.ResourceLocation; +import net.minecraft.util.Mth; +import software.bernie.geckolib.cache.object.BakedGeoModel; +import software.bernie.geckolib.cache.object.GeoBone; +import software.bernie.geckolib.renderer.GeoEntityRenderer; + +public class LaserTowerRenderer extends GeoEntityRenderer { + + public LaserTowerRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new LaserTowerModel()); + this.addRenderLayer(new LaserTowerPowerLayer(this)); + this.addRenderLayer(new LaserTowerLaserLayer(this)); + } + + @Override + public RenderType getRenderType(LaserTowerEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, LaserTowerEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + float blue, float alpha) { + float scale = 1f; + this.scaleHeight = scale; + this.scaleWidth = scale; + super.preRender(poseStack, entity, model, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); + } + + @Override + public void render(LaserTowerEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { + poseStack.pushPose(); + super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); + } + + @Override + public void renderRecursively(PoseStack poseStack, LaserTowerEntity animatable, GeoBone bone, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { + String name = bone.getName(); + if (name.equals("turret")) { + bone.setRotY(-Mth.lerp(partialTick, animatable.yRotO, animatable.getYRot()) * Mth.DEG_TO_RAD); + } + if (name.equals("barrel")) { + bone.setRotX(-Mth.lerp(partialTick, animatable.xRotO, animatable.getXRot()) * Mth.DEG_TO_RAD); + } + + super.renderRecursively(poseStack, animatable, bone, renderType, bufferSource, buffer, isReRender, partialTick, packedLight, packedOverlay, red, green, blue, alpha); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java new file mode 100644 index 000000000..49de8fa86 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/vehicle/LaserTowerEntity.java @@ -0,0 +1,341 @@ +package com.atsuishio.superbwarfare.entity.vehicle; + +import com.atsuishio.superbwarfare.init.*; +import com.atsuishio.superbwarfare.item.ContainerBlockItem; +import com.atsuishio.superbwarfare.tools.CustomExplosion; +import com.atsuishio.superbwarfare.tools.EntityFindUtil; +import com.atsuishio.superbwarfare.tools.ParticleTool; +import com.atsuishio.superbwarfare.tools.VectorTool; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.protocol.Packet; +import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.server.level.ServerPlayer; +import net.minecraft.server.players.OldUsersConverter; +import net.minecraft.sounds.SoundEvents; +import net.minecraft.sounds.SoundSource; +import net.minecraft.util.Mth; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.damagesource.DamageTypes; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.level.ClipContext; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.HitResult; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.network.PlayMessages; +import org.joml.Math; +import software.bernie.geckolib.animatable.GeoEntity; +import software.bernie.geckolib.core.animatable.instance.AnimatableInstanceCache; +import software.bernie.geckolib.core.animation.AnimatableManager; +import software.bernie.geckolib.core.animation.AnimationController; +import software.bernie.geckolib.core.animation.AnimationState; +import software.bernie.geckolib.core.animation.RawAnimation; +import software.bernie.geckolib.core.object.PlayState; +import software.bernie.geckolib.util.GeckoLibUtil; + +import java.util.Comparator; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.StreamSupport; + +import static com.atsuishio.superbwarfare.tools.ParticleTool.sendParticle; + +public class LaserTowerEntity extends EnergyVehicleEntity implements GeoEntity, OwnableEntity { + public static final EntityDataAccessor COOL_DOWN = SynchedEntityData.defineId(LaserTowerEntity.class, EntityDataSerializers.INT); + public static final EntityDataAccessor ACTIVE = SynchedEntityData.defineId(LaserTowerEntity.class, EntityDataSerializers.BOOLEAN); + public static final EntityDataAccessor> OWNER_UUID = SynchedEntityData.defineId(LaserTowerEntity.class, EntityDataSerializers.OPTIONAL_UUID); + public static final EntityDataAccessor LASER_LENGTH = SynchedEntityData.defineId(LaserTowerEntity.class, EntityDataSerializers.FLOAT); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + + public static final float MAX_HEALTH = 100; + public static final int MAX_ENERGY = 500000; + public static final int SHOOT_COST = 5000; + + public LaserTowerEntity(PlayMessages.SpawnEntity packet, Level world) { + this(ModEntities.LASER_TOWER.get(), world); + } + + public LaserTowerEntity(EntityType type, Level world) { + super(type, world); + this.noCulling = true; + } + + public LaserTowerEntity(LivingEntity owner, Level level) { + super(ModEntities.CLAYMORE.get(), level); + this.setOwnerUUID(owner.getUUID()); + } + + public boolean isOwnedBy(LivingEntity pEntity) { + return pEntity == this.getOwner(); + } + + @Override + protected void defineSynchedData() { + super.defineSynchedData(); + this.entityData.define(OWNER_UUID, Optional.empty()); + this.entityData.define(COOL_DOWN, 0); + this.entityData.define(LASER_LENGTH, 0f); + this.entityData.define(ACTIVE, false); + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + super.addAdditionalSaveData(compound); + compound.putInt("CoolDown", this.entityData.get(COOL_DOWN)); + compound.putBoolean("Active", this.entityData.get(ACTIVE)); + if (this.getOwnerUUID() != null) { + compound.putUUID("Owner", this.getOwnerUUID()); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + super.readAdditionalSaveData(compound); + this.entityData.set(COOL_DOWN, compound.getInt("CoolDown")); + this.entityData.set(ACTIVE, compound.getBoolean("Active")); + + UUID uuid; + if (compound.hasUUID("Owner")) { + uuid = compound.getUUID("Owner"); + } else { + String s = compound.getString("Owner"); + + assert this.getServer() != null; + uuid = OldUsersConverter.convertMobOwnerIfNecessary(this.getServer(), s); + } + + if (uuid != null) { + try { + this.setOwnerUUID(uuid); + } catch (Throwable ignored) { + } + } + } + + public void setOwnerUUID(@javax.annotation.Nullable UUID pUuid) { + this.entityData.set(OWNER_UUID, Optional.ofNullable(pUuid)); + } + + @javax.annotation.Nullable + public UUID getOwnerUUID() { + return this.entityData.get(OWNER_UUID).orElse(null); + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + public boolean hurt(DamageSource source, float amount) { + super.hurt(source, amount); + if (this.level() instanceof ServerLevel serverLevel) { + sendParticle(serverLevel, ModParticleTypes.FIRE_STAR.get(), this.getX(), this.getY() + 2.5, this.getZ(), 4, 0.2, 0.2, 0.2, 0.2, false); + } + + if (source.is(DamageTypes.ARROW)) { + amount *= 0.1f; + } + if (source.is(DamageTypes.TRIDENT)) { + amount *= 0.2f; + } + if (source.is(DamageTypes.MOB_ATTACK)) { + amount *= 0.2f; + } + if (source.is(DamageTypes.MOB_ATTACK_NO_AGGRO)) { + amount *= 0.2f; + } + if (source.is(DamageTypes.MOB_PROJECTILE)) { + amount *= 0.4f; + } + if (source.is(DamageTypes.PLAYER_ATTACK)) { + amount *= 0.4f; + } + if (source.is(DamageTypes.LAVA)) { + amount *= 1f; + } + if (source.is(DamageTypes.EXPLOSION)) { + amount *= 1.5f; + } + if (source.is(DamageTypes.PLAYER_EXPLOSION)) { + amount *= 1.5f; + } + + if (source.is(ModDamageTypes.CUSTOM_EXPLOSION)) { + amount *= 0.5f; + } + if (source.is(ModDamageTypes.PROJECTILE_BOOM)) { + amount *= 0.5f; + } + if (source.is(ModDamageTypes.MINE)) { + amount *= 0.5f; + } + if (source.is(ModDamageTypes.LUNGE_MINE)) { + amount *= 0.5f; + } + if (source.is(ModDamageTypes.CANNON_FIRE)) { + amount *= 0.6f; + } + if (source.is(ModTags.DamageTypes.PROJECTILE)) { + amount *= 0.08f; + } + if (source.is(ModTags.DamageTypes.PROJECTILE_ABSOLUTE)) { + amount *= 0.5f; + } + if (source.is(ModDamageTypes.VEHICLE_STRIKE)) { + amount *= 5f; + } + + this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); + this.hurt(Math.max(amount - 2, 0), source.getEntity(), false); + return true; + } + + @Override + public InteractionResult interact(Player player, InteractionHand hand) { + ItemStack stack = player.getMainHandItem(); + if (player.isCrouching()) { + if (stack.is(ModItems.CROWBAR.get())) { + ItemStack container = ContainerBlockItem.createInstance(this); + if (!player.addItem(container)) { + player.drop(container, false); + } + this.remove(RemovalReason.DISCARDED); + this.discard(); + return InteractionResult.SUCCESS; + } else if (!entityData.get(ACTIVE)) { + entityData.set(ACTIVE, true); + this.setOwnerUUID(player.getUUID()); + if (player instanceof ServerPlayer serverPlayer) { + serverPlayer.level().playSound(null, serverPlayer.getOnPos(), SoundEvents.ARROW_HIT_PLAYER, SoundSource.PLAYERS, 0.5F, 1); + } + return InteractionResult.sidedSuccess(this.level().isClientSide()); + } + } + return InteractionResult.sidedSuccess(this.level().isClientSide()); + } + + @Override + public Vec3 getDeltaMovement() { + return new Vec3(0, Math.min(super.getDeltaMovement().y, 0), 0); + } + + @Override + public void baseTick() { + super.baseTick(); + + if (this.entityData.get(COOL_DOWN) > 0) { + this.entityData.set(COOL_DOWN, this.entityData.get(COOL_DOWN) - 1); + } + + this.move(MoverType.SELF, this.getDeltaMovement()); + if (this.onGround()) { + this.setDeltaMovement(Vec3.ZERO); + } else { + this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.04, 0.0)); + } + + autoAim(); + this.refreshDimensions(); + } + + @Override + public void destroy() { + Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID)); + if (level() instanceof ServerLevel) { + CustomExplosion explosion = new CustomExplosion(this.level(), this, + ModDamageTypes.causeProjectileBoomDamage(this.level().registryAccess(), attacker, attacker), 10f, + this.getX(), this.getY(), this.getZ(), 3f, Explosion.BlockInteraction.KEEP).setDamageMultiplier(1); + explosion.explode(); + net.minecraftforge.event.ForgeEventFactory.onExplosionStart(this.level(), explosion); + explosion.finalizeExplosion(false); + ParticleTool.spawnMediumExplosionParticles(this.level(), this.position()); + } + this.discard(); + } + + public void autoAim() { + if (this.entityData.get(ENERGY) <= 0 || !entityData.get(ACTIVE) || this.entityData.get(COOL_DOWN) > 10) return; + + Entity naerestEntity = seekNearLivingEntity(80); + + if (naerestEntity != null) { + Vec3 barrelRootPos = new Vec3(this.getX(), this.getY() + 1.390625f, this.getZ()); + Vec3 targetVec = barrelRootPos.vectorTo(naerestEntity.getEyePosition()).normalize(); + + double d0 = targetVec.x; + double d1 = targetVec.y; + double d2 = targetVec.z; + double d3 = Math.sqrt(d0 * d0 + d2 * d2); + this.setXRot(Mth.clamp(Mth.wrapDegrees((float) (-(Mth.atan2(d1, d3) * 57.2957763671875))), -90, 40)); + float targetY = Mth.wrapDegrees((float) (Mth.atan2(d2, d0) * 57.2957763671875) - 90.0F); + + float diffY = Math.clamp(-90f, 90f, Mth.wrapDegrees(targetY - this.getYRot())); + + this.setYRot(this.getYRot() + Mth.clamp(0.5f * diffY, -25f, 25f)); + this.setRot(this.getYRot(), this.getXRot()); + + if (this.entityData.get(COOL_DOWN) == 0 && VectorTool.calculateAngle(getViewVector(1), targetVec) < 1) { + if (level() instanceof ServerLevel) { + this.level().playSound(this, getOnPos(), ModSounds.CHARGE_RIFLE_FIRE_BOOM_3P.get(), SoundSource.PLAYERS, 2, 1); + } + naerestEntity.hurt(ModDamageTypes.causeLaserDamage(this.level().registryAccess(), getOwner(), getOwner()), (float) 25); + naerestEntity.invulnerableTime = 0; + entityData.set(LASER_LENGTH, distanceTo(naerestEntity)); + this.entityData.set(COOL_DOWN, 20); + this.consumeEnergy(SHOOT_COST); + } + } + } + + public Entity seekNearLivingEntity(double seekRange) { + return StreamSupport.stream(EntityFindUtil.getEntities(level()).getAll().spliterator(), false) + .filter(e -> { + // TODO 自定义目标列表 + if (e.distanceTo(this) <= seekRange && e instanceof Monster) { + return level().clip(new ClipContext(this.getEyePosition(), e.getEyePosition(), + ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, this)).getType() != HitResult.Type.BLOCK; + } + return false; + }).min(Comparator.comparingDouble(e -> e.distanceTo(this))).orElse(null); + } + + + + private PlayState movementPredicate(AnimationState event) { + if (this.entityData.get(COOL_DOWN) > 10) { + return event.setAndContinue(RawAnimation.begin().thenPlay("animation.lt.fire")); + } + return event.setAndContinue(RawAnimation.begin().thenLoop("animation.lt.idle")); + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + data.add(new AnimationController<>(this, "movement", 0, this::movementPredicate)); + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + + @Override + public int getMaxEnergy() { + return MAX_ENERGY; + } + + @Override + public float getMaxHealth() { + return MAX_HEALTH; + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java index c137d83bc..49ab5f8e2 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java @@ -86,6 +86,8 @@ public class ModEntities { EntityType.Builder.of(Bmp2Entity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(Bmp2Entity::new).fireImmune().sized(4f, 3f)); public static final RegistryObject> WG_MISSILE = register("wg_missile", EntityType.Builder.of(WgMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(WgMissileEntity::new).fireImmune().sized(0.5f, 0.5f)); + public static final RegistryObject> LASER_TOWER = register("laser_tower", + EntityType.Builder.of(LaserTowerEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(64).setUpdateInterval(3).setCustomClientFactory(LaserTowerEntity::new).fireImmune().sized(0.9f, 1.65f)); private static RegistryObject> register(String name, EntityType.Builder entityTypeBuilder) { return REGISTRY.register(name, () -> entityTypeBuilder.build(name)); diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java index bc57e7360..d71c54bf1 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java @@ -41,5 +41,6 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.MELON_BOMB.get(), MelonBombEntityRenderer::new); event.registerEntityRenderer(ModEntities.BMP_2.get(), Bmp2Renderer::new); event.registerEntityRenderer(ModEntities.WG_MISSILE.get(), WgMissileRenderer::new); + event.registerEntityRenderer(ModEntities.LASER_TOWER.get(), LaserTowerRenderer::new); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java b/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java index 9fe521957..05bb3a22b 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModTabs.java @@ -106,6 +106,7 @@ public class ModTabs { output.accept(ContainerBlockItem.createInstance(ModEntities.MK_42.get())); output.accept(ContainerBlockItem.createInstance(ModEntities.MLE_1934.get())); output.accept(ContainerBlockItem.createInstance(ModEntities.ANNIHILATOR.get())); + output.accept(ContainerBlockItem.createInstance(ModEntities.LASER_TOWER.get())); output.accept(ContainerBlockItem.createInstance(ModEntities.SPEEDBOAT.get(), true)); output.accept(ContainerBlockItem.createInstance(ModEntities.AH_6.get())); output.accept(ContainerBlockItem.createInstance(ModEntities.LAV_150.get(),true)); diff --git a/src/main/resources/assets/superbwarfare/animations/laser_tower.animation.json b/src/main/resources/assets/superbwarfare/animations/laser_tower.animation.json new file mode 100644 index 000000000..6eb6221d4 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/animations/laser_tower.animation.json @@ -0,0 +1,28 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation.lt.fire": { + "loop": "hold_on_last_frame", + "animation_length": 1, + "bones": { + "laser": { + "scale": { + "0.0": [0, 0, 1], + "0.0083": [1.3, 1.3, 1], + "0.1333": [1.3, 1.3, 1], + "0.2667": [0, 0, 1], + "0.9917": [0, 0, 1] + } + } + } + }, + "animation.lt.idle": { + "loop": true, + "bones": { + "laser": { + "scale": [0, 0, 1] + } + } + } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json b/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json new file mode 100644 index 000000000..9d05d054a --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/laser_tower.geo.json @@ -0,0 +1,2427 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 2, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "turret", + "parent": "root", + "pivot": [0, 10.5, 0] + }, + { + "name": "barrel", + "parent": "turret", + "pivot": [0, 22.25, 0], + "cubes": [ + { + "origin": [-1.20365, 24.14206, -6.2005], + "size": [2.40729, 0.89592, 0.37851], + "pivot": [0, 24.79002, -6.01124], + "rotation": [0, 0, 0], + "uv": { + "north": {"uv": [49, 66], "uv_size": [2, 1]}, + "up": {"uv": [66, 50], "uv_size": [2, 1]}, + "down": {"uv": [51, 67], "uv_size": [2, -1]} + } + }, + { + "origin": [-2.20365, 18.49206, -6.4005], + "size": [4.40729, 1.29592, 0.57851], + "pivot": [0, 19.59002, -6.01124], + "rotation": [0, 0, 0], + "uv": { + "north": {"uv": [65, 19], "uv_size": [4, 1]}, + "up": {"uv": [65, 26], "uv_size": [4, 1]} + } + }, + { + "origin": [1.49635, 19.09206, -6.4005], + "size": [1.20729, 0.54592, 0.57851], + "pivot": [1.25, 19.29002, -6.01124], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [69, 0], "uv_size": [1, 1]}, + "up": {"uv": [1, 69], "uv_size": [1, 1]} + } + }, + { + "origin": [-2.70365, 19.09206, -6.4005], + "size": [1.20729, 0.54592, 0.57851], + "pivot": [-1.25, 19.29002, -6.01124], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [69, 1], "uv_size": [1, 1]}, + "up": {"uv": [2, 69], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.76658, 25.52927, -6.2005], + "size": [0.25, 0.24592, 0.37851], + "pivot": [0.02977, 24.57723, -6.01124], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [68, 40], "uv_size": [1, 1]}, + "up": {"uv": [41, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.52846, 24.46725, -6.2005], + "size": [0.542, 0.24592, 0.37851], + "pivot": [-1.25746, 24.5902, -6.01124], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [68, 42], "uv_size": [1, 1]}, + "up": {"uv": [43, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.33009, 24.19444, -6.2005], + "size": [0.25, 0.24592, 0.37851], + "pivot": [-1.20509, 24.3174, -6.01124], + "rotation": [0, 0, -135], + "uv": { + "north": {"uv": [68, 41], "uv_size": [1, 1]}, + "up": {"uv": [42, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [0.51658, 25.52927, -6.2005], + "size": [0.25, 0.24592, 0.37851], + "pivot": [-0.02977, 24.57723, -6.01124], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [68, 45], "uv_size": [1, 1]}, + "up": {"uv": [46, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [0.98646, 24.46725, -6.2005], + "size": [0.542, 0.24592, 0.37851], + "pivot": [1.25746, 24.5902, -6.01124], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [68, 44], "uv_size": [1, 1]}, + "up": {"uv": [45, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [1.08009, 24.19444, -6.2005], + "size": [0.25, 0.24592, 0.37851], + "pivot": [1.20509, 24.3174, -6.01124], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [68, 43], "uv_size": [1, 1]}, + "up": {"uv": [44, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [-2.5, 18.75, -4], + "size": [5, 7, 8], + "uv": { + "east": {"uv": [27, 0], "uv_size": [8, 7]}, + "south": {"uv": [0, 46], "uv_size": [5, 7]}, + "west": {"uv": [0, 28], "uv_size": [8, 7]} + } + }, + { + "origin": [-2, 19.75, -6.1], + "size": [4, 5.6, 0.1], + "uv": { + "north": {"uv": [48, 16], "uv_size": [4, 6]}, + "east": {"uv": [60, 28], "uv_size": [1, 6]}, + "west": {"uv": [40, 60], "uv_size": [1, 6]}, + "up": {"uv": [64, 54], "uv_size": [4, 1]}, + "down": {"uv": [65, 10], "uv_size": [4, -1]} + } + }, + { + "origin": [-1.75, 20.78491, 8.20284], + "size": [3.5, 2.25, 1.5], + "pivot": [0, 24.28491, 5.70284], + "rotation": [-67.5, 0, 0], + "uv": { + "east": {"uv": [66, 35], "uv_size": [1, 2]}, + "south": {"uv": [57, 3], "uv_size": [4, 2]}, + "west": {"uv": [66, 37], "uv_size": [1, 2]} + } + }, + { + "origin": [0.25736, 20.54289, -6], + "size": [0.5, 1, 10], + "pivot": [-1.74264, 18.04289, 0], + "rotation": [0, 0, 45], + "uv": { + "south": {"uv": [67, 2], "uv_size": [1, 1]}, + "west": {"uv": [54, 54], "uv_size": [10, 1]} + } + }, + { + "origin": [1.0825, 15.45789, -6], + "size": [0.71, 3.585, 10], + "pivot": [1.2925, 18.54289, 0], + "rotation": [0, 0, 90], + "uv": { + "south": {"uv": [37, 63], "uv_size": [1, 4]}, + "west": {"uv": [47, 46], "uv_size": [10, 4]} + } + }, + { + "origin": [-0.75736, 20.54289, -6], + "size": [0.5, 1, 10], + "pivot": [1.74264, 18.04289, 0], + "rotation": [0, 0, -45], + "uv": { + "east": {"uv": [13, 55], "uv_size": [10, 1]}, + "south": {"uv": [67, 3], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.75736, 22.54289, 4], + "size": [0.5, 1, 2.5], + "pivot": [1.74264, 20.04289, 8], + "rotation": [0, 0, -45], + "uv": { + "east": {"uv": [40, 66], "uv_size": [2, 1]}, + "south": {"uv": [67, 16], "uv_size": [1, 1]} + } + }, + { + "origin": [1.0825, 17.45789, 4], + "size": [0.71, 3.585, 2.5], + "pivot": [1.2925, 20.54289, 8], + "rotation": [0, 0, 90], + "uv": { + "south": {"uv": [22, 64], "uv_size": [1, 4]}, + "west": {"uv": [31, 57], "uv_size": [2, 4]} + } + }, + { + "origin": [0.25736, 22.54289, 4], + "size": [0.5, 1, 2.5], + "pivot": [-1.74264, 20.04289, 8], + "rotation": [0, 0, 45], + "uv": { + "south": {"uv": [67, 15], "uv_size": [1, 1]}, + "west": {"uv": [66, 39], "uv_size": [2, 1]} + } + }, + { + "origin": [-1.58078, 26.9692, -4], + "size": [0.5, 1, 10.5], + "pivot": [0, 26.01444, 0], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [67, 5], "uv_size": [1, 1]}, + "east": {"uv": [52, 20], "uv_size": [11, 1]}, + "south": {"uv": [67, 6], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.26733, 24.22194, -4], + "size": [0.71, 3.585, 10.5], + "pivot": [0, 26.01444, 0], + "rotation": [0, 0, -90], + "uv": { + "south": {"uv": [38, 63], "uv_size": [1, 4]}, + "west": {"uv": [36, 45], "uv_size": [11, 4]} + } + }, + { + "origin": [-0.355, 25.02501, 0.37391], + "size": [0.71, 2.685, 2.25], + "pivot": [0, 26.36751, 2.87391], + "rotation": [0, 10, -90], + "uv": { + "west": {"uv": [60, 0], "uv_size": [2, 3]}, + "up": {"uv": [45, 66], "uv_size": [1, 2]}, + "down": {"uv": [66, 47], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.355, 25.02501, 2.12391], + "size": [0.71, 2.685, 2.25], + "pivot": [0, 26.36751, 4.62391], + "rotation": [0, 10, -90], + "uv": { + "west": {"uv": [60, 5], "uv_size": [2, 3]}, + "up": {"uv": [46, 66], "uv_size": [1, 2]}, + "down": {"uv": [47, 68], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.355, 25.02501, 3.87391], + "size": [0.71, 2.685, 2.25], + "pivot": [0, 26.36751, 6.37391], + "rotation": [0, 10, -90], + "uv": { + "west": {"uv": [18, 60], "uv_size": [2, 3]}, + "up": {"uv": [66, 47], "uv_size": [1, 2]}, + "down": {"uv": [48, 68], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.26733, 20.81149, -5.14552], + "size": [0.71, 3.585, 2], + "pivot": [0, 22.60399, -12.14552], + "rotation": [0, 22.5, -90], + "uv": { + "west": {"uv": [57, 46], "uv_size": [2, 4]}, + "up": {"uv": [66, 40], "uv_size": [1, 2]}, + "down": {"uv": [42, 68], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.355, 22.53934, -5.78803], + "size": [0.71, 5, 2], + "pivot": [0, 25.03934, -4.78803], + "rotation": [0, 22.5, -90], + "uv": { + "west": {"uv": [44, 53], "uv_size": [2, 5]}, + "up": {"uv": [66, 55], "uv_size": [1, 2]}, + "down": {"uv": [66, 59], "uv_size": [1, -2]} + } + }, + { + "origin": [-0.605, 24.66641, -3.2209], + "size": [1.21, 3.335, 2.75], + "pivot": [0, 26.33391, -1.8459], + "rotation": [0, -22.5, -90], + "uv": { + "north": {"uv": [11, 66], "uv_size": [1, 3]}, + "west": {"uv": [57, 0], "uv_size": [3, 3]}, + "up": {"uv": [12, 66], "uv_size": [1, 3]}, + "down": {"uv": [13, 69], "uv_size": [1, -3]} + } + }, + { + "origin": [0.395, 24.66641, -3.4709], + "size": [0.21, 3.335, 0.25], + "pivot": [0, 26.33391, -1.8459], + "rotation": [0, -22.5, -90], + "uv": { + "north": {"uv": [15, 66], "uv_size": [1, 3]}, + "east": {"uv": [16, 66], "uv_size": [1, 3]}, + "west": {"uv": [66, 16], "uv_size": [1, 3]}, + "up": {"uv": [68, 52], "uv_size": [1, 1]}, + "down": {"uv": [68, 54], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.6675, 24.2083, -3.81514], + "size": [0.21, 1.085, 0.25], + "pivot": [-1.5625, 25.8758, -4.06514], + "rotation": [22.5, 0, 180], + "uv": { + "north": {"uv": [68, 54], "uv_size": [1, 1]}, + "east": {"uv": [68, 55], "uv_size": [1, 1]}, + "west": {"uv": [68, 56], "uv_size": [1, 1]}, + "up": {"uv": [68, 57], "uv_size": [1, 1]} + } + }, + { + "origin": [1.4575, 24.2083, -3.81514], + "size": [0.21, 1.085, 0.25], + "pivot": [1.5625, 25.8758, -4.06514], + "rotation": [22.5, 0, 180], + "uv": { + "north": {"uv": [68, 58], "uv_size": [1, 1]}, + "east": {"uv": [59, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 59], "uv_size": [1, 1]}, + "up": {"uv": [60, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [1.08078, 26.9692, -4], + "size": [0.5, 1, 10.5], + "pivot": [0, 26.01444, 0], + "rotation": [0, 0, -135], + "uv": { + "north": {"uv": [67, 4], "uv_size": [1, 1]}, + "south": {"uv": [5, 67], "uv_size": [1, 1]}, + "west": {"uv": [17, 50], "uv_size": [11, 1]} + } + }, + { + "origin": [-2.5, 20.75, 4], + "size": [5, 5, 2.5], + "uv": { + "east": {"uv": [40, 53], "uv_size": [2, 5]}, + "south": {"uv": [29, 46], "uv_size": [5, 5]}, + "west": {"uv": [42, 53], "uv_size": [2, 5]}, + "down": {"uv": [54, 54], "uv_size": [5, -2]} + } + }, + { + "origin": [1.5, 18.45, 4], + "size": [0.6, 0.6, 0.05], + "pivot": [1.25, 19.8, 5], + "rotation": [0, 0, 45], + "uv": { + "east": {"uv": [67, 24], "uv_size": [1, 1]}, + "south": {"uv": [67, 31], "uv_size": [1, 1]}, + "west": {"uv": [67, 32], "uv_size": [1, 1]}, + "up": {"uv": [67, 33], "uv_size": [1, 1]}, + "down": {"uv": [67, 35], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.10355, 18.46863, 4], + "size": [0.4, 0.4, 0.05], + "uv": { + "east": {"uv": [67, 35], "uv_size": [1, 1]}, + "south": {"uv": [36, 67], "uv_size": [1, 1]}, + "west": {"uv": [67, 36], "uv_size": [1, 1]}, + "up": {"uv": [37, 67], "uv_size": [1, 1]}, + "down": {"uv": [67, 38], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.85355, 18.46863, 4], + "size": [0.4, 0.4, 0.05], + "uv": { + "east": {"uv": [38, 67], "uv_size": [1, 1]}, + "south": {"uv": [67, 38], "uv_size": [1, 1]}, + "west": {"uv": [39, 67], "uv_size": [1, 1]}, + "up": {"uv": [40, 67], "uv_size": [1, 1]}, + "down": {"uv": [67, 41], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.75355, 18.56863, 3.95], + "size": [0.2, 0.2, 0.5], + "pivot": [-0.65355, 18.66863, 3.95], + "rotation": [-22.5, 0, 0], + "uv": { + "east": {"uv": [41, 67], "uv_size": [1, 1]}, + "south": {"uv": [67, 41], "uv_size": [1, 1]}, + "west": {"uv": [43, 67], "uv_size": [1, 1]}, + "up": {"uv": [44, 67], "uv_size": [1, 1]}, + "down": {"uv": [67, 46], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.00355, 18.56863, 3.95], + "size": [0.2, 0.2, 0.5], + "uv": { + "east": {"uv": [67, 46], "uv_size": [1, 1]}, + "south": {"uv": [67, 47], "uv_size": [1, 1]}, + "west": {"uv": [67, 48], "uv_size": [1, 1]}, + "up": {"uv": [49, 67], "uv_size": [1, 1]}, + "down": {"uv": [50, 68], "uv_size": [1, -1]} + } + } + ] + }, + { + "name": "laser", + "parent": "barrel", + "pivot": [0, 22.2505, 0], + "cubes": [ + { + "origin": [-0.3, 21.95024, -1.6], + "size": [0.6, 0.6, 1.6], + "uv": { + "north": {"uv": [69, 68], "uv_size": [1, 1]}, + "east": {"uv": [69, 68], "uv_size": [1, 1]}, + "south": {"uv": [69, 68], "uv_size": [1, 1]}, + "west": {"uv": [69, 68], "uv_size": [1, 1]}, + "up": {"uv": [70, 69], "uv_size": [-1, -1]}, + "down": {"uv": [70, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, 90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 21.80014, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -180], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4503, 21.80044, -1.6], + "size": [0.9, 0, 1.6], + "pivot": [0, 22.25044, -1.2], + "rotation": [0, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.4003, 21.80104, -0.85], + "size": [0.9, 0, 0.9], + "pivot": [0.05, 22.25104, -0.45], + "rotation": [90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + }, + { + "origin": [-0.45, 22.25074, -2.05], + "size": [0.9, 0, 0.9], + "pivot": [0, 22.25074, -1.6], + "rotation": [-90, 0, -90], + "uv": { + "up": {"uv": [71, 69], "uv_size": [-1, -1]} + } + } + ] + }, + { + "name": "bone6", + "parent": "barrel", + "pivot": [0, 22.25, -6], + "rotation": [0, 90, 0], + "cubes": [ + { + "origin": [0.41663, 21.60697, -5.73686], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -5.62436], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [66, 61], "uv_size": [1, 1]}, + "east": {"uv": [66, 62], "uv_size": [1, 1]}, + "west": {"uv": [66, 63], "uv_size": [1, 1]} + } + }, + { + "origin": [0.21335, 21.81026, -5.73686], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -5.62436], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [66, 64], "uv_size": [1, 1]}, + "east": {"uv": [66, 65], "uv_size": [1, 1]}, + "west": {"uv": [66, 66], "uv_size": [1, 1]} + } + }, + { + "origin": [0.41663, 22.30103, -5.73686], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -5.62436], + "rotation": [90, -22.5, -90], + "uv": { + "north": {"uv": [68, 7], "uv_size": [1, 1]}, + "east": {"uv": [8, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 8], "uv_size": [1, 1]} + } + }, + { + "origin": [0.21334, 22.09774, -5.73686], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -5.62436], + "rotation": [90, -67.5, -90], + "uv": { + "north": {"uv": [5, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 5], "uv_size": [1, 1]}, + "west": {"uv": [68, 6], "uv_size": [1, 1]} + } + }, + { + "origin": [0.41663, 21.60697, -6.48811], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -6.37561], + "rotation": [90, 22.5, -90], + "uv": { + "north": {"uv": [18, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 18], "uv_size": [1, 1]}, + "west": {"uv": [19, 68], "uv_size": [1, 1]} + } + }, + { + "origin": [0.21334, 22.09774, -6.48811], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -6.37561], + "rotation": [-89.99999, 67.5, 90.00001], + "uv": { + "north": {"uv": [68, 16], "uv_size": [1, 1]}, + "east": {"uv": [17, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 17], "uv_size": [1, 1]} + } + }, + { + "origin": [0.21335, 21.81026, -6.48811], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -6.37561], + "rotation": [90, 67.5, -90], + "uv": { + "north": {"uv": [68, 13], "uv_size": [1, 1]}, + "east": {"uv": [68, 14], "uv_size": [1, 1]}, + "west": {"uv": [68, 15], "uv_size": [1, 1]} + } + }, + { + "origin": [0.41663, 22.30103, -6.48811], + "size": [0.27921, 0.59198, 0.425], + "pivot": [0.125, 22.24999, -6.37561], + "rotation": [-90, 22.5, 90], + "uv": { + "north": {"uv": [68, 10], "uv_size": [1, 1]}, + "east": {"uv": [68, 11], "uv_size": [1, 1]}, + "west": {"uv": [68, 12], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone9", + "parent": "barrel", + "pivot": [0, 22.25, -6], + "rotation": [0, 90, 0], + "cubes": [ + { + "origin": [-2.59198, 20.82079, -8.175], + "size": [1.18396, 2.85842, 0.2], + "pivot": [-2, 22.25, -6], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [66, 13], "uv_size": [1, 3]} + } + }, + { + "origin": [-2.59197, 20.82077, -8.175], + "size": [1.18396, 2.85842, 0.2], + "pivot": [-2, 22.25, -6], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [14, 66], "uv_size": [1, 3]} + } + }, + { + "origin": [-3.42921, 21.65802, -8.175], + "size": [2.85842, 1.18396, 0.2], + "pivot": [-2, 22.25, -6], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [65, 53], "uv_size": [3, 1]} + } + }, + { + "origin": [-3.42923, 21.65803, -8.175], + "size": [2.85842, 1.18396, 0.2], + "pivot": [-2, 22.25, -6], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [65, 52], "uv_size": [3, 1]} + } + } + ] + }, + { + "name": "bone12", + "parent": "barrel", + "pivot": [0.6, 24.59, -6.19775], + "rotation": [0, 90, 0], + "cubes": [ + { + "origin": [0.61725, 24.66871, -7.60691], + "size": [0.25, 0.25, 0.046], + "pivot": [0.61725, 24.91871, -7.58391], + "rotation": [-90, -45, 90], + "uv": { + "north": {"uv": [68, 60], "uv_size": [1, 1]}, + "east": {"uv": [61, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 61], "uv_size": [1, 1]}, + "up": {"uv": [62, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 63], "uv_size": [1, -1]} + } + }, + { + "origin": [0.61725, 24.66871, -7.10691], + "size": [0.25, 0.25, 0.046], + "pivot": [0.61725, 24.91871, -7.08391], + "rotation": [-90, -45, 90], + "uv": { + "north": {"uv": [63, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 63], "uv_size": [1, 1]}, + "west": {"uv": [68, 64], "uv_size": [1, 1]}, + "up": {"uv": [68, 65], "uv_size": [1, 1]}, + "down": {"uv": [66, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [0.49225, 23.86871, -7.23191], + "size": [0.3, 0.8, 0.046], + "pivot": [0.61725, 24.39371, -7.20891], + "rotation": [-90, 0, 90], + "uv": { + "north": {"uv": [68, 66], "uv_size": [1, 1]}, + "east": {"uv": [67, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 67], "uv_size": [1, 1]}, + "up": {"uv": [68, 68], "uv_size": [1, 1]}, + "down": {"uv": [0, 70], "uv_size": [1, -1]} + } + }, + { + "origin": [0.00384, 24.26128, -6.698], + "size": [0.27231, 0.65744, 0.046], + "pivot": [0.14, 24.59, -6.19775], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [68, 46], "uv_size": [1, 1]}, + "up": {"uv": [47, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 48], "uv_size": [1, -1]} + } + }, + { + "origin": [0.00385, 24.26128, -6.698], + "size": [0.27231, 0.65744, 0.046], + "pivot": [0.14, 24.59, -6.19775], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [48, 68], "uv_size": [1, 1]}, + "up": {"uv": [68, 48], "uv_size": [1, 1]}, + "down": {"uv": [49, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.18872, 24.45384, -6.698], + "size": [0.65744, 0.27231, 0.046], + "pivot": [0.14, 24.59, -6.19775], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [68, 49], "uv_size": [1, 1]}, + "east": {"uv": [50, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 50], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.18872, 24.45385, -6.698], + "size": [0.65744, 0.27231, 0.046], + "pivot": [0.14, 24.59, -6.19775], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [51, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 51], "uv_size": [1, 1]}, + "west": {"uv": [52, 68], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone10", + "parent": "barrel", + "pivot": [0, 22.25, -6], + "rotation": [0, 90, 0], + "cubes": [ + { + "origin": [-1.18367, 21.66749, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 23.22993, -5.99725], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [51, 67], "uv_size": [1, 1]}, + "east": {"uv": [67, 51], "uv_size": [1, 1]}, + "west": {"uv": [52, 67], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.65335, 22.19785, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 23.22993, -5.99725], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [67, 55], "uv_size": [1, 1]}, + "east": {"uv": [67, 56], "uv_size": [1, 1]}, + "west": {"uv": [67, 57], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.65335, 22.9478, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 23.22993, -5.99725], + "rotation": [-90, 22.5, 90], + "uv": { + "north": {"uv": [67, 60], "uv_size": [1, 1]}, + "east": {"uv": [67, 61], "uv_size": [1, 1]}, + "west": {"uv": [67, 62], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.18368, 23.47816, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 23.22993, -5.99725], + "rotation": [-90, 67.5, 90], + "uv": { + "north": {"uv": [67, 58], "uv_size": [1, 1]}, + "east": {"uv": [59, 67], "uv_size": [1, 1]}, + "west": {"uv": [67, 59], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.18367, 19.70768, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 21.27012, -5.99725], + "rotation": [90, 67.5, -90], + "uv": { + "north": {"uv": [68, 3], "uv_size": [1, 1]}, + "east": {"uv": [4, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 4], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.65335, 20.23803, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 21.27012, -5.99725], + "rotation": [90, 22.5, -90], + "uv": { + "north": {"uv": [68, 0], "uv_size": [1, 1]}, + "east": {"uv": [68, 1], "uv_size": [1, 1]}, + "west": {"uv": [68, 2], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.65335, 20.98799, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 21.27012, -5.99725], + "rotation": [90, -22.5, -90], + "uv": { + "north": {"uv": [66, 67], "uv_size": [1, 1]}, + "east": {"uv": [67, 66], "uv_size": [1, 1]}, + "west": {"uv": [67, 67], "uv_size": [1, 1]} + } + }, + { + "origin": [-1.18368, 21.51835, -6.30275], + "size": [0.17285, 1.3142, 0.361], + "pivot": [0.02775, 21.27012, -5.99725], + "rotation": [89.99999, -67.5, -89.99999], + "uv": { + "north": {"uv": [67, 63], "uv_size": [1, 1]}, + "east": {"uv": [67, 64], "uv_size": [1, 1]}, + "west": {"uv": [67, 65], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone11", + "parent": "barrel", + "pivot": [0, 22.25, -6], + "rotation": [0, 90, 0], + "cubes": [ + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [-90, 0, 90], + "uv": { + "north": {"uv": [20, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 20], "uv_size": [1, 1]}, + "west": {"uv": [21, 68], "uv_size": [1, 1]}, + "up": {"uv": [68, 21], "uv_size": [1, 1]}, + "down": {"uv": [22, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [-90, 45, 90], + "uv": { + "north": {"uv": [68, 22], "uv_size": [1, 1]}, + "east": {"uv": [23, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 23], "uv_size": [1, 1]}, + "up": {"uv": [24, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 25], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [90, 45, -90], + "uv": { + "north": {"uv": [28, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 28], "uv_size": [1, 1]}, + "west": {"uv": [29, 68], "uv_size": [1, 1]}, + "up": {"uv": [68, 29], "uv_size": [1, 1]}, + "down": {"uv": [30, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [0, 90, 180], + "uv": { + "north": {"uv": [25, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 25], "uv_size": [1, 1]}, + "west": {"uv": [26, 68], "uv_size": [1, 1]}, + "up": {"uv": [27, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 28], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [90, -45, -90], + "uv": { + "north": {"uv": [33, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 33], "uv_size": [1, 1]}, + "west": {"uv": [34, 68], "uv_size": [1, 1]}, + "up": {"uv": [68, 34], "uv_size": [1, 1]}, + "down": {"uv": [35, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [90, 0, -90], + "uv": { + "north": {"uv": [68, 30], "uv_size": [1, 1]}, + "east": {"uv": [31, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 31], "uv_size": [1, 1]}, + "up": {"uv": [32, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 33], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [-90, -45, 90], + "uv": { + "north": {"uv": [38, 68], "uv_size": [1, 1]}, + "east": {"uv": [68, 38], "uv_size": [1, 1]}, + "west": {"uv": [39, 68], "uv_size": [1, 1]}, + "up": {"uv": [68, 39], "uv_size": [1, 1]}, + "down": {"uv": [40, 69], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.65439, 22.00208, -6.2755], + "size": [0.65729, 0.49592, 0.37851], + "pivot": [0.13925, 22.25003, -6.01125], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [68, 35], "uv_size": [1, 1]}, + "east": {"uv": [36, 68], "uv_size": [1, 1]}, + "west": {"uv": [68, 36], "uv_size": [1, 1]}, + "up": {"uv": [37, 68], "uv_size": [1, 1]}, + "down": {"uv": [68, 38], "uv_size": [1, -1]} + } + } + ] + }, + { + "name": "pan6", + "parent": "barrel", + "pivot": [0, 22.75, 0], + "cubes": [ + { + "origin": [-0.73998, 20.46348, -2.84375], + "size": [1.47995, 3.57303, 5.6875], + "pivot": [0, 22.25, 0], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [8, 63], "uv_size": [1, 4]}, + "south": {"uv": [18, 63], "uv_size": [1, 4]}, + "up": {"uv": [14, 60], "uv_size": [1, 6]}, + "down": {"uv": [15, 66], "uv_size": [1, -6]} + } + }, + { + "origin": [-1.78654, 21.51004, -2.84375], + "size": [3.57303, 1.47995, 5.6875], + "pivot": [0, 22.25, 0], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [62, 40], "uv_size": [4, 1]}, + "east": {"uv": [59, 27], "uv_size": [6, 1]}, + "south": {"uv": [63, 20], "uv_size": [4, 1]}, + "west": {"uv": [59, 48], "uv_size": [6, 1]} + } + }, + { + "origin": [-1.78652, 21.51002, -2.84375], + "size": [3.57303, 1.47995, 5.6875], + "pivot": [0, 22.25, 0], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [21, 63], "uv_size": [4, 1]}, + "east": {"uv": [59, 49], "uv_size": [6, 1]}, + "south": {"uv": [26, 63], "uv_size": [4, 1]}, + "west": {"uv": [59, 52], "uv_size": [6, 1]} + } + }, + { + "origin": [-0.73996, 20.46346, -2.84375], + "size": [1.47995, 3.57303, 5.6875], + "pivot": [0, 22.25, 0], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [19, 63], "uv_size": [1, 4]}, + "south": {"uv": [36, 63], "uv_size": [1, 4]}, + "up": {"uv": [16, 60], "uv_size": [1, 6]}, + "down": {"uv": [17, 66], "uv_size": [1, -6]} + } + } + ] + }, + { + "name": "bone7", + "parent": "barrel", + "pivot": [0, 20.86444, 6.15], + "cubes": [ + { + "origin": [-1.58078, 26.9692, 6.5], + "size": [0.5, 1, 0.5], + "pivot": [0, 26.01444, 6.75], + "rotation": [0, 0, 135], + "uv": { + "east": {"uv": [8, 67], "uv_size": [1, 1]}, + "south": {"uv": [67, 10], "uv_size": [1, 1]}, + "west": {"uv": [67, 11], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.26733, 24.22194, 6.5], + "size": [0.71, 3.585, 0.5], + "pivot": [0, 26.01444, 6.75], + "rotation": [0, 0, -90], + "uv": { + "east": {"uv": [39, 63], "uv_size": [1, 4]}, + "south": {"uv": [4, 64], "uv_size": [1, 4]}, + "west": {"uv": [21, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [1.08078, 26.9692, 6.5], + "size": [0.5, 1, 0.5], + "pivot": [0, 26.01444, 6.75], + "rotation": [0, 0, -135], + "uv": { + "east": {"uv": [67, 12], "uv_size": [1, 1]}, + "south": {"uv": [67, 13], "uv_size": [1, 1]}, + "west": {"uv": [67, 14], "uv_size": [1, 1]} + } + }, + { + "origin": [2, 24.75, 6.5], + "size": [0.5, 5, 0.5], + "pivot": [2.25, 25.25, 6.75], + "rotation": [0, 0, -180], + "uv": { + "east": {"uv": [47, 61], "uv_size": [1, 5]}, + "south": {"uv": [48, 61], "uv_size": [1, 5]}, + "west": {"uv": [49, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-2.5, 24.75, 6.5], + "size": [0.5, 5, 0.5], + "pivot": [-2.25, 25.25, 6.75], + "rotation": [0, 0, 180], + "uv": { + "east": {"uv": [50, 61], "uv_size": [1, 5]}, + "south": {"uv": [51, 61], "uv_size": [1, 5]}, + "west": {"uv": [52, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-1.58078, 21.44031, 6.5], + "size": [0.5, 1, 0.5], + "pivot": [0, 20.48556, 6.75], + "rotation": [0, 0, -45], + "uv": { + "east": {"uv": [67, 17], "uv_size": [1, 1]}, + "south": {"uv": [18, 67], "uv_size": [1, 1]}, + "west": {"uv": [67, 18], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.26733, 18.69306, 6.5], + "size": [0.71, 3.585, 0.5], + "pivot": [0, 20.48556, 6.75], + "rotation": [0, 0, 90], + "uv": { + "east": {"uv": [23, 64], "uv_size": [1, 4]}, + "south": {"uv": [24, 64], "uv_size": [1, 4]}, + "west": {"uv": [26, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [1.08078, 21.44031, 6.5], + "size": [0.5, 1, 0.5], + "pivot": [0, 20.48556, 6.75], + "rotation": [0, 0, 45], + "uv": { + "east": {"uv": [19, 67], "uv_size": [1, 1]}, + "south": {"uv": [67, 20], "uv_size": [1, 1]}, + "west": {"uv": [67, 23], "uv_size": [1, 1]} + } + }, + { + "origin": [0.19267, 23.32194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 25.36444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [27, 64], "uv_size": [1, 4]}, + "west": {"uv": [28, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 22.82194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 24.86444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [29, 64], "uv_size": [1, 4]}, + "west": {"uv": [30, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 22.32194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 24.36444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [35, 64], "uv_size": [1, 4]}, + "west": {"uv": [60, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 21.82194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 23.86444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [61, 64], "uv_size": [1, 4]}, + "west": {"uv": [64, 61], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 21.32194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 23.36444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [62, 64], "uv_size": [1, 4]}, + "west": {"uv": [63, 64], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 20.82194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 22.86444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [3, 65], "uv_size": [1, 4]}, + "west": {"uv": [6, 65], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 20.32194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 22.36444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [7, 65], "uv_size": [1, 4]}, + "west": {"uv": [65, 11], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 19.82194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 21.86444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [65, 15], "uv_size": [1, 4]}, + "west": {"uv": [65, 22], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 19.32194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 21.36444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [65, 45], "uv_size": [1, 4]}, + "west": {"uv": [53, 65], "uv_size": [1, 4]} + } + }, + { + "origin": [0.19267, 18.82194, 6.15], + "size": [0.25, 4.085, 0.25], + "pivot": [0, 20.86444, 6.15], + "rotation": [0, -45, -90], + "uv": { + "south": {"uv": [54, 65], "uv_size": [1, 4]}, + "west": {"uv": [55, 65], "uv_size": [1, 4]} + } + } + ] + }, + { + "name": "bone8", + "parent": "barrel", + "pivot": [0, 19.86444, -5.65], + "cubes": [ + { + "origin": [-1.58117, 26.2192, -6], + "size": [0.5, 1, 2], + "pivot": [-0.00039, 25.26444, -6.25], + "rotation": [0, 0, 135], + "uv": { + "east": {"uv": [66, 42], "uv_size": [2, 1]}, + "west": {"uv": [43, 66], "uv_size": [2, 1]} + } + }, + { + "origin": [0.23267, 23.72194, -6], + "size": [0.46, 3.585, 2], + "pivot": [0.25, 25.26444, -6.25], + "rotation": [0, 0, -90], + "uv": { + "east": {"uv": [57, 55], "uv_size": [2, 4]}, + "west": {"uv": [58, 5], "uv_size": [2, 4]} + } + }, + { + "origin": [1.08117, 26.2192, -6], + "size": [0.5, 1, 2], + "pivot": [0.00039, 25.26444, -6.25], + "rotation": [0, 0, -135], + "uv": { + "east": {"uv": [66, 43], "uv_size": [2, 1]}, + "west": {"uv": [66, 44], "uv_size": [2, 1]} + } + }, + { + "origin": [-6.99961, 23.5, -6], + "size": [5, 6.25, 2], + "pivot": [-2.24961, 24.25, -6.25], + "rotation": [0, 0, 180], + "uv": { + "east": {"uv": [29, 52], "uv_size": [2, 6]}, + "west": {"uv": [46, 52], "uv_size": [2, 6]} + } + }, + { + "origin": [-1.58117, 26.2192, -6.5], + "size": [0.5, 1, 0.5], + "pivot": [-0.00039, 25.26444, -6], + "rotation": [0, 0, 135], + "uv": { + "north": {"uv": [7, 69], "uv_size": [1, 1]}, + "east": {"uv": [69, 7], "uv_size": [1, 1]}, + "west": {"uv": [8, 69], "uv_size": [1, 1]} + } + }, + { + "origin": [0.23267, 23.72194, -6.5], + "size": [0.46, 3.585, 0.5], + "pivot": [0.25, 25.26444, -6], + "rotation": [0, 0, -90], + "uv": { + "north": {"uv": [65, 61], "uv_size": [1, 4]}, + "east": {"uv": [64, 65], "uv_size": [1, 4]}, + "west": {"uv": [65, 65], "uv_size": [1, 4]} + } + }, + { + "origin": [1.08117, 26.2192, -6.5], + "size": [0.5, 1, 0.5], + "pivot": [0.00039, 25.26444, -6], + "rotation": [0, 0, -135], + "uv": { + "north": {"uv": [69, 5], "uv_size": [1, 1]}, + "east": {"uv": [6, 69], "uv_size": [1, 1]}, + "west": {"uv": [69, 6], "uv_size": [1, 1]} + } + }, + { + "origin": [1.99961, 23.5, -6.5], + "size": [0.5, 6.25, 0.5], + "pivot": [2.24961, 24.25, -6], + "rotation": [0, 0, -180], + "uv": { + "north": {"uv": [44, 60], "uv_size": [1, 6]}, + "east": {"uv": [45, 60], "uv_size": [1, 6]}, + "west": {"uv": [46, 60], "uv_size": [1, 6]} + } + }, + { + "origin": [-2.49961, 23.5, -6.5], + "size": [0.5, 6.25, 0.5], + "pivot": [-2.24961, 24.25, -6], + "rotation": [0, 0, 180], + "uv": { + "north": {"uv": [41, 60], "uv_size": [1, 6]}, + "east": {"uv": [42, 60], "uv_size": [1, 6]}, + "west": {"uv": [43, 60], "uv_size": [1, 6]} + } + }, + { + "origin": [-1.58039, 19.44031, -6.5], + "size": [0.5, 1, 0.5], + "pivot": [0.00039, 18.48556, -6], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [4, 69], "uv_size": [1, 1]}, + "east": {"uv": [69, 4], "uv_size": [1, 1]}, + "west": {"uv": [5, 69], "uv_size": [1, 1]} + } + }, + { + "origin": [0.23267, 16.44306, -6.5], + "size": [0.46, 3.585, 0.5], + "pivot": [0.25, 18.48556, -6], + "rotation": [0, 0, 90], + "uv": { + "north": {"uv": [56, 65], "uv_size": [1, 4]}, + "east": {"uv": [57, 65], "uv_size": [1, 4]}, + "west": {"uv": [58, 65], "uv_size": [1, 4]} + } + }, + { + "origin": [1.08039, 19.44031, -6.5], + "size": [0.5, 1, 0.5], + "pivot": [-0.00039, 18.48556, -6], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [69, 2], "uv_size": [1, 1]}, + "east": {"uv": [3, 69], "uv_size": [1, 1]}, + "west": {"uv": [69, 3], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone5", + "parent": "turret", + "pivot": [0, 10.5, 0] + }, + { + "name": "bone2", + "parent": "bone5", + "pivot": [0, 10.5, 0], + "cubes": [ + { + "origin": [-4, 12.75, -3], + "size": [8, 2, 6], + "pivot": [0, 13.23406, 0], + "rotation": [0, -90, 0], + "uv": { + "north": {"uv": [18, 43], "uv_size": [8, 2]}, + "south": {"uv": [49, 4], "uv_size": [8, 2]}, + "up": {"uv": [18, 37], "uv_size": [8, 6]} + } + }, + { + "origin": [-5, 13, -2.75], + "size": [10, 1.5, 5.5], + "uv": { + "north": {"uv": [37, 22], "uv_size": [10, 2]}, + "east": {"uv": [52, 15], "uv_size": [6, 2]}, + "south": {"uv": [38, 10], "uv_size": [10, 2]}, + "west": {"uv": [17, 52], "uv_size": [6, 2]}, + "up": {"uv": [26, 24], "uv_size": [10, 6]} + } + }, + { + "origin": [1.75, 11.2403, -7.13019], + "size": [2.25, 0.75, 6], + "pivot": [0, 10.47436, -4.13019], + "rotation": [90, -22.5, -90], + "uv": { + "north": {"uv": [66, 7], "uv_size": [2, 1]}, + "south": {"uv": [66, 8], "uv_size": [2, 1]}, + "up": {"uv": [9, 50], "uv_size": [2, 6]} + } + }, + { + "origin": [1.75, 11.2403, 1.13019], + "size": [2.25, 0.75, 6], + "pivot": [0, 10.47436, 4.13019], + "rotation": [-90, 22.5, -90], + "uv": { + "north": {"uv": [66, 21], "uv_size": [2, 1]}, + "south": {"uv": [66, 22], "uv_size": [2, 1]}, + "up": {"uv": [11, 50], "uv_size": [2, 6]} + } + } + ] + }, + { + "name": "pan5", + "parent": "bone2", + "pivot": [0, 22.75, 0], + "cubes": [ + { + "origin": [-0.59198, 20.82079, -4.875], + "size": [1.18396, 2.85842, 9.75], + "pivot": [0, 22.25, 0], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [1, 66], "uv_size": [1, 3]}, + "south": {"uv": [2, 66], "uv_size": [1, 3]}, + "up": {"uv": [36, 53], "uv_size": [1, 10]}, + "down": {"uv": [37, 63], "uv_size": [1, -10]} + } + }, + { + "origin": [-1.42923, 21.65803, -4.875], + "size": [2.85842, 1.18396, 9.75], + "pivot": [0, 22.25, 0], + "rotation": [-90, -22.5, 90], + "uv": { + "north": {"uv": [5, 38], "uv_size": [3, 1]}, + "east": {"uv": [27, 12], "uv_size": [10, 1]}, + "south": {"uv": [46, 4], "uv_size": [3, 1]}, + "west": {"uv": [37, 34], "uv_size": [10, 1]} + } + }, + { + "origin": [-1.42921, 21.65802, -4.875], + "size": [2.85842, 1.18396, 9.75], + "pivot": [0, 22.25, 0], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [65, 27], "uv_size": [3, 1]}, + "east": {"uv": [52, 21], "uv_size": [10, 1]}, + "south": {"uv": [65, 49], "uv_size": [3, 1]}, + "west": {"uv": [13, 54], "uv_size": [10, 1]} + } + }, + { + "origin": [-0.59197, 20.82077, -4.875], + "size": [1.18396, 2.85842, 9.75], + "pivot": [0, 22.25, 0], + "rotation": [-90, -67.5, 90], + "uv": { + "north": {"uv": [66, 4], "uv_size": [1, 3]}, + "south": {"uv": [9, 66], "uv_size": [1, 3]}, + "up": {"uv": [38, 53], "uv_size": [1, 10]}, + "down": {"uv": [39, 63], "uv_size": [1, -10]} + } + } + ] + }, + { + "name": "bone3", + "parent": "bone2", + "pivot": [4.53002, 22.47613, 1.375], + "cubes": [ + { + "origin": [3, 17.5, -2], + "size": [1.5, 2.5, 1], + "uv": { + "north": {"uv": [34, 46], "uv_size": [2, 3]}, + "east": {"uv": [13, 34], "uv_size": [1, 3]}, + "south": {"uv": [55, 58], "uv_size": [2, 3]}, + "west": {"uv": [28, 55], "uv_size": [1, 3]} + } + }, + { + "origin": [3, 24.83839, -1.65273], + "size": [1.5, 1.65, 0.9], + "pivot": [0, 25.58839, -1.02773], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [62, 46], "uv_size": [2, 2]}, + "east": {"uv": [17, 48], "uv_size": [1, 2]}, + "west": {"uv": [33, 51], "uv_size": [1, 2]} + } + }, + { + "origin": [3, 24.81642, 0.3497], + "size": [1.5, 1.65, 0.9], + "pivot": [0, 25.64142, 0.9747], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [60, 62], "uv_size": [2, 2]}, + "east": {"uv": [64, 46], "uv_size": [1, 2]}, + "west": {"uv": [17, 66], "uv_size": [1, 2]} + } + }, + { + "origin": [3, 22.21673, -3.63327], + "size": [1.5, 1.67, 1.2], + "pivot": [0, 23.04173, -0.00827], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [62, 62], "uv_size": [2, 2]}, + "east": {"uv": [20, 66], "uv_size": [1, 2]}, + "west": {"uv": [66, 23], "uv_size": [1, 2]} + } + }, + { + "origin": [4.16008, 23.45199, -0.89827], + "size": [0.5, 2.17, 1.8], + "pivot": [4.41008, 24.53699, 0.00173], + "rotation": [-90, 0, -10], + "uv": { + "west": {"uv": [6, 63], "uv_size": [2, 2]}, + "up": {"uv": [33, 66], "uv_size": [1, 2]}, + "down": {"uv": [66, 35], "uv_size": [1, -2]} + } + }, + { + "origin": [4.31257, 21.70907, -0.89827], + "size": [0.5, 2.17, 3.05], + "pivot": [4.56257, 22.79407, 0.00173], + "rotation": [-90, 0, 0], + "uv": { + "west": {"uv": [59, 46], "uv_size": [3, 2]}, + "up": {"uv": [10, 66], "uv_size": [1, 3]}, + "down": {"uv": [66, 13], "uv_size": [1, -3]} + } + }, + { + "origin": [3.55745, 18.65751, -1.52327], + "size": [0.25, 2.17, 0.55], + "pivot": [3.55745, 19.74251, 0.00173], + "rotation": [-90, 0, 45], + "uv": { + "west": {"uv": [34, 66], "uv_size": [1, 2]}, + "up": {"uv": [67, 0], "uv_size": [1, 1]}, + "down": {"uv": [67, 2], "uv_size": [1, -1]} + } + }, + { + "origin": [3, 17.5, 1], + "size": [1.5, 2.5, 1], + "uv": { + "north": {"uv": [20, 59], "uv_size": [2, 3]}, + "east": {"uv": [0, 66], "uv_size": [1, 3]}, + "south": {"uv": [22, 59], "uv_size": [2, 3]}, + "west": {"uv": [66, 0], "uv_size": [1, 3]} + } + }, + { + "origin": [3, 20, -2], + "size": [1.5, 5.5, 4], + "uv": { + "north": {"uv": [31, 51], "uv_size": [2, 6]}, + "east": {"uv": [48, 10], "uv_size": [4, 6]}, + "south": {"uv": [23, 52], "uv_size": [2, 6]}, + "west": {"uv": [13, 48], "uv_size": [4, 6]} + } + }, + { + "origin": [3, 14.5, -2], + "size": [1.5, 3, 4], + "uv": { + "north": {"uv": [24, 59], "uv_size": [2, 3]}, + "east": {"uv": [52, 17], "uv_size": [4, 3]}, + "south": {"uv": [26, 59], "uv_size": [2, 3]}, + "west": {"uv": [25, 52], "uv_size": [4, 3]} + } + }, + { + "origin": [3.25, 14.5, -2.1], + "size": [1, 10.75, 4.2], + "uv": { + "north": {"uv": [4, 53], "uv_size": [1, 11]}, + "east": {"uv": [5, 39], "uv_size": [4, 11]}, + "south": {"uv": [35, 53], "uv_size": [1, 11]}, + "west": {"uv": [9, 39], "uv_size": [4, 11]}, + "up": {"uv": [5, 63], "uv_size": [1, 4]} + } + }, + { + "origin": [4.06817, 19.0859, -1], + "size": [0.25, 1, 2], + "pivot": [4.19317, 19.5859, 0], + "rotation": [0, 0, 22.5], + "uv": { + "west": {"uv": [66, 25], "uv_size": [2, 1]} + } + }, + { + "origin": [4.06817, 17.4141, -1], + "size": [0.25, 1, 2], + "pivot": [4.19317, 17.9141, 0], + "rotation": [0, 0, -22.5], + "uv": { + "west": {"uv": [66, 28], "uv_size": [2, 1]} + } + }, + { + "origin": [3.18183, 19.0859, -1], + "size": [0.25, 1, 2], + "pivot": [3.30683, 19.5859, 0], + "rotation": [0, 0, -22.5], + "uv": { + "east": {"uv": [66, 29], "uv_size": [2, 1]} + } + }, + { + "origin": [3.18183, 17.4141, -1], + "size": [0.25, 1, 2], + "pivot": [3.30683, 17.9141, 0], + "rotation": [0, 0, 22.5], + "uv": { + "east": {"uv": [66, 30], "uv_size": [2, 1]} + } + }, + { + "origin": [2.75, 13.25, 0], + "size": [2, 3, 3], + "pivot": [4.5, 16.25, 0], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [28, 59], "uv_size": [2, 3]}, + "east": {"uv": [56, 17], "uv_size": [3, 3]}, + "west": {"uv": [20, 56], "uv_size": [3, 3]}, + "up": {"uv": [33, 59], "uv_size": [2, 3]} + } + }, + { + "origin": [4.5, 14.5, -1.5], + "size": [0.15, 5.75, 0.25], + "uv": { + "north": {"uv": [13, 28], "uv_size": [1, 6]}, + "south": {"uv": [30, 58], "uv_size": [1, 6]}, + "west": {"uv": [3, 59], "uv_size": [1, 6]} + } + }, + { + "origin": [5.26537, 20.05003, -1.5], + "size": [0.15, 0.5, 0.25], + "pivot": [4.53002, 18.22613, -1.375], + "rotation": [0, 0, -22.5], + "uv": { + "north": {"uv": [63, 61], "uv_size": [1, 1]}, + "south": {"uv": [64, 25], "uv_size": [1, 1]}, + "west": {"uv": [66, 51], "uv_size": [1, 1]} + } + }, + { + "origin": [4.5, 14.5, 1.25], + "size": [0.15, 5.75, 0.25], + "uv": { + "north": {"uv": [59, 55], "uv_size": [1, 6]}, + "south": {"uv": [57, 59], "uv_size": [1, 6]}, + "west": {"uv": [58, 59], "uv_size": [1, 6]} + } + }, + { + "origin": [5.26537, 20.05003, 1.25], + "size": [0.15, 0.5, 0.25], + "pivot": [4.53002, 18.22613, 1.375], + "rotation": [0, 0, -22.5], + "uv": { + "north": {"uv": [59, 66], "uv_size": [1, 1]}, + "south": {"uv": [66, 59], "uv_size": [1, 1]}, + "west": {"uv": [66, 60], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone4", + "parent": "bone2", + "pivot": [-4.53002, 22.47613, 1.375], + "cubes": [ + { + "origin": [-4.5, 17.5, -2], + "size": [1.5, 2.5, 1], + "uv": { + "north": {"uv": [36, 46], "uv_size": [-2, 3]}, + "east": {"uv": [29, 55], "uv_size": [-1, 3]}, + "south": {"uv": [57, 58], "uv_size": [-2, 3]}, + "west": {"uv": [14, 34], "uv_size": [-1, 3]} + } + }, + { + "origin": [-4.5, 24.83839, -1.65273], + "size": [1.5, 1.65, 0.9], + "pivot": [0, 25.58839, -1.02773], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [64, 46], "uv_size": [-2, 2]}, + "east": {"uv": [34, 51], "uv_size": [-1, 2]}, + "west": {"uv": [18, 48], "uv_size": [-1, 2]} + } + }, + { + "origin": [-4.5, 24.81642, 0.3497], + "size": [1.5, 1.65, 0.9], + "pivot": [0, 25.64142, 0.9747], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [62, 62], "uv_size": [-2, 2]}, + "east": {"uv": [18, 66], "uv_size": [-1, 2]}, + "west": {"uv": [65, 46], "uv_size": [-1, 2]} + } + }, + { + "origin": [-4.5, 22.21673, -3.63327], + "size": [1.5, 1.67, 1.2], + "pivot": [0, 23.04173, -0.00827], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [64, 62], "uv_size": [-2, 2]}, + "east": {"uv": [67, 23], "uv_size": [-1, 2]}, + "west": {"uv": [21, 66], "uv_size": [-1, 2]} + } + }, + { + "origin": [-4.66008, 23.45199, -0.89827], + "size": [0.5, 2.17, 1.8], + "pivot": [-4.41008, 24.53699, 0.00173], + "rotation": [-90, 0, 10], + "uv": { + "east": {"uv": [8, 63], "uv_size": [-2, 2]}, + "up": {"uv": [34, 66], "uv_size": [-1, 2]}, + "down": {"uv": [67, 35], "uv_size": [-1, -2]} + } + }, + { + "origin": [-4.81257, 21.70907, -0.89827], + "size": [0.5, 2.17, 3.05], + "pivot": [-4.56257, 22.79407, 0.00173], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [62, 46], "uv_size": [-3, 2]}, + "up": {"uv": [11, 66], "uv_size": [-1, 3]}, + "down": {"uv": [67, 13], "uv_size": [-1, -3]} + } + }, + { + "origin": [-3.80745, 18.65751, -1.52327], + "size": [0.25, 2.17, 0.55], + "pivot": [-3.55745, 19.74251, 0.00173], + "rotation": [-90, 0, -45], + "uv": { + "east": {"uv": [35, 66], "uv_size": [-1, 2]}, + "up": {"uv": [68, 0], "uv_size": [-1, 1]}, + "down": {"uv": [68, 2], "uv_size": [-1, -1]} + } + }, + { + "origin": [-4.5, 17.5, 1], + "size": [1.5, 2.5, 1], + "uv": { + "north": {"uv": [22, 59], "uv_size": [-2, 3]}, + "east": {"uv": [67, 0], "uv_size": [-1, 3]}, + "south": {"uv": [24, 59], "uv_size": [-2, 3]}, + "west": {"uv": [1, 66], "uv_size": [-1, 3]} + } + }, + { + "origin": [-4.5, 20, -2], + "size": [1.5, 5.5, 4], + "uv": { + "north": {"uv": [33, 51], "uv_size": [-2, 6]}, + "east": {"uv": [17, 48], "uv_size": [-4, 6]}, + "south": {"uv": [25, 52], "uv_size": [-2, 6]}, + "west": {"uv": [52, 10], "uv_size": [-4, 6]} + } + }, + { + "origin": [-4.5, 14.5, -2], + "size": [1.5, 3, 4], + "uv": { + "north": {"uv": [26, 59], "uv_size": [-2, 3]}, + "east": {"uv": [29, 52], "uv_size": [-4, 3]}, + "south": {"uv": [28, 59], "uv_size": [-2, 3]}, + "west": {"uv": [56, 17], "uv_size": [-4, 3]} + } + }, + { + "origin": [-4.25, 14.5, -2.1], + "size": [1, 10.75, 4.2], + "uv": { + "north": {"uv": [5, 53], "uv_size": [-1, 11]}, + "east": {"uv": [13, 39], "uv_size": [-4, 11]}, + "south": {"uv": [36, 53], "uv_size": [-1, 11]}, + "west": {"uv": [9, 39], "uv_size": [-4, 11]}, + "up": {"uv": [6, 63], "uv_size": [-1, 4]} + } + }, + { + "origin": [-4.31817, 19.0859, -1], + "size": [0.25, 1, 2], + "pivot": [-4.19317, 19.5859, 0], + "rotation": [0, 0, -22.5], + "uv": { + "east": {"uv": [68, 25], "uv_size": [-2, 1]} + } + }, + { + "origin": [-4.31817, 17.4141, -1], + "size": [0.25, 1, 2], + "pivot": [-4.19317, 17.9141, 0], + "rotation": [0, 0, 22.5], + "uv": { + "east": {"uv": [68, 28], "uv_size": [-2, 1]} + } + }, + { + "origin": [-3.43183, 19.0859, -1], + "size": [0.25, 1, 2], + "pivot": [-3.30683, 19.5859, 0], + "rotation": [0, 0, 22.5], + "uv": { + "west": {"uv": [68, 29], "uv_size": [-2, 1]} + } + }, + { + "origin": [-3.43183, 17.4141, -1], + "size": [0.25, 1, 2], + "pivot": [-3.30683, 17.9141, 0], + "rotation": [0, 0, -22.5], + "uv": { + "west": {"uv": [68, 30], "uv_size": [-2, 1]} + } + }, + { + "origin": [-4.75, 13.25, 0], + "size": [2, 3, 3], + "pivot": [-4.5, 16.25, 0], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [30, 59], "uv_size": [-2, 3]}, + "east": {"uv": [23, 56], "uv_size": [-3, 3]}, + "west": {"uv": [59, 17], "uv_size": [-3, 3]}, + "up": {"uv": [35, 59], "uv_size": [-2, 3]} + } + }, + { + "origin": [-4.65, 14.5, -1.5], + "size": [0.15, 5.75, 0.25], + "uv": { + "north": {"uv": [14, 28], "uv_size": [-1, 6]}, + "east": {"uv": [4, 59], "uv_size": [-1, 6]}, + "south": {"uv": [31, 58], "uv_size": [-1, 6]} + } + }, + { + "origin": [-5.41537, 20.05003, -1.5], + "size": [0.15, 0.5, 0.25], + "pivot": [-4.53002, 18.22613, -1.375], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [64, 61], "uv_size": [-1, 1]}, + "east": {"uv": [67, 51], "uv_size": [-1, 1]}, + "south": {"uv": [65, 25], "uv_size": [-1, 1]} + } + }, + { + "origin": [-4.65, 14.5, 1.25], + "size": [0.15, 5.75, 0.25], + "uv": { + "north": {"uv": [60, 55], "uv_size": [-1, 6]}, + "east": {"uv": [59, 59], "uv_size": [-1, 6]}, + "south": {"uv": [58, 59], "uv_size": [-1, 6]} + } + }, + { + "origin": [-5.41537, 20.05003, 1.25], + "size": [0.15, 0.5, 0.25], + "pivot": [-4.53002, 18.22613, 1.375], + "rotation": [0, 0, 22.5], + "uv": { + "north": {"uv": [60, 66], "uv_size": [-1, 1]}, + "east": {"uv": [67, 60], "uv_size": [-1, 1]}, + "south": {"uv": [67, 59], "uv_size": [-1, 1]} + } + } + ] + }, + { + "name": "pan4", + "parent": "bone5", + "pivot": [0, 13, 0], + "rotation": [0, -22.5, 0], + "cubes": [ + { + "origin": [-2.36794, 6.78313, -0.49998], + "size": [4.73584, 11.43369, 1.4], + "pivot": [0, 12.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "north": {"uv": [26, 35], "uv_size": [5, 11]}, + "south": {"uv": [31, 35], "uv_size": [5, 11]}, + "up": {"uv": [61, 34], "uv_size": [5, 1]}, + "down": {"uv": [61, 36], "uv_size": [5, -1]} + } + }, + { + "origin": [-5.71693, 10.13212, -0.49998], + "size": [11.43369, 4.73584, 1.4], + "pivot": [0, 12.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "north": {"uv": [35, 0], "uv_size": [11, 5]}, + "east": {"uv": [13, 61], "uv_size": [1, 5]}, + "south": {"uv": [36, 24], "uv_size": [11, 5]}, + "west": {"uv": [31, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-5.71687, 10.13206, -0.49998], + "size": [11.43369, 4.73584, 1.4], + "pivot": [0, 12.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "north": {"uv": [36, 35], "uv_size": [11, 5]}, + "east": {"uv": [32, 61], "uv_size": [1, 5]}, + "south": {"uv": [37, 12], "uv_size": [11, 5]}, + "west": {"uv": [61, 36], "uv_size": [1, 5]} + } + }, + { + "origin": [-2.36788, 6.78307, -0.49998], + "size": [4.73584, 11.43369, 1.4], + "pivot": [0, 12.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "south": {"uv": [13, 37], "uv_size": [5, 11]}, + "up": {"uv": [61, 41], "uv_size": [5, 1]}, + "down": {"uv": [61, 43], "uv_size": [5, -1]} + } + }, + { + "origin": [-2.36802, 15.94335, -3.98001], + "size": [4.73584, 1.25, 1], + "pivot": [0, 13.08839, -0.00005], + "rotation": [-135, -67.5, 0], + "uv": { + "north": {"uv": [61, 43], "uv_size": [5, 1]}, + "east": {"uv": [47, 28], "uv_size": [1, 1]}, + "west": {"uv": [46, 49], "uv_size": [1, 1]} + } + }, + { + "origin": [-2.36782, 8.98343, -3.98001], + "size": [4.73584, 1.25, 1], + "pivot": [0, 13.08839, -0.00005], + "rotation": [-45, -67.5, 0], + "uv": { + "north": {"uv": [61, 44], "uv_size": [5, 1]}, + "east": {"uv": [28, 50], "uv_size": [1, 1]}, + "west": {"uv": [57, 5], "uv_size": [1, 1]} + } + }, + { + "origin": [-4.10274, 12.21511, -4.68856], + "size": [4.73584, 2.25, 1], + "pivot": [-1.73482, 13.34011, -4.18856], + "rotation": [50, -22.5, -180], + "uv": { + "north": {"uv": [53, 8], "uv_size": [5, 2]}, + "east": {"uv": [66, 31], "uv_size": [1, 2]}, + "west": {"uv": [32, 66], "uv_size": [1, 2]} + } + }, + { + "origin": [-2.36236, 8.48483, -3.96709], + "size": [4.73584, 2.25, 1], + "pivot": [0.00546, 12.58979, 0.01287], + "rotation": [130, -22.5, -180], + "uv": { + "north": {"uv": [53, 6], "uv_size": [5, 2]}, + "east": {"uv": [25, 66], "uv_size": [1, 2]}, + "west": {"uv": [31, 66], "uv_size": [1, 2]} + } + } + ] + }, + { + "name": "pan2", + "parent": "bone5", + "pivot": [0, 11, 0], + "rotation": [0, -22.5, 0], + "cubes": [ + { + "origin": [-2.27322, 6.0118, -0.74998], + "size": [4.5464, 10.97634, 0.75], + "pivot": [0, 11.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "up": {"uv": [61, 30], "uv_size": [5, 1]}, + "down": {"uv": [61, 32], "uv_size": [5, -1]} + } + }, + { + "origin": [-5.48825, 9.22683, -0.74998], + "size": [10.97634, 4.5464, 0.75], + "pivot": [0, 11.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "east": {"uv": [2, 61], "uv_size": [1, 5]}, + "west": {"uv": [10, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-5.4882, 9.22678, -0.74998], + "size": [10.97634, 4.5464, 0.75], + "pivot": [0, 11.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "east": {"uv": [11, 61], "uv_size": [1, 5]}, + "west": {"uv": [12, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-2.27317, 6.01175, -0.74998], + "size": [4.5464, 10.97634, 0.75], + "pivot": [0, 11.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "up": {"uv": [61, 32], "uv_size": [5, 1]}, + "down": {"uv": [61, 34], "uv_size": [5, -1]} + } + } + ] + }, + { + "name": "base", + "parent": "root", + "pivot": [0, 0, 0] + }, + { + "name": "pan", + "parent": "base", + "pivot": [0, 11, 0], + "rotation": [0, -22.5, 0], + "cubes": [ + { + "origin": [-2.36794, 4.78313, -0.99998], + "size": [4.73584, 11.43369, 1], + "pivot": [0, 10.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "north": {"uv": [8, 28], "uv_size": [5, 11]}, + "up": {"uv": [61, 4], "uv_size": [5, 1]}, + "down": {"uv": [5, 62], "uv_size": [5, -1]} + } + }, + { + "origin": [-5.71693, 8.13212, -0.99998], + "size": [11.43369, 4.73584, 1], + "pivot": [0, 10.5, 0.00002], + "rotation": [-90, -22.5, 0], + "uv": { + "north": {"uv": [27, 7], "uv_size": [11, 5]}, + "east": {"uv": [53, 60], "uv_size": [1, 5]}, + "west": {"uv": [54, 60], "uv_size": [1, 5]} + } + }, + { + "origin": [-5.71687, 8.13206, -0.99998], + "size": [11.43369, 4.73584, 1], + "pivot": [0, 10.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "north": {"uv": [26, 30], "uv_size": [11, 5]}, + "east": {"uv": [0, 61], "uv_size": [1, 5]}, + "west": {"uv": [1, 61], "uv_size": [1, 5]} + } + }, + { + "origin": [-2.36788, 4.78307, -0.99998], + "size": [4.73584, 11.43369, 1], + "pivot": [0, 10.5, 0.00002], + "rotation": [-90, -67.5, 0], + "uv": { + "north": {"uv": [0, 35], "uv_size": [5, 11]}, + "up": {"uv": [61, 28], "uv_size": [5, 1]}, + "down": {"uv": [61, 30], "uv_size": [5, -1]} + } + } + ] + }, + { + "name": "bone14", + "parent": "base", + "pivot": [0, 6.85458, 0], + "cubes": [ + { + "origin": [-5.85, 8.6, -5.85], + "size": [11.7, 1.9, 11.7], + "uv": { + "north": {"uv": [47, 26], "uv_size": [12, 2]}, + "east": {"uv": [48, 28], "uv_size": [12, 2]}, + "south": {"uv": [48, 30], "uv_size": [12, 2]}, + "west": {"uv": [48, 32], "uv_size": [12, 2]}, + "up": {"uv": [14, 13], "uv_size": [12, 12]}, + "down": {"uv": [14, 37], "uv_size": [12, -12]} + } + }, + { + "origin": [2.7, 11.06314, -0.85478], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [102.5, 0, 0], + "uv": { + "east": {"uv": [62, 2], "uv_size": [4, 1]}, + "west": {"uv": [5, 62], "uv_size": [4, 1]}, + "up": {"uv": [9, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [-3.6, 11.06314, -0.85478], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [102.5, 0, 0], + "uv": { + "east": {"uv": [62, 5], "uv_size": [4, 1]}, + "west": {"uv": [62, 6], "uv_size": [4, 1]}, + "up": {"uv": [20, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [2.7, 11.06314, -0.85478], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [0, 90, -102.5], + "uv": { + "east": {"uv": [62, 36], "uv_size": [4, 1]}, + "west": {"uv": [62, 37], "uv_size": [4, 1]}, + "up": {"uv": [34, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [-3.6, 11.06314, -0.85478], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [0, 90, -102.5], + "uv": { + "east": {"uv": [62, 38], "uv_size": [4, 1]}, + "west": {"uv": [62, 39], "uv_size": [4, 1]}, + "up": {"uv": [59, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [2.7, 11.06314, -2.97022], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [0, 90, 102.5], + "uv": { + "east": {"uv": [62, 7], "uv_size": [4, 1]}, + "west": {"uv": [21, 62], "uv_size": [4, 1]}, + "up": {"uv": [25, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [-3.6, 11.06314, -2.97022], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [0, 90, 102.5], + "uv": { + "east": {"uv": [62, 21], "uv_size": [4, 1]}, + "west": {"uv": [26, 62], "uv_size": [4, 1]}, + "up": {"uv": [33, 62], "uv_size": [1, 4]} + } + }, + { + "origin": [2.7, 11.06314, -2.97022], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [-102.5, 0, 0], + "uv": { + "east": {"uv": [61, 45], "uv_size": [4, 1]}, + "west": {"uv": [59, 61], "uv_size": [4, 1]}, + "up": {"uv": [55, 61], "uv_size": [1, 4]} + } + }, + { + "origin": [-3.6, 11.06314, -2.97022], + "size": [0.9, 1.125, 3.825], + "pivot": [0, 6.85458, 0], + "rotation": [-102.5, 0, 0], + "uv": { + "east": {"uv": [62, 0], "uv_size": [4, 1]}, + "west": {"uv": [62, 1], "uv_size": [4, 1]}, + "up": {"uv": [56, 61], "uv_size": [1, 4]} + } + } + ] + }, + { + "name": "bone15", + "parent": "base", + "pivot": [0, 4.77114, 0], + "cubes": [ + { + "origin": [-5.4, 5.03167, 2.11719], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "east": {"uv": [59, 53], "uv_size": [6, 1]}, + "west": {"uv": [60, 8], "uv_size": [6, 1]}, + "up": {"uv": [48, 52], "uv_size": [2, 6]} + } + }, + { + "origin": [-3.6, 5.03167, 7.46719], + "size": [7.2, 0.9, 0.825], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "north": {"uv": [58, 15], "uv_size": [7, 1]}, + "up": {"uv": [58, 16], "uv_size": [7, 1]} + } + }, + { + "origin": [3.6, 5.03167, 2.11719], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "east": {"uv": [47, 60], "uv_size": [6, 1]}, + "west": {"uv": [60, 50], "uv_size": [6, 1]}, + "up": {"uv": [50, 52], "uv_size": [2, 6]} + } + }, + { + "origin": [-5.4, 5.03167, -8.29219], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "east": {"uv": [59, 17], "uv_size": [6, 1]}, + "west": {"uv": [59, 18], "uv_size": [6, 1]}, + "up": {"uv": [7, 50], "uv_size": [2, 6]} + } + }, + { + "origin": [-3.6, 5.03167, -8.29219], + "size": [7.2, 0.9, 0.825], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "south": {"uv": [18, 45], "uv_size": [7, 1]}, + "up": {"uv": [58, 9], "uv_size": [7, 1]} + } + }, + { + "origin": [3.6, 5.03167, -8.29219], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "east": {"uv": [58, 25], "uv_size": [6, 1]}, + "west": {"uv": [14, 59], "uv_size": [6, 1]}, + "up": {"uv": [5, 50], "uv_size": [2, 6]} + } + } + ] + }, + { + "name": "bone16", + "parent": "base", + "pivot": [0, 4.77114, 0], + "rotation": [0, -90, 0], + "cubes": [ + { + "origin": [-5.4, 5.03167, 2.11719], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "east": {"uv": [60, 51], "uv_size": [6, 1]}, + "west": {"uv": [60, 55], "uv_size": [6, 1]}, + "up": {"uv": [52, 52], "uv_size": [2, 6]} + } + }, + { + "origin": [-3.6, 5.03167, 7.46719], + "size": [7.2, 0.9, 0.825], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "north": {"uv": [58, 22], "uv_size": [7, 1]}, + "up": {"uv": [23, 58], "uv_size": [7, 1]} + } + }, + { + "origin": [3.6, 5.03167, 2.11719], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, 5.37969], + "rotation": [-82.5, 0, 0], + "uv": { + "east": {"uv": [60, 56], "uv_size": [6, 1]}, + "west": {"uv": [60, 57], "uv_size": [6, 1]}, + "up": {"uv": [0, 53], "uv_size": [2, 6]} + } + }, + { + "origin": [-5.4, 5.03167, -8.29219], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "east": {"uv": [60, 58], "uv_size": [6, 1]}, + "west": {"uv": [60, 59], "uv_size": [6, 1]}, + "up": {"uv": [2, 53], "uv_size": [2, 6]} + } + }, + { + "origin": [-3.6, 5.03167, -8.29219], + "size": [7.2, 0.9, 0.825], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "south": {"uv": [58, 23], "uv_size": [7, 1]}, + "up": {"uv": [58, 24], "uv_size": [7, 1]} + } + }, + { + "origin": [3.6, 5.03167, -8.29219], + "size": [1.8, 0.9, 6.175], + "pivot": [0, 5.48167, -5.37969], + "rotation": [82.5, 0, 0], + "uv": { + "east": {"uv": [60, 60], "uv_size": [6, 1]}, + "west": {"uv": [61, 3], "uv_size": [6, 1]}, + "up": {"uv": [33, 53], "uv_size": [2, 6]} + } + } + ] + }, + { + "name": "bone", + "parent": "base", + "pivot": [0, 0, 0], + "cubes": [ + { + "origin": [-6.3, 1.35, -6.3], + "size": [12.6, 1.35, 12.6], + "uv": { + "north": {"uv": [52, 11], "uv_size": [13, 1]}, + "east": {"uv": [52, 12], "uv_size": [13, 1]}, + "south": {"uv": [52, 13], "uv_size": [13, 1]}, + "west": {"uv": [52, 14], "uv_size": [13, 1]}, + "up": {"uv": [14, 0], "uv_size": [13, 13]} + } + }, + { + "origin": [-6.75, 0, -6.75], + "size": [13.5, 1.35, 13.5], + "uv": { + "north": {"uv": [46, 50], "uv_size": [14, 1]}, + "east": {"uv": [17, 51], "uv_size": [14, 1]}, + "south": {"uv": [46, 51], "uv_size": [14, 1]}, + "west": {"uv": [52, 10], "uv_size": [14, 1]}, + "up": {"uv": [0, 0], "uv_size": [14, 14]}, + "down": {"uv": [0, 28], "uv_size": [14, -14]} + } + }, + { + "origin": [-5.4, 3.375, -5.4], + "size": [10.8, 5.4, 10.8], + "uv": { + "north": {"uv": [37, 17], "uv_size": [11, 5]}, + "east": {"uv": [37, 29], "uv_size": [11, 5]}, + "south": {"uv": [38, 5], "uv_size": [11, 5]}, + "west": {"uv": [36, 40], "uv_size": [11, 5]}, + "up": {"uv": [26, 13], "uv_size": [11, 11]} + } + }, + { + "origin": [-5.625, 3.375, -2.025], + "size": [11.25, 4.15, 4.05], + "uv": { + "north": {"uv": [46, 0], "uv_size": [11, 4]}, + "east": {"uv": [49, 6], "uv_size": [4, 4]}, + "south": {"uv": [18, 46], "uv_size": [11, 4]}, + "west": {"uv": [34, 49], "uv_size": [4, 4]}, + "up": {"uv": [47, 22], "uv_size": [11, 4]} + } + }, + { + "origin": [-5.625, 3.375, -2.025], + "size": [11.25, 4.15, 4.05], + "pivot": [0, 4.95, 0], + "rotation": [0, 90, 0], + "uv": { + "north": {"uv": [47, 34], "uv_size": [11, 4]}, + "east": {"uv": [38, 49], "uv_size": [4, 4]}, + "south": {"uv": [47, 38], "uv_size": [11, 4]}, + "west": {"uv": [42, 49], "uv_size": [4, 4]}, + "up": {"uv": [47, 42], "uv_size": [11, 4]} + } + }, + { + "origin": [4.5, 0, -7.2], + "size": [2.7, 1.8, 2.7], + "uv": { + "north": {"uv": [35, 5], "uv_size": [3, 2]}, + "east": {"uv": [58, 34], "uv_size": [3, 2]}, + "south": {"uv": [58, 36], "uv_size": [3, 2]}, + "west": {"uv": [58, 38], "uv_size": [3, 2]}, + "up": {"uv": [5, 35], "uv_size": [3, 3]}, + "down": {"uv": [25, 58], "uv_size": [3, -3]} + } + }, + { + "origin": [-7.2, 0, -7.2], + "size": [2.7, 1.8, 2.7], + "uv": { + "north": {"uv": [40, 58], "uv_size": [3, 2]}, + "east": {"uv": [58, 40], "uv_size": [3, 2]}, + "south": {"uv": [58, 42], "uv_size": [3, 2]}, + "west": {"uv": [43, 58], "uv_size": [3, 2]}, + "up": {"uv": [54, 55], "uv_size": [3, 3]}, + "down": {"uv": [5, 59], "uv_size": [3, -3]} + } + }, + { + "origin": [4.5, 0, 4.5], + "size": [2.7, 1.8, 2.7], + "uv": { + "north": {"uv": [0, 59], "uv_size": [3, 2]}, + "east": {"uv": [5, 59], "uv_size": [3, 2]}, + "south": {"uv": [8, 59], "uv_size": [3, 2]}, + "west": {"uv": [11, 59], "uv_size": [3, 2]}, + "up": {"uv": [14, 56], "uv_size": [3, 3]}, + "down": {"uv": [17, 59], "uv_size": [3, -3]} + } + }, + { + "origin": [-7.2, 0, 4.5], + "size": [2.7, 1.8, 2.7], + "uv": { + "north": {"uv": [58, 44], "uv_size": [3, 2]}, + "east": {"uv": [46, 58], "uv_size": [3, 2]}, + "south": {"uv": [49, 58], "uv_size": [3, 2]}, + "west": {"uv": [52, 58], "uv_size": [3, 2]}, + "up": {"uv": [8, 56], "uv_size": [3, 3]}, + "down": {"uv": [11, 59], "uv_size": [3, -3]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/lang/en_us.json b/src/main/resources/assets/superbwarfare/lang/en_us.json index 82c8194fb..85e5d7686 100644 --- a/src/main/resources/assets/superbwarfare/lang/en_us.json +++ b/src/main/resources/assets/superbwarfare/lang/en_us.json @@ -406,6 +406,7 @@ "entity.superbwarfare.melon_bomb": "Melon Bomb", "entity.superbwarfare.bmp_2": "BMP-2", "entity.superbwarfare.wg_missile": "Wire Guide Missile", + "entity.superbwarfare.laser_tower": "Laser Defense Tower", "key.categories.superbwarfare": "Superb Warfare", "key.superbwarfare.hold_zoom": "Zoom(Hold)", diff --git a/src/main/resources/assets/superbwarfare/lang/zh_cn.json b/src/main/resources/assets/superbwarfare/lang/zh_cn.json index 4a3e0db0e..a74410ca5 100644 --- a/src/main/resources/assets/superbwarfare/lang/zh_cn.json +++ b/src/main/resources/assets/superbwarfare/lang/zh_cn.json @@ -404,6 +404,7 @@ "entity.superbwarfare.melon_bomb": "西瓜航弹", "entity.superbwarfare.bmp_2": "BMP-2 履带式步兵战车", "entity.superbwarfare.wg_missile": "线控导弹", + "entity.superbwarfare.laser_tower": "激光防御塔", "key.categories.superbwarfare": "卓越前线", "key.superbwarfare.hold_zoom": "瞄准(按住)", diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_tower.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower.png new file mode 100644 index 000000000..d608a8e4d Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_e.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_e.png new file mode 100644 index 000000000..c1f072e84 Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_e.png differ diff --git a/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_laser.png b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_laser.png new file mode 100644 index 000000000..51c913c6d Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/laser_tower_laser.png differ diff --git a/src/main/resources/data/superbwarfare/recipes/laser_tower_crafting.json b/src/main/resources/data/superbwarfare/recipes/laser_tower_crafting.json new file mode 100644 index 000000000..c34e784ff --- /dev/null +++ b/src/main/resources/data/superbwarfare/recipes/laser_tower_crafting.json @@ -0,0 +1,31 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "pattern": [ + " a ", + " b ", + "dcd" + ], + "key": { + "a": { + "item": "minecraft:beacon" + }, + "b": { + "item": "superbwarfare:motor" + }, + "c": { + "item": "superbwarfare:cell" + }, + "d": { + "item": "minecraft:iron_ingot" + } + }, + "result": { + "item": "superbwarfare:container", + "nbt": { + "BlockEntityTag": { + "EntityType": "superbwarfare:laser_tower" + } + } + } +} \ No newline at end of file