diff --git a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java index ee459834f..92e4d3713 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/ClickHandler.java @@ -7,7 +7,7 @@ import com.atsuishio.superbwarfare.config.client.ReloadConfig; import com.atsuishio.superbwarfare.entity.ICannonEntity; import com.atsuishio.superbwarfare.entity.IVehicleEntity; import com.atsuishio.superbwarfare.entity.MortarEntity; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.network.ModVariables; @@ -107,7 +107,7 @@ public class ClickHandler { if (button == GLFW.GLFW_MOUSE_BUTTON_RIGHT) { if (stack.is(ModTags.Items.GUN) || (player.isPassenger() && player.getVehicle() instanceof ICannonEntity) - || (player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player && stack.is(ItemStack.EMPTY.getItem()))) { + || (player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntityMobile boat && boat.getFirstPassenger() == player && stack.is(ItemStack.EMPTY.getItem()))) { event.setCanceled(true); } } @@ -409,6 +409,10 @@ public class ClickHandler { ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(2, state == 1)); } else if (key == options.keyDown.getKey().getValue()) { ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(3, state == 1)); + } else if (key == options.keyJump.getKey().getValue()) { + ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(4, state == 1)); + } else if (key == options.keySprint.getKey().getValue()) { + ModUtils.PACKET_HANDLER.sendToServer(new VehicleMovementMessage(5, state == 1)); } } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatHeatLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatHeatLayer.java index 4c5aa312f..851fdeeb5 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatHeatLayer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatHeatLayer.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.client.layer; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.renderer.MultiBufferSource; @@ -12,17 +12,17 @@ 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.SpeedboatEntity.HEAT; +import static com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile.HEAT; -public class SpeedBoatHeatLayer extends GeoRenderLayer { +public class SpeedBoatHeatLayer extends GeoRenderLayer { private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/speedboat_heat.png"); - public SpeedBoatHeatLayer(GeoRenderer entityRenderer) { + public SpeedBoatHeatLayer(GeoRenderer entityRenderer) { super(entityRenderer); } @Override - public void render(PoseStack poseStack, SpeedboatEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + public void render(PoseStack poseStack, SpeedboatEntityMobile animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { RenderType glowRenderType = RenderType.eyes(LAYER); float heat = animatable.getEntityData().get(HEAT) < 20 ? 0 : animatable.getEntityData().get(HEAT) - 20; getRenderer().reRender(getDefaultBakedModel(animatable), poseStack, bufferSource, animatable, glowRenderType, bufferSource.getBuffer(glowRenderType), partialTick, packedLight, OverlayTexture.NO_OVERLAY, heat / 80, heat / 80, heat / 80, 1); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatLayer.java index 18fe23f42..400f06720 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatLayer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatLayer.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.client.layer; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.renderer.MultiBufferSource; @@ -12,16 +12,16 @@ import software.bernie.geckolib.cache.object.BakedGeoModel; import software.bernie.geckolib.renderer.GeoRenderer; import software.bernie.geckolib.renderer.layer.GeoRenderLayer; -public class SpeedBoatLayer extends GeoRenderLayer { +public class SpeedBoatLayer extends GeoRenderLayer { private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/speedboat_e.png"); - public SpeedBoatLayer(GeoRenderer entityRenderer) { + public SpeedBoatLayer(GeoRenderer entityRenderer) { super(entityRenderer); } @Override - public void render(PoseStack poseStack, SpeedboatEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + public void render(PoseStack poseStack, SpeedboatEntityMobile 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/SpeedBoatPowerLayer.java b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatPowerLayer.java index 397894419..f25653ae3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatPowerLayer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/layer/SpeedBoatPowerLayer.java @@ -1,7 +1,7 @@ package com.atsuishio.superbwarfare.client.layer; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import net.minecraft.client.renderer.MultiBufferSource; @@ -12,18 +12,18 @@ 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.SpeedboatEntity.ENERGY; +import static com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile.ENERGY; -public class SpeedBoatPowerLayer extends GeoRenderLayer { +public class SpeedBoatPowerLayer extends GeoRenderLayer { private static final ResourceLocation LAYER = ModUtils.loc("textures/entity/speedboat_power.png"); - public SpeedBoatPowerLayer(GeoRenderer entityRenderer) { + public SpeedBoatPowerLayer(GeoRenderer entityRenderer) { super(entityRenderer); } @Override - public void render(PoseStack poseStack, SpeedboatEntity animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { + public void render(PoseStack poseStack, SpeedboatEntityMobile animatable, BakedGeoModel bakedModel, RenderType renderType, MultiBufferSource bufferSource, VertexConsumer buffer, float partialTick, int packedLight, int packedOverlay) { if (animatable.getEntityData().get(ENERGY) <= 0) 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/SpeedboatModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/SpeedboatModel.java index a0999b882..ffae227bf 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/SpeedboatModel.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/SpeedboatModel.java @@ -1,33 +1,33 @@ package com.atsuishio.superbwarfare.client.model.entity; import com.atsuishio.superbwarfare.ModUtils; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; 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.SpeedboatEntity.*; +import static com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile.*; -public class SpeedboatModel extends GeoModel { +public class SpeedboatModel extends GeoModel { @Override - public ResourceLocation getAnimationResource(SpeedboatEntity entity) { + public ResourceLocation getAnimationResource(SpeedboatEntityMobile entity) { return ModUtils.loc("animations/speedboat.animation.json"); } @Override - public ResourceLocation getModelResource(SpeedboatEntity entity) { + public ResourceLocation getModelResource(SpeedboatEntityMobile entity) { return new ResourceLocation(ModUtils.MODID, "geo/speedboat.geo.json"); } @Override - public ResourceLocation getTextureResource(SpeedboatEntity entity) { + public ResourceLocation getTextureResource(SpeedboatEntityMobile entity) { return ModUtils.loc("textures/entity/speedboat.png"); } @Override - public void setCustomAnimations(SpeedboatEntity animatable, long instanceId, AnimationState animationState) { + public void setCustomAnimations(SpeedboatEntityMobile animatable, long instanceId, AnimationState animationState) { CoreGeoBone rotor = getAnimationProcessor().getBone("Rotor"); CoreGeoBone duo = getAnimationProcessor().getBone("duo"); diff --git a/src/main/java/com/atsuishio/superbwarfare/client/model/entity/WheelChairModel.java b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/WheelChairModel.java new file mode 100644 index 000000000..1bcff7bf6 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/model/entity/WheelChairModel.java @@ -0,0 +1,25 @@ +package com.atsuishio.superbwarfare.client.model.entity; + +import com.atsuishio.superbwarfare.ModUtils; +import com.atsuishio.superbwarfare.entity.WheelChairEntityMobile; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class WheelChairModel extends GeoModel { + + @Override + public ResourceLocation getAnimationResource(WheelChairEntityMobile entity) { + return null; +// return ModUtils.loc("animations/wheel_chair.animation.json"); + } + + @Override + public ResourceLocation getModelResource(WheelChairEntityMobile entity) { + return new ResourceLocation(ModUtils.MODID, "geo/wheel_chair.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(WheelChairEntityMobile entity) { + return ModUtils.loc("textures/entity/wheel_chair.png"); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/SpeedboatRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/SpeedboatRenderer.java index 1a06934fb..929b50dbd 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/SpeedboatRenderer.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/SpeedboatRenderer.java @@ -4,7 +4,7 @@ import com.atsuishio.superbwarfare.client.layer.SpeedBoatHeatLayer; import com.atsuishio.superbwarfare.client.layer.SpeedBoatLayer; import com.atsuishio.superbwarfare.client.layer.SpeedBoatPowerLayer; import com.atsuishio.superbwarfare.client.model.entity.SpeedboatModel; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.math.Axis; @@ -17,7 +17,7 @@ import software.bernie.geckolib.cache.object.BakedGeoModel; import software.bernie.geckolib.cache.object.GeoBone; import software.bernie.geckolib.renderer.GeoEntityRenderer; -public class SpeedboatRenderer extends GeoEntityRenderer { +public class SpeedboatRenderer extends GeoEntityRenderer { public SpeedboatRenderer(EntityRendererProvider.Context renderManager) { super(renderManager, new SpeedboatModel()); @@ -27,12 +27,12 @@ public class SpeedboatRenderer extends GeoEntityRenderer { } @Override - public RenderType getRenderType(SpeedboatEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + public RenderType getRenderType(SpeedboatEntityMobile animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { return RenderType.entityTranslucent(getTextureLocation(animatable)); } @Override - public void preRender(PoseStack poseStack, SpeedboatEntity entity, BakedGeoModel model, MultiBufferSource bufferSource, VertexConsumer buffer, boolean isReRender, float partialTick, int packedLight, int packedOverlay, float red, float green, + public void preRender(PoseStack poseStack, SpeedboatEntityMobile 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; @@ -41,7 +41,7 @@ public class SpeedboatRenderer extends GeoEntityRenderer { } @Override - public void render(SpeedboatEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { + public void render(SpeedboatEntityMobile entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { poseStack.pushPose(); poseStack.mulPose(Axis.YP.rotationDegrees(-Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()))); super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); @@ -49,7 +49,7 @@ public class SpeedboatRenderer extends GeoEntityRenderer { } @Override - public void renderRecursively(PoseStack poseStack, SpeedboatEntity 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) { + public void renderRecursively(PoseStack poseStack, SpeedboatEntityMobile 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("paota")) { bone.setRotY(Mth.lerp(partialTick, animatable.turretYRotO, animatable.getTurretYRot()) * Mth.DEG_TO_RAD); @@ -64,7 +64,7 @@ public class SpeedboatRenderer extends GeoEntityRenderer { } @Override - protected float getDeathMaxRotation(SpeedboatEntity entityLivingBaseIn) { + protected float getDeathMaxRotation(SpeedboatEntityMobile entityLivingBaseIn) { return 0.0F; } } diff --git a/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/WheelChairRenderer.java b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/WheelChairRenderer.java new file mode 100644 index 000000000..6131dd0ec --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/WheelChairRenderer.java @@ -0,0 +1,46 @@ +package com.atsuishio.superbwarfare.client.renderer.entity; + +import com.atsuishio.superbwarfare.client.model.entity.WheelChairModel; +import com.atsuishio.superbwarfare.entity.WheelChairEntityMobile; +import com.mojang.blaze3d.vertex.PoseStack; +import com.mojang.blaze3d.vertex.VertexConsumer; +import com.mojang.math.Axis; +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.renderer.GeoEntityRenderer; + +; + +public class WheelChairRenderer extends GeoEntityRenderer { + + public WheelChairRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new WheelChairModel()); + this.shadowRadius = 0.5f; + } + + @Override + public RenderType getRenderType(WheelChairEntityMobile animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } + + @Override + public void preRender(PoseStack poseStack, WheelChairEntityMobile 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(WheelChairEntityMobile entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { + poseStack.pushPose(); + poseStack.mulPose(Axis.YP.rotationDegrees(-Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()))); + super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); + poseStack.popPose(); + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java index 30d89f8d5..fbee5afff 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleHudOverlay.java @@ -4,7 +4,7 @@ import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.entity.ICannonEntity; import com.atsuishio.superbwarfare.entity.IChargeEntity; import com.atsuishio.superbwarfare.entity.IVehicleEntity; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.atsuishio.superbwarfare.init.ModItems; import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.systems.RenderSystem; @@ -134,7 +134,7 @@ public class VehicleHudOverlay { if (stack.getItem() == ModItems.HE_5_INCHES.get() && iVehicle instanceof ICannonEntity) { return Component.translatable("des.superbwarfare.tips.ammo_type.he").getString(); } - if (iVehicle instanceof SpeedboatEntity) { + if (iVehicle instanceof SpeedboatEntityMobile) { return Component.translatable("des.superbwarfare.tips.ammo_type.cal50").getString(); } return ""; diff --git a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java index cae29ed08..62b92eb11 100644 --- a/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java +++ b/src/main/java/com/atsuishio/superbwarfare/client/screens/VehicleMgHudOverlay.java @@ -2,7 +2,7 @@ package com.atsuishio.superbwarfare.client.screens; import com.atsuishio.superbwarfare.ModUtils; import com.atsuishio.superbwarfare.client.RenderHelper; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.atsuishio.superbwarfare.event.ClientEventHandler; import com.atsuishio.superbwarfare.init.ModTags; import com.mojang.blaze3d.platform.GlStateManager; @@ -68,6 +68,6 @@ public class VehicleMgHudOverlay { private static boolean shouldRenderCrossHair(Player player) { if (player == null) return false; return !player.isSpectator() - && player.getVehicle() instanceof SpeedboatEntity && ClientEventHandler.zoom && !player.getMainHandItem().is(ModTags.Items.GUN); + && player.getVehicle() instanceof SpeedboatEntityMobile && ClientEventHandler.zoom && !player.getMainHandItem().is(ModTags.Items.GUN); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/MobileVehicleEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/MobileVehicleEntity.java new file mode 100644 index 000000000..1d2d57f48 --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/MobileVehicleEntity.java @@ -0,0 +1,96 @@ +package com.atsuishio.superbwarfare.entity; + +import net.minecraft.nbt.CompoundTag; +import net.minecraft.util.Mth; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import org.joml.Math; + +public class MobileVehicleEntity extends Entity { + + protected int lerpSteps; + protected double lerpX; + protected double lerpY; + protected double lerpZ; + protected double lerpYRot; + protected double lerpXRot; + public boolean leftInputDown; + public boolean rightInputDown; + public boolean forwardInputDown; + public boolean backInputDown; + public boolean upInputDown; + public boolean downInputDown; + + public MobileVehicleEntity(EntityType pEntityType, Level pLevel) { + super(pEntityType, pLevel); + } + + @Override + public boolean isPickable() { + return !this.isRemoved(); + } + + @Override + public void baseTick() { + super.baseTick(); + + tickLerp(); + + this.refreshDimensions(); + } + + private void tickLerp() { + if (this.isControlledByLocalInstance()) { + this.lerpSteps = 0; + this.syncPacketPositionCodec(this.getX(), this.getY(), this.getZ()); + } + + if (this.lerpSteps > 0) { + double d0 = this.getX() + (this.lerpX - this.getX()) / (double) this.lerpSteps; + double d1 = this.getY() + (this.lerpY - this.getY()) / (double) this.lerpSteps; + double d2 = this.getZ() + (this.lerpZ - this.getZ()) / (double) this.lerpSteps; + double d3 = Mth.wrapDegrees(this.lerpYRot - (double) this.getYRot()); + this.setYRot(this.getYRot() + (float) d3 / (float) this.lerpSteps); + this.setXRot(this.getXRot() + (float) (this.lerpXRot - (double) this.getXRot()) / (float) this.lerpSteps); + --this.lerpSteps; + this.setPos(d0, d1, d2); + this.setRot(this.getYRot(), this.getXRot()); + } + } + @Override + public void lerpTo(double pX, double pY, double pZ, float pYaw, float pPitch, int pPosRotationIncrements, boolean pTeleport) { + this.lerpX = pX; + this.lerpY = pY; + this.lerpZ = pZ; + this.lerpYRot = (double)pYaw; + this.lerpXRot = (double)pPitch; + this.lerpSteps = 10; + } + + public static double calculateAngle(Vec3 move, Vec3 view) { + move = move.multiply(1, 0, 1).normalize(); + view = view.multiply(1, 0, 1).normalize(); + + double startLength = move.length(); + double endLength = view.length(); + if (startLength > 0.0D && endLength > 0.0D) { + return Math.toDegrees(Math.acos(Mth.clamp(move.dot(view) / (startLength * endLength), -1, 1))); + } else { + return 0.0D; + } + } + + @Override + protected void defineSynchedData() { + } + + @Override + protected void readAdditionalSaveData(CompoundTag compoundTag) { + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntityMobile.java similarity index 86% rename from src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java rename to src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntityMobile.java index d1b427da4..750795a52 100644 --- a/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntity.java +++ b/src/main/java/com/atsuishio/superbwarfare/entity/SpeedboatEntityMobile.java @@ -83,18 +83,18 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; -public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, IVehicleEntity, HasCustomInventoryScreen, ContainerEntity { +public class SpeedboatEntityMobile extends MobileVehicleEntity implements GeoEntity, IChargeEntity, IVehicleEntity, HasCustomInventoryScreen, ContainerEntity { - public static final EntityDataAccessor FIRE_ANIM = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT); - public static final EntityDataAccessor HEALTH = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor ENERGY = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor ROT_Y = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor DELTA_ROT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor POWER = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor ROTOR = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.FLOAT); - public static final EntityDataAccessor HEAT = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT); - protected static final EntityDataAccessor LAST_ATTACKER_UUID = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.STRING); - public static final EntityDataAccessor AMMO = SynchedEntityData.defineId(SpeedboatEntity.class, EntityDataSerializers.INT); + public static final EntityDataAccessor FIRE_ANIM = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.INT); + public static final EntityDataAccessor HEALTH = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor ENERGY = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor ROT_Y = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor DELTA_ROT = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor POWER = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor ROTOR = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor HEAT = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.INT); + protected static final EntityDataAccessor LAST_ATTACKER_UUID = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.STRING); + public static final EntityDataAccessor AMMO = SynchedEntityData.defineId(SpeedboatEntityMobile.class, EntityDataSerializers.INT); public static final float MAX_HEALTH = CannonConfig.SPEEDBOAT_HP.get(); public static final float MAX_ENERGY = CannonConfig.SPEEDBOAT_MAX_ENERGY.get().floatValue(); @@ -104,12 +104,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, private LazyOptional itemHandler = LazyOptional.of(() -> new InvWrapper(this)); private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); - private int lerpSteps; - private double lerpX; - private double lerpY; - private double lerpZ; - private double lerpYRot; - private double lerpXRot; public float turretYRot; public float turretXRot; @@ -118,11 +112,11 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, public boolean cannotFire; - public SpeedboatEntity(PlayMessages.SpawnEntity packet, Level world) { + public SpeedboatEntityMobile(PlayMessages.SpawnEntity packet, Level world) { this(ModEntities.SPEEDBOAT.get(), world); } - public SpeedboatEntity(EntityType type, Level world) { + public SpeedboatEntityMobile(EntityType type, Level world) { super(type, world); } @@ -200,7 +194,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, if (!this.level().isClientSide && pReason != RemovalReason.DISCARDED) { Containers.dropContents(this.level(), this, this); } - super.remove(pReason); } @@ -248,11 +241,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, return true; } - @Override - public boolean isPickable() { - return !this.isRemoved(); - } - @Override public InteractionResult interact(Player player, InteractionHand hand) { if (player.getVehicle() == this) return InteractionResult.PASS; @@ -357,8 +345,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, crushEntities(this.getDeltaMovement()); } - handleClientSync(); - tickLerp(); controlBoat(); collideBlock(); gunnerAngle(); @@ -504,42 +490,42 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, if (this.entityData.get(ENERGY) <= 0) return; if (passenger0 == null) { - this.getPersistentData().putBoolean("left", false); - this.getPersistentData().putBoolean("right", false); - this.getPersistentData().putBoolean("forward", false); - this.getPersistentData().putBoolean("backward", false); + this.leftInputDown = false; + this.rightInputDown = false; + this.forwardInputDown = false; + this.backInputDown = false; } float diffY = 0; - if (this.getPersistentData().getBoolean("forward")) { + if (forwardInputDown) { this.entityData.set(POWER, this.entityData.get(POWER) + 0.02f); } - if (this.getPersistentData().getBoolean("backward")) { + if (backInputDown) { this.entityData.set(POWER, this.entityData.get(POWER) - 0.02f); - if (this.getPersistentData().getBoolean("right")) { + if (rightInputDown) { diffY = Mth.clamp(diffY + 1f, 0, 10); handleSetDiffY(diffY); - } else if (this.getPersistentData().getBoolean("left")) { + } else if (leftInputDown) { diffY = Mth.clamp(diffY - 1f, -10, 0); handleSetDiffY(diffY); } } else { - if (this.getPersistentData().getBoolean("right")) { + if (rightInputDown) { diffY = Mth.clamp(diffY - 1f, -10, 0); handleSetDiffY(diffY); - } else if (this.getPersistentData().getBoolean("left")) { + } else if (this.leftInputDown) { diffY = Mth.clamp(diffY + 1f, 0, 10); handleSetDiffY(diffY); } } - if (this.getPersistentData().getBoolean("forward") || this.getPersistentData().getBoolean("backward")) { + if (this.forwardInputDown || this.backInputDown) { this.entityData.set(ENERGY, Math.max(this.entityData.get(ENERGY) - CannonConfig.SPEEDBOAT_ENERGY_COST.get().floatValue(), 0)); } if (level().isClientSide) { - level().playLocalSound(this.getX(), this.getY() + this.getBbHeight() * 0.5, this.getZ(), this.getEngineSound(), this.getSoundSource(), Math.min((this.getPersistentData().getBoolean("forward") || this.getPersistentData().getBoolean("backward") ? 7.5f : 5f) * 2 * Mth.abs(this.entityData.get(POWER)), 0.25f), (random.nextFloat() * 0.1f + 1f), false); + level().playLocalSound(this.getX(), this.getY() + this.getBbHeight() * 0.5, this.getZ(), this.getEngineSound(), this.getSoundSource(), Math.min((this.forwardInputDown || this.backInputDown ? 7.5f : 5f) * 2 * Mth.abs(this.entityData.get(POWER)), 0.25f), (random.nextFloat() * 0.1f + 1f), false); } this.entityData.set(POWER, this.entityData.get(POWER) * 0.87f); @@ -582,26 +568,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, this.entityData.set(DELTA_ROT, (float) Mth.clamp(diffY * 1.3 * Math.max(8 * this.getDeltaMovement().length(), 0.5), -2, 2)); } - private void handleClientSync() { - if (isControlledByLocalInstance()) { - lerpSteps = 0; - syncPacketPositionCodec(getX(), getY(), getZ()); - } - if (lerpSteps <= 0) { - return; - } - double interpolatedX = getX() + (lerpX - getX()) / (double) lerpSteps; - double interpolatedY = getY() + (lerpY - getY()) / (double) lerpSteps; - double interpolatedZ = getZ() + (lerpZ - getZ()) / (double) lerpSteps; - double interpolatedYaw = Mth.wrapDegrees(lerpYRot - (double) getYRot()); - setYRot(getYRot() + (float) interpolatedYaw / (float) lerpSteps); - setXRot(getXRot() + (float) (lerpXRot - (double) getXRot()) / (float) lerpSteps); - - setPos(interpolatedX, interpolatedY, interpolatedZ); - setRot(getYRot(), getXRot()); - - --lerpSteps; - } protected SoundEvent getEngineSound() { return ModSounds.BOAT_ENGINE.get(); @@ -648,49 +614,6 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, } } } - - public static double calculateAngle(Vec3 move, Vec3 view) { - move = move.multiply(1, 0, 1).normalize(); - view = view.multiply(1, 0, 1).normalize(); - - double startLength = move.length(); - double endLength = view.length(); - if (startLength > 0.0D && endLength > 0.0D) { - return Math.toDegrees(Math.acos(Mth.clamp(move.dot(view) / (startLength * endLength), -1, 1))); - } else { - return 0.0D; - } - } - - private void tickLerp() { - if (this.isControlledByLocalInstance()) { - this.lerpSteps = 0; - this.syncPacketPositionCodec(this.getX(), this.getY(), this.getZ()); - } - - if (this.lerpSteps > 0) { - double d0 = this.getX() + (this.lerpX - this.getX()) / (double) this.lerpSteps; - double d1 = this.getY() + (this.lerpY - this.getY()) / (double) this.lerpSteps; - double d2 = this.getZ() + (this.lerpZ - this.getZ()) / (double) this.lerpSteps; - double d3 = Mth.wrapDegrees(this.lerpYRot - (double) this.getYRot()); - this.setYRot(this.getYRot() + (float) d3 / (float) this.lerpSteps); - this.setXRot(this.getXRot() + (float) (this.lerpXRot - (double) this.getXRot()) / (float) this.lerpSteps); - --this.lerpSteps; - this.setPos(d0, d1, d2); - this.setRot(this.getYRot(), this.getXRot()); - } - } - - @Override - public void lerpTo(double pX, double pY, double pZ, float pYaw, float pPitch, int pPosRotationIncrements, boolean pTeleport) { - this.lerpX = pX; - this.lerpY = pY; - this.lerpZ = pZ; - this.lerpYRot = pYaw; - this.lerpXRot = pPitch; - this.lerpSteps = 10; - } - private void destroy() { Entity attacker = EntityFindUtil.findEntity(this.level(), this.entityData.get(LAST_ATTACKER_UUID)); CustomExplosion explosion = new CustomExplosion(this.level(), attacker, @@ -722,7 +645,7 @@ public class SpeedboatEntity extends Entity implements GeoEntity, IChargeEntity, this.clampRotation(entity); } - private PlayState firePredicate(AnimationState event) { + private PlayState firePredicate(AnimationState event) { if (this.entityData.get(FIRE_ANIM) > 1) { return event.setAndContinue(RawAnimation.begin().thenPlay("animation.speedboat.fire")); } diff --git a/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntityMobile.java b/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntityMobile.java new file mode 100644 index 000000000..ddf3b387d --- /dev/null +++ b/src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntityMobile.java @@ -0,0 +1,258 @@ +package com.atsuishio.superbwarfare.entity; + +import com.atsuishio.superbwarfare.init.ModEntities; +import com.atsuishio.superbwarfare.init.ModSounds; +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.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.player.Player; +import net.minecraft.world.entity.projectile.ThrownPotion; +import net.minecraft.world.level.Level; +import net.minecraft.world.phys.Vec3; +import net.minecraftforge.network.NetworkHooks; +import net.minecraftforge.network.PlayMessages; +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.util.GeckoLibUtil; + +public class WheelChairEntityMobile extends MobileVehicleEntity implements GeoEntity, IVehicleEntity { + + public static final EntityDataAccessor POWER = SynchedEntityData.defineId(WheelChairEntityMobile.class, EntityDataSerializers.FLOAT); + public static final EntityDataAccessor ROT_Y = SynchedEntityData.defineId(WheelChairEntityMobile.class, EntityDataSerializers.FLOAT); + + public static final EntityDataAccessor HEALTH = SynchedEntityData.defineId(WheelChairEntityMobile.class, EntityDataSerializers.FLOAT); + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + public static final float MAX_HEALTH = 50; + + public WheelChairEntityMobile(PlayMessages.SpawnEntity packet, Level world) { + this(ModEntities.WHEEL_CHAIR.get(), world); + } + + public WheelChairEntityMobile(EntityType type, Level world) { + super(type, world); + this.setMaxUpStep(1.1f); + } + + @Override + protected void defineSynchedData() { + this.entityData.define(HEALTH, MAX_HEALTH); + this.entityData.define(ROT_Y, 0f); + this.entityData.define(POWER, 0f); + } + + @Override + public void addAdditionalSaveData(CompoundTag compound) { + if (compound.contains("Health")) { + this.entityData.set(HEALTH, compound.getFloat("Health")); + } else { + this.entityData.set(HEALTH, MAX_HEALTH); + } + } + + @Override + public void readAdditionalSaveData(CompoundTag compound) { + + } + + @Override + public boolean canBeCollidedWith() { + return true; + } + + @Override + public boolean canCollideWith(Entity pEntity) { + return (pEntity.canBeCollidedWith() || pEntity.isPushable()) && !this.isPassengerOfSameVehicle(pEntity); + } + + @Override + protected float getEyeHeight(Pose pPose, EntityDimensions pSize) { + return 0.75F; + } + + @Override + public Packet getAddEntityPacket() { + return NetworkHooks.getEntitySpawningPacket(this); + } + + @Override + public double getPassengersRidingOffset() { + return super.getPassengersRidingOffset() - 0.05; + } + + @Override + public boolean hurt(DamageSource source, float amount) { + if (source.getDirectEntity() instanceof ThrownPotion || source.getDirectEntity() instanceof AreaEffectCloud) + return false; + if (source.is(DamageTypes.FALL)) + return false; + if (source.is(DamageTypes.CACTUS)) + return false; + if (source.is(DamageTypes.DROWN)) + return false; + if (source.is(DamageTypes.LIGHTNING_BOLT)) + return false; + if (source.is(DamageTypes.FALLING_ANVIL)) + return false; + if (source.is(DamageTypes.DRAGON_BREATH)) + return false; + if (source.is(DamageTypes.WITHER)) + return false; + if (source.is(DamageTypes.WITHER_SKULL)) + return false; + + this.level().playSound(null, this.getOnPos(), ModSounds.HIT.get(), SoundSource.PLAYERS, 1, 1); + this.entityData.set(HEALTH, this.entityData.get(HEALTH) - amount); + return true; + } + + @Override + public InteractionResult interact(Player player, InteractionHand hand) { + if (this.getFirstPassenger() == null) { + player.startRiding(this); + return InteractionResult.sidedSuccess(this.level().isClientSide()); + } + return InteractionResult.PASS; + } + + @Override + public void baseTick() { + super.baseTick(); + + this.setDeltaMovement(this.getDeltaMovement().add(0.0, -0.078, 0.0)); + if (this.onGround()) { + float f = 0.7f + 0.2f * Mth.abs(90 - (float) calculateAngle(this.getDeltaMovement(), this.getViewVector(1))) / 90; + this.setDeltaMovement(this.getDeltaMovement().multiply(f, 0.99, f)); + } else { + this.setDeltaMovement(this.getDeltaMovement().multiply(0.99, 0.99, 0.99)); + } + + this.move(MoverType.SELF, this.getDeltaMovement()); + + if (this.entityData.get(HEALTH) <= 0) { + this.ejectPassengers(); + destroy(); + } + + if (this.level() instanceof ServerLevel) { + this.entityData.set(ROT_Y, this.getYRot()); + } + + travel(); + this.refreshDimensions(); + } + + public void travel() { + Entity passenger = this.getPassengers().isEmpty() ? null : this.getPassengers().get(0); + if (!(passenger instanceof LivingEntity entity)) return; + + float diffY = entity.getYRot() - this.getYRot(); + if (diffY > 180.0f) { + diffY -= 360.0f; + } else if (diffY < -180.0f) { + diffY += 360.0f; + } + diffY = Mth.clamp(diffY * 0.15f, -8f, 8f); + + this.setYRot(this.entityData.get(ROT_Y) + diffY); + this.setRot(this.getYRot(), this.getXRot()); + + if (this.forwardInputDown) { + this.entityData.set(POWER, this.entityData.get(POWER) + 0.02f); + } + + if (this.backInputDown) { + this.entityData.set(POWER, this.entityData.get(POWER) - 0.02f); + } + + if (this.upInputDown && this.onGround()) { + this.setDeltaMovement(this.getDeltaMovement().add(0, 0.58, 0)); + } + +// if (this.getPersistentData().getBoolean("forward") || this.getPersistentData().getBoolean("backward")) { +// this.entityData.set(ENERGY, Math.max(this.entityData.get(ENERGY) - CannonConfig.SPEEDBOAT_ENERGY_COST.get().floatValue(), 0)); +// } + + + this.entityData.set(POWER, this.entityData.get(POWER) * 0.87f); + + if (this.onGround()) { + this.setDeltaMovement(this.getDeltaMovement().add(new Vec3(this.getLookAngle().x, 0, this.getLookAngle().z).scale(this.entityData.get(POWER)))); + } + } + + protected void clampRotation(Entity entity) { + entity.setYBodyRot(this.getYRot()); + float f2 = Mth.wrapDegrees(entity.getYRot() - this.getYRot()); + float f3 = Mth.clamp(f2, -90F, 90.0F); + entity.yRotO += f3 - f2; + entity.setYRot(entity.getYRot() + f3 - f2); + entity.setYHeadRot(entity.getYRot()); + } + + @Override + public void onPassengerTurned(Entity entity) { + this.clampRotation(entity); + } + + private void destroy() { + if (level() instanceof ServerLevel) { + level().explode(null, this.getX(), this.getY(), this.getZ(), 0, Level.ExplosionInteraction.NONE); + } + this.discard(); + } + + @Override + public void vehicleShoot(Player player) { + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } + + @Override + public float getHealth() { + return this.entityData.get(HEALTH).intValue(); + } + + @Override + public float getMaxHealth() { + return (int) MAX_HEALTH; + } + + @Override + public boolean isDriver(Player player) { + return player == this.getFirstPassenger(); + } + + @Override + public int mainGunRpm() { + return 0; + } + + @Override + public boolean canShoot(Player player) { + return true; + } + + @Override + public int getAmmoCount(Player player) { + return -1; + } +} diff --git a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java index 75ac05d4d..5ed1cecd3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java +++ b/src/main/java/com/atsuishio/superbwarfare/event/ClientEventHandler.java @@ -6,7 +6,7 @@ import com.atsuishio.superbwarfare.config.client.DisplayConfig; import com.atsuishio.superbwarfare.entity.DroneEntity; import com.atsuishio.superbwarfare.entity.ICannonEntity; import com.atsuishio.superbwarfare.entity.IVehicleEntity; -import com.atsuishio.superbwarfare.entity.SpeedboatEntity; +import com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile; import com.atsuishio.superbwarfare.init.*; import com.atsuishio.superbwarfare.network.ModVariables; import com.atsuishio.superbwarfare.network.message.LaserShootMessage; @@ -52,7 +52,7 @@ import software.bernie.geckolib.core.animatable.model.CoreGeoBone; import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Supplier; -import static com.atsuishio.superbwarfare.entity.SpeedboatEntity.HEAT; +import static com.atsuishio.superbwarfare.entity.SpeedboatEntityMobile.HEAT; @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE, value = Dist.CLIENT) public class ClientEventHandler { @@ -584,7 +584,7 @@ public class ClientEventHandler { } public static void playVehicleClientSounds(Player player, IVehicleEntity iVehicle) { - if (iVehicle instanceof SpeedboatEntity speedboat) { + if (iVehicle instanceof SpeedboatEntityMobile speedboat) { float pitch = speedboat.getEntityData().get(HEAT) <= 60 ? 1 : (float) (1 - 0.011 * java.lang.Math.abs(60 - speedboat.getEntityData().get(HEAT))); player.playSound(ModSounds.M_2_FIRE_1P.get(), 1f, pitch); player.playSound(ModSounds.SHELL_CASING_50CAL.get(), 0.3f, 1); @@ -750,7 +750,7 @@ public class ClientEventHandler { event.setCanceled(true); } - if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoom && stack.is(ItemStack.EMPTY.getItem())) { + if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntityMobile boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoom && stack.is(ItemStack.EMPTY.getItem())) { event.setCanceled(true); } } @@ -1238,7 +1238,7 @@ public class ClientEventHandler { return; } - if (mc.player.getVehicle() instanceof SpeedboatEntity && zoom) { + if (mc.player.getVehicle() instanceof SpeedboatEntityMobile && zoom) { event.setCanceled(true); } diff --git a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java index e9a7c4b3b..ec17d65c3 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntities.java @@ -61,8 +61,10 @@ public class ModEntities { EntityType.Builder.of(JavelinMissileEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(1).setCustomClientFactory(JavelinMissileEntity::new).sized(0.5f, 0.5f)); public static final RegistryObject> LASER = register("laser", EntityType.Builder.of(LaserEntity::new, MobCategory.MISC).sized(0.1f, 0.1f).fireImmune().setUpdateInterval(1)); - public static final RegistryObject> SPEEDBOAT = register("speedboat", - EntityType.Builder.of(SpeedboatEntity::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(3).setCustomClientFactory(SpeedboatEntity::new).fireImmune().sized(3.0f, 2.0f)); + public static final RegistryObject> SPEEDBOAT = register("speedboat", + EntityType.Builder.of(SpeedboatEntityMobile::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(3).setCustomClientFactory(SpeedboatEntityMobile::new).fireImmune().sized(3.0f, 2.0f)); + public static final RegistryObject> WHEEL_CHAIR = register("wheel_chair", + EntityType.Builder.of(WheelChairEntityMobile::new, MobCategory.MISC).setShouldReceiveVelocityUpdates(true).setTrackingRange(512).setUpdateInterval(3).setCustomClientFactory(WheelChairEntityMobile::new).fireImmune().sized(1.0f, 1.0f)); 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 eb9d29eaa..bbc70a1e8 100644 --- a/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java +++ b/src/main/java/com/atsuishio/superbwarfare/init/ModEntityRenderers.java @@ -30,5 +30,6 @@ public class ModEntityRenderers { event.registerEntityRenderer(ModEntities.LASER.get(), LaserEntityRenderer::new); event.registerEntityRenderer(ModEntities.ANNIHILATOR.get(), AnnihilatorRenderer::new); event.registerEntityRenderer(ModEntities.SPEEDBOAT.get(), SpeedboatRenderer::new); + event.registerEntityRenderer(ModEntities.WHEEL_CHAIR.get(), WheelChairRenderer::new); } } diff --git a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java index e86ec3cbc..48011200f 100644 --- a/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java +++ b/src/main/java/com/atsuishio/superbwarfare/mixins/CameraMixin.java @@ -40,7 +40,7 @@ public abstract class CameraMixin { if (player != null) { ItemStack stack = player.getMainHandItem(); - if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntity boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoom && stack.is(ItemStack.EMPTY.getItem())) { + if ((player.getVehicle() != null && player.getVehicle() instanceof SpeedboatEntityMobile boat && boat.getFirstPassenger() == player) && ClientEventHandler.zoom && stack.is(ItemStack.EMPTY.getItem())) { float yRot = boat.getYRot(); if (yRot < 0) { yRot += 360; @@ -92,7 +92,7 @@ public abstract class CameraMixin { move(-getMaxZoom(16), 1.3, 0.0); return; } - if (thirdPerson && entity.getVehicle() instanceof SpeedboatEntity && !ClientEventHandler.zoom) { + if (thirdPerson && entity.getVehicle() instanceof SpeedboatEntityMobile && !ClientEventHandler.zoom) { move(-getMaxZoom(3), 1, 0.0); return; } diff --git a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java index da1448e46..43a447020 100644 --- a/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java +++ b/src/main/java/com/atsuishio/superbwarfare/network/message/VehicleMovementMessage.java @@ -1,5 +1,6 @@ package com.atsuishio.superbwarfare.network.message; +import com.atsuishio.superbwarfare.entity.MobileVehicleEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; @@ -31,19 +32,25 @@ public class VehicleMovementMessage { Player player = context.getSender(); var vehicle = player.getVehicle(); - if (vehicle != null) { + if (vehicle instanceof MobileVehicleEntity mobileVehicleEntity) { switch (message.direction) { case 0: - vehicle.getPersistentData().putBoolean("left", message.clicked); + mobileVehicleEntity.leftInputDown = message.clicked; break; case 1: - vehicle.getPersistentData().putBoolean("right", message.clicked); + mobileVehicleEntity.rightInputDown = message.clicked; break; case 2: - vehicle.getPersistentData().putBoolean("forward", message.clicked); + mobileVehicleEntity.forwardInputDown = message.clicked; break; case 3: - vehicle.getPersistentData().putBoolean("backward", message.clicked); + mobileVehicleEntity.backInputDown = message.clicked; + break; + case 4: + mobileVehicleEntity.upInputDown = message.clicked; + break; + case 5: + mobileVehicleEntity.downInputDown = message.clicked; break; } } diff --git a/src/main/resources/assets/superbwarfare/geo/wheel_chair.geo.json b/src/main/resources/assets/superbwarfare/geo/wheel_chair.geo.json new file mode 100644 index 000000000..53fb426b2 --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/wheel_chair.geo.json @@ -0,0 +1,2557 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.unknown", + "texture_width": 128, + "texture_height": 128, + "visible_bounds_width": 3, + "visible_bounds_height": 3.5, + "visible_bounds_offset": [0, 1.25, 0] + }, + "bones": [ + { + "name": "root", + "pivot": [0, 0, 0] + }, + { + "name": "w_rr", + "parent": "root", + "pivot": [-6.9, 2.76871, -9.4], + "cubes": [ + { + "origin": [-7.2, 0.81989, -12.82149], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 3.10995, -10.56575], + "rotation": [180, 0, 0], + "uv": { + "east": {"uv": [64, 26], "uv_size": [-2, 0.5]}, + "west": {"uv": [26, 62], "uv_size": [-2, 0.5]}, + "up": {"uv": [27.5, 62], "uv_size": [-0.5, 2]}, + "down": {"uv": [62.5, 29], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 1.54419, -12.23862], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 3.10995, -10.56575], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [65, 15], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 14], "uv_size": [-2, 0.5]}, + "up": {"uv": [63.5, 18], "uv_size": [-0.5, 2]}, + "down": {"uv": [24.5, 65], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 1.6442, -11.31431], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 3.10995, -10.56575], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [65, 29], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 28], "uv_size": [-2, 0.5]}, + "up": {"uv": [29.5, 63], "uv_size": [-0.5, 2]}, + "down": {"uv": [63.5, 32], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 1.06133, -10.59001], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 3.10995, -10.56575], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [65, 27], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 20], "uv_size": [-2, 0.5]}, + "up": {"uv": [25.5, 63], "uv_size": [-0.5, 2]}, + "down": {"uv": [28.5, 65], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 0.86132, -9.90713], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 2.42707, -8.23425], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [65, 51], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 50], "uv_size": [-2, 0.5]}, + "up": {"uv": [48.5, 63], "uv_size": [-0.5, 2]}, + "down": {"uv": [52.5, 65], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 0.96132, -8.98281], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 2.42707, -8.23425], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [47, 63], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 39], "uv_size": [-2, 0.5]}, + "up": {"uv": [63.5, 46], "uv_size": [-0.5, 2]}, + "down": {"uv": [47.5, 65], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 0.37845, -8.25851], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 2.42707, -8.23425], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [65, 38], "uv_size": [-2, 0.5]}, + "west": {"uv": [40, 63], "uv_size": [-2, 0.5]}, + "up": {"uv": [44.5, 63], "uv_size": [-0.5, 2]}, + "down": {"uv": [63.5, 46], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7.2, 0.13701, -10.49], + "size": [0.6, 0.6, 2.18], + "pivot": [-6.9, 2.42707, -8.23425], + "rotation": [0, 0, 0], + "uv": { + "east": {"uv": [65, 35], "uv_size": [-2, 0.5]}, + "west": {"uv": [65, 34], "uv_size": [-2, 0.5]}, + "up": {"uv": [63.5, 36], "uv_size": [-0.5, 2]}, + "down": {"uv": [37.5, 65], "uv_size": [-0.5, -2]} + } + }, + { + "origin": [-7, 0.73701, -9.64], + "size": [0.2, 4.065, 0.48], + "pivot": [-6.9, 2.76951, -9.4], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [59.5, 58], "uv_size": [-0.5, 4]}, + "east": {"uv": [18.5, 60], "uv_size": [-0.5, 4]}, + "south": {"uv": [60.5, 10], "uv_size": [-0.5, 4]}, + "west": {"uv": [60.5, 0], "uv_size": [-0.5, 4]} + } + }, + { + "origin": [-7, 0.73701, -9.64], + "size": [0.2, 4.065, 0.48], + "pivot": [-6.9, 2.76951, -9.4], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [19.5, 60], "uv_size": [-0.5, 4]}, + "east": {"uv": [35.5, 60], "uv_size": [-0.5, 4]}, + "south": {"uv": [21.5, 60], "uv_size": [-0.5, 4]}, + "west": {"uv": [20.5, 60], "uv_size": [-0.5, 4]} + } + } + ] + }, + { + "name": "w_rb", + "parent": "root", + "pivot": [-8.16, 9.04921, 5], + "cubes": [ + { + "origin": [-8.76, 0, 3.2], + "size": [1.2, 1.2, 3.6], + "uv": { + "east": {"uv": [21.5, 32], "uv_size": [-3.5, 1]}, + "west": {"uv": [21.5, 31], "uv_size": [-3.5, 1]}, + "up": {"uv": [52, 26], "uv_size": [-1, 3.5]}, + "down": {"uv": [53, 29.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 1.59221, 2.75536], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-22.5, 0, 0], + "uv": { + "east": {"uv": [56.5, 29], "uv_size": [-3.5, 1]}, + "west": {"uv": [56.5, 28], "uv_size": [-3.5, 1]}, + "up": {"uv": [54, 52], "uv_size": [-1, 3.5]}, + "down": {"uv": [55, 3.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 3.70451, 0.29498], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-67.5, 0, 0], + "uv": { + "east": {"uv": [58.5, 0], "uv_size": [-3.5, 1]}, + "west": {"uv": [57.5, 50], "uv_size": [-3.5, 1]}, + "up": {"uv": [56, 18], "uv_size": [-1, 3.5]}, + "down": {"uv": [25, 58.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 2.89306, 1.73525], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [57.5, 49], "uv_size": [-3.5, 1]}, + "west": {"uv": [57.5, 48], "uv_size": [-3.5, 1]}, + "up": {"uv": [18, 54], "uv_size": [-1, 3.5]}, + "down": {"uv": [55, 55.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 3.90303, -1.34618], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [59.5, 36], "uv_size": [-3.5, 1]}, + "west": {"uv": [59.5, 12], "uv_size": [-3.5, 1]}, + "up": {"uv": [39, 56], "uv_size": [-1, 3.5]}, + "down": {"uv": [40, 59.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 3.45838, -2.93839], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-112.5, 0, 0], + "uv": { + "east": {"uv": [59.5, 11], "uv_size": [-3.5, 1]}, + "west": {"uv": [59.5, 10], "uv_size": [-3.5, 1]}, + "up": {"uv": [36, 56], "uv_size": [-1, 3.5]}, + "down": {"uv": [37, 59.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 0.99801, -5.0507], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-157.5, 0, 0], + "uv": { + "east": {"uv": [58.5, 30], "uv_size": [-3.5, 1]}, + "west": {"uv": [58.5, 3], "uv_size": [-3.5, 1]}, + "up": {"uv": [56, 52], "uv_size": [-1, 3.5]}, + "down": {"uv": [57, 21.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 2.43828, -4.23924], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 8.72763, 0.77539], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [58.5, 2], "uv_size": [-3.5, 1]}, + "west": {"uv": [58.5, 1], "uv_size": [-3.5, 1]}, + "up": {"uv": [26, 55], "uv_size": [-1, 3.5]}, + "down": {"uv": [27, 58.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 0.64316, 11.64921], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [-180, 0, 0], + "uv": { + "east": {"uv": [60.5, 52], "uv_size": [-3.5, 1]}, + "west": {"uv": [60.5, 51], "uv_size": [-3.5, 1]}, + "up": {"uv": [54, 57], "uv_size": [-1, 3.5]}, + "down": {"uv": [55, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 2.23537, 11.20457], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [157.5, 0, 0], + "uv": { + "east": {"uv": [34.5, 57], "uv_size": [-3.5, 1]}, + "west": {"uv": [60.5, 29], "uv_size": [-3.5, 1]}, + "up": {"uv": [58, 38], "uv_size": [-1, 3.5]}, + "down": {"uv": [58, 45.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 3.53622, 10.18446], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [60.5, 28], "uv_size": [-3.5, 1]}, + "west": {"uv": [60.5, 27], "uv_size": [-3.5, 1]}, + "up": {"uv": [30, 57], "uv_size": [-1, 3.5]}, + "down": {"uv": [31, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 4.34767, 8.74419], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [112.5, 0, 0], + "uv": { + "east": {"uv": [60.5, 26], "uv_size": [-3.5, 1]}, + "west": {"uv": [60.5, 23], "uv_size": [-3.5, 1]}, + "up": {"uv": [28, 57], "uv_size": [-1, 3.5]}, + "down": {"uv": [29, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 3.08144, 4.20997], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [60.5, 18], "uv_size": [-3.5, 1]}, + "west": {"uv": [60.5, 9], "uv_size": [-3.5, 1]}, + "up": {"uv": [58, 19], "uv_size": [-1, 3.5]}, + "down": {"uv": [24, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 1.64116, 3.39852], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [22.5, 0, 0], + "uv": { + "east": {"uv": [60.5, 8], "uv_size": [-3.5, 1]}, + "west": {"uv": [59.5, 55], "uv_size": [-3.5, 1]}, + "up": {"uv": [11, 57], "uv_size": [-1, 3.5]}, + "down": {"uv": [12, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 4.10154, 5.51082], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [67.5, 0, 0], + "uv": { + "east": {"uv": [56.5, 56], "uv_size": [-3.5, 1]}, + "west": {"uv": [59.5, 47], "uv_size": [-3.5, 1]}, + "up": {"uv": [58, 4], "uv_size": [-1, 3.5]}, + "down": {"uv": [10, 60.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-8.76, 4.54618, 7.10303], + "size": [1.2, 1.2, 3.6], + "pivot": [-8.16, 9.37079, 9.22461], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [59.5, 46], "uv_size": [-3.5, 1]}, + "west": {"uv": [59.5, 37], "uv_size": [-3.5, 1]}, + "up": {"uv": [57, 51], "uv_size": [-1, 3.5]}, + "down": {"uv": [53, 59.5], "uv_size": [-1, -3.5]} + } + } + ] + }, + { + "name": "lun", + "parent": "w_rb", + "pivot": [-9, 9, 5] + }, + { + "name": "zuolunlunfu2", + "parent": "lun", + "pivot": [-9, 9, 5], + "cubes": [ + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "uv": { + "north": {"uv": [9.5, 49], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [33, 36], "uv_size": [-1, 7.5]}, + "south": {"uv": [10.5, 49], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [32, 36], "uv_size": [-1, 7.5]}, + "up": {"uv": [64.5, 11], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 13], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [11.5, 49], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [35, 36], "uv_size": [-1, 7.5]}, + "south": {"uv": [22.5, 51], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [34, 36], "uv_size": [-1, 7.5]}, + "up": {"uv": [64.5, 13], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 17], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [40.5, 51], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [37, 36], "uv_size": [-1, 7.5]}, + "south": {"uv": [41.5, 51], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [36, 36], "uv_size": [-1, 7.5]}, + "up": {"uv": [17.5, 64], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 18], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [42.5, 51], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [2, 37], "uv_size": [-1, 7.5]}, + "south": {"uv": [43.5, 51], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [1, 37], "uv_size": [-1, 7.5]}, + "up": {"uv": [18.5, 64], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 19], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [180, 0, 0], + "uv": { + "north": {"uv": [49.5, 51], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [4, 37], "uv_size": [-1, 7.5]}, + "south": {"uv": [50.5, 51], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [3, 37], "uv_size": [-1, 7.5]}, + "up": {"uv": [19.5, 64], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 20], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [51.5, 51], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [6, 37], "uv_size": [-1, 7.5]}, + "south": {"uv": [18.5, 52], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [5, 37], "uv_size": [-1, 7.5]}, + "up": {"uv": [20.5, 64], "uv_size": [-0.5, 1]}, + "down": {"uv": [21.5, 65], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [19.5, 52], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [8, 37], "uv_size": [-1, 7.5]}, + "south": {"uv": [20.5, 52], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [7, 37], "uv_size": [-1, 7.5]}, + "up": {"uv": [64.5, 21], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 23], "uv_size": [-0.5, -1]} + } + }, + { + "origin": [-8.22, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [-9, 9, 5], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [21.5, 52], "uv_size": [-0.5, 7.5]}, + "east": {"uv": [10, 37], "uv_size": [-1, 7.5]}, + "south": {"uv": [37.5, 52], "uv_size": [-0.5, 7.5]}, + "west": {"uv": [9, 37], "uv_size": [-1, 7.5]}, + "up": {"uv": [23.5, 64], "uv_size": [-0.5, 1]}, + "down": {"uv": [64.5, 24], "uv_size": [-0.5, -1]} + } + } + ] + }, + { + "name": "zuowailun2", + "parent": "lun", + "pivot": [-9.84, 9, 5], + "cubes": [ + { + "origin": [-9.54, 0.9, 3.38], + "size": [0.54, 0.54, 3.24], + "uv": { + "east": {"uv": [63, 14], "uv_size": [-3, 0.5]}, + "west": {"uv": [63, 5], "uv_size": [-3, 0.5]}, + "up": {"uv": [37.5, 60], "uv_size": [-0.5, 3]}, + "down": {"uv": [38.5, 63], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 2.38387, 2.96561], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-22.5, 0, 0], + "uv": { + "east": {"uv": [4, 61], "uv_size": [-3, 0.5]}, + "west": {"uv": [63, 47], "uv_size": [-3, 0.5]}, + "up": {"uv": [4.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [5.5, 64], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 3.5962, 2.01492], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [64, 10], "uv_size": [-3, 0.5]}, + "west": {"uv": [12, 61], "uv_size": [-3, 0.5]}, + "up": {"uv": [61.5, 11], "uv_size": [-0.5, 3]}, + "down": {"uv": [61.5, 21], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.35244, 0.67265], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-67.5, 0, 0], + "uv": { + "east": {"uv": [64, 6], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 3], "uv_size": [-3, 0.5]}, + "up": {"uv": [6.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [61.5, 10], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.53745, -0.85684], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [64, 41], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 40], "uv_size": [-3, 0.5]}, + "up": {"uv": [42.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [43.5, 64], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.12306, -2.34071], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-112.5, 0, 0], + "uv": { + "east": {"uv": [64, 33], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 32], "uv_size": [-3, 0.5]}, + "up": {"uv": [61.5, 34], "uv_size": [-0.5, 3]}, + "down": {"uv": [61.5, 40], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 3.17237, -3.55304], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [30, 61], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 23], "uv_size": [-3, 0.5]}, + "up": {"uv": [61.5, 29], "uv_size": [-0.5, 3]}, + "down": {"uv": [30.5, 64], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 1.8301, -4.30928], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 8.74459, 1.06286], + "rotation": [-157.5, 0, 0], + "uv": { + "east": {"uv": [64, 22], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 21], "uv_size": [-3, 0.5]}, + "up": {"uv": [23.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [61.5, 29], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 1.49939, 11.25429], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [180, 0, 0], + "uv": { + "east": {"uv": [65, 9], "uv_size": [-3, 0.5]}, + "west": {"uv": [65, 8], "uv_size": [-3, 0.5]}, + "up": {"uv": [62.5, 18], "uv_size": [-0.5, 3]}, + "down": {"uv": [22.5, 65], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 2.98326, 10.8399], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [157.5, 0, 0], + "uv": { + "east": {"uv": [11, 62], "uv_size": [-3, 0.5]}, + "west": {"uv": [65, 7], "uv_size": [-3, 0.5]}, + "up": {"uv": [11.5, 62], "uv_size": [-0.5, 3]}, + "down": {"uv": [62.5, 14], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.1956, 9.88921], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [65, 2], "uv_size": [-3, 0.5]}, + "west": {"uv": [65, 1], "uv_size": [-3, 0.5]}, + "up": {"uv": [3.5, 62], "uv_size": [-0.5, 3]}, + "down": {"uv": [7.5, 65], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.95183, 8.54694], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [112.5, 0, 0], + "uv": { + "east": {"uv": [65, 0], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 61], "uv_size": [-3, 0.5]}, + "up": {"uv": [1.5, 62], "uv_size": [-0.5, 3]}, + "down": {"uv": [2.5, 65], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 5.13684, 7.01745], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [64, 57], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 56], "uv_size": [-3, 0.5]}, + "up": {"uv": [61.5, 58], "uv_size": [-0.5, 3]}, + "down": {"uv": [60.5, 64], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 4.72246, 5.53358], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [67.5, 0, 0], + "uv": { + "east": {"uv": [64, 55], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 54], "uv_size": [-3, 0.5]}, + "up": {"uv": [53.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [54.5, 64], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 3.77176, 4.32125], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [64, 49], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 48], "uv_size": [-3, 0.5]}, + "up": {"uv": [51.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [61.5, 54], "uv_size": [-0.5, -3]} + } + }, + { + "origin": [-9.54, 2.42949, 3.56501], + "size": [0.54, 0.54, 3.24], + "pivot": [-9.27, 9.34399, 8.93715], + "rotation": [22.5, 0, 0], + "uv": { + "east": {"uv": [64, 43], "uv_size": [-3, 0.5]}, + "west": {"uv": [64, 42], "uv_size": [-3, 0.5]}, + "up": {"uv": [49.5, 61], "uv_size": [-0.5, 3]}, + "down": {"uv": [50.5, 64], "uv_size": [-0.5, -3]} + } + } + ] + }, + { + "name": "zuodaxiaolunlianjie2", + "parent": "lun", + "pivot": [-8.88, 9, 5], + "cubes": [ + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "uv": { + "north": {"uv": [64.5, 43], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [64.5, 45], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [45.5, 64], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [64.5, 44], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [46.5, 64], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [64.5, 46.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [64.5, 47], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [64.5, 49], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [49.5, 64], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [64.5, 48], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [50.5, 64], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [51.5, 64.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [64.5, 52], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [54.5, 64], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [64.5, 53], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [53.5, 64], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [64.5, 54], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [55.5, 64.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [64.5, 55], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [64.5, 57], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [64.5, 56], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [56.5, 64], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [58.5, 64], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [64.5, 58.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [180, 0, 0], + "uv": { + "north": {"uv": [59.5, 64], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [64.5, 60], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [60.5, 64], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [64.5, 59], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [64.5, 61], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [64.5, 62.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [63.5, 64], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [65.5, 0], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [64.5, 64], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [64.5, 63], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [1.5, 65], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [65.5, 1.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [2.5, 65], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [65.5, 3], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [3.5, 65], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [65.5, 2], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [4.5, 65], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [65.5, 4.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-9.18, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [-9, 9, 5], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [5.5, 65], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [65.5, 6], "uv_size": [-0.5, 0.5]}, + "south": {"uv": [6.5, 65], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [65.5, 5], "uv_size": [-0.5, 0.5]}, + "up": {"uv": [7.5, 65], "uv_size": [-0.5, 0.5]}, + "down": {"uv": [65.5, 7.5], "uv_size": [-0.5, -0.5]} + } + } + ] + }, + { + "name": "w_lt", + "parent": "root", + "pivot": [8.16, 9.04921, 5], + "cubes": [ + { + "origin": [7.56, 0, 3.2], + "size": [1.2, 1.2, 3.6], + "uv": { + "east": {"uv": [18, 31], "uv_size": [3.5, 1]}, + "west": {"uv": [18, 32], "uv_size": [3.5, 1]}, + "up": {"uv": [51, 26], "uv_size": [1, 3.5]}, + "down": {"uv": [52, 29.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 1.59221, 2.75536], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-22.5, 0, 0], + "uv": { + "east": {"uv": [53, 28], "uv_size": [3.5, 1]}, + "west": {"uv": [53, 29], "uv_size": [3.5, 1]}, + "up": {"uv": [53, 52], "uv_size": [1, 3.5]}, + "down": {"uv": [54, 3.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 3.70451, 0.29498], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-67.5, 0, 0], + "uv": { + "east": {"uv": [54, 50], "uv_size": [3.5, 1]}, + "west": {"uv": [55, 0], "uv_size": [3.5, 1]}, + "up": {"uv": [55, 18], "uv_size": [1, 3.5]}, + "down": {"uv": [24, 58.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 2.89306, 1.73525], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [54, 48], "uv_size": [3.5, 1]}, + "west": {"uv": [54, 49], "uv_size": [3.5, 1]}, + "up": {"uv": [17, 54], "uv_size": [1, 3.5]}, + "down": {"uv": [54, 55.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 3.90303, -1.34618], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [56, 12], "uv_size": [3.5, 1]}, + "west": {"uv": [56, 36], "uv_size": [3.5, 1]}, + "up": {"uv": [38, 56], "uv_size": [1, 3.5]}, + "down": {"uv": [39, 59.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 3.45838, -2.93839], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-112.5, 0, 0], + "uv": { + "east": {"uv": [56, 10], "uv_size": [3.5, 1]}, + "west": {"uv": [56, 11], "uv_size": [3.5, 1]}, + "up": {"uv": [35, 56], "uv_size": [1, 3.5]}, + "down": {"uv": [36, 59.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 0.99801, -5.0507], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-157.5, 0, 0], + "uv": { + "east": {"uv": [55, 3], "uv_size": [3.5, 1]}, + "west": {"uv": [55, 30], "uv_size": [3.5, 1]}, + "up": {"uv": [55, 52], "uv_size": [1, 3.5]}, + "down": {"uv": [56, 21.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 2.43828, -4.23924], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 8.72763, 0.77539], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [55, 1], "uv_size": [3.5, 1]}, + "west": {"uv": [55, 2], "uv_size": [3.5, 1]}, + "up": {"uv": [25, 55], "uv_size": [1, 3.5]}, + "down": {"uv": [26, 58.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 0.64316, 11.64921], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [-180, 0, 0], + "uv": { + "east": {"uv": [57, 51], "uv_size": [3.5, 1]}, + "west": {"uv": [57, 52], "uv_size": [3.5, 1]}, + "up": {"uv": [53, 57], "uv_size": [1, 3.5]}, + "down": {"uv": [54, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 2.23537, 11.20457], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [157.5, 0, 0], + "uv": { + "east": {"uv": [57, 29], "uv_size": [3.5, 1]}, + "west": {"uv": [31, 57], "uv_size": [3.5, 1]}, + "up": {"uv": [57, 38], "uv_size": [1, 3.5]}, + "down": {"uv": [57, 45.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 3.53622, 10.18446], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [57, 27], "uv_size": [3.5, 1]}, + "west": {"uv": [57, 28], "uv_size": [3.5, 1]}, + "up": {"uv": [29, 57], "uv_size": [1, 3.5]}, + "down": {"uv": [30, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 4.34767, 8.74419], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [112.5, 0, 0], + "uv": { + "east": {"uv": [57, 23], "uv_size": [3.5, 1]}, + "west": {"uv": [57, 26], "uv_size": [3.5, 1]}, + "up": {"uv": [27, 57], "uv_size": [1, 3.5]}, + "down": {"uv": [28, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 3.08144, 4.20997], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [57, 9], "uv_size": [3.5, 1]}, + "west": {"uv": [57, 18], "uv_size": [3.5, 1]}, + "up": {"uv": [57, 19], "uv_size": [1, 3.5]}, + "down": {"uv": [23, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 1.64116, 3.39852], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [22.5, 0, 0], + "uv": { + "east": {"uv": [56, 55], "uv_size": [3.5, 1]}, + "west": {"uv": [57, 8], "uv_size": [3.5, 1]}, + "up": {"uv": [10, 57], "uv_size": [1, 3.5]}, + "down": {"uv": [11, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 4.10154, 5.51082], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [67.5, 0, 0], + "uv": { + "east": {"uv": [56, 47], "uv_size": [3.5, 1]}, + "west": {"uv": [53, 56], "uv_size": [3.5, 1]}, + "up": {"uv": [57, 4], "uv_size": [1, 3.5]}, + "down": {"uv": [9, 60.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [7.56, 4.54618, 7.10303], + "size": [1.2, 1.2, 3.6], + "pivot": [8.16, 9.37079, 9.22461], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [56, 37], "uv_size": [3.5, 1]}, + "west": {"uv": [56, 46], "uv_size": [3.5, 1]}, + "up": {"uv": [56, 51], "uv_size": [1, 3.5]}, + "down": {"uv": [52, 59.5], "uv_size": [1, -3.5]} + } + } + ] + }, + { + "name": "lun2", + "parent": "w_lt", + "pivot": [9, 9, 5] + }, + { + "name": "zuolunlunfu", + "parent": "lun2", + "pivot": [9, 9, 5], + "cubes": [ + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "uv": { + "north": {"uv": [9, 49], "uv_size": [0.5, 7.5]}, + "east": {"uv": [31, 36], "uv_size": [1, 7.5]}, + "south": {"uv": [10, 49], "uv_size": [0.5, 7.5]}, + "west": {"uv": [32, 36], "uv_size": [1, 7.5]}, + "up": {"uv": [64, 11], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 13], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [11, 49], "uv_size": [0.5, 7.5]}, + "east": {"uv": [33, 36], "uv_size": [1, 7.5]}, + "south": {"uv": [22, 51], "uv_size": [0.5, 7.5]}, + "west": {"uv": [34, 36], "uv_size": [1, 7.5]}, + "up": {"uv": [64, 13], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 17], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [40, 51], "uv_size": [0.5, 7.5]}, + "east": {"uv": [35, 36], "uv_size": [1, 7.5]}, + "south": {"uv": [41, 51], "uv_size": [0.5, 7.5]}, + "west": {"uv": [36, 36], "uv_size": [1, 7.5]}, + "up": {"uv": [17, 64], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 18], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [42, 51], "uv_size": [0.5, 7.5]}, + "east": {"uv": [0, 37], "uv_size": [1, 7.5]}, + "south": {"uv": [43, 51], "uv_size": [0.5, 7.5]}, + "west": {"uv": [1, 37], "uv_size": [1, 7.5]}, + "up": {"uv": [18, 64], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 19], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [180, 0, 0], + "uv": { + "north": {"uv": [49, 51], "uv_size": [0.5, 7.5]}, + "east": {"uv": [2, 37], "uv_size": [1, 7.5]}, + "south": {"uv": [50, 51], "uv_size": [0.5, 7.5]}, + "west": {"uv": [3, 37], "uv_size": [1, 7.5]}, + "up": {"uv": [19, 64], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 20], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [51, 51], "uv_size": [0.5, 7.5]}, + "east": {"uv": [4, 37], "uv_size": [1, 7.5]}, + "south": {"uv": [18, 52], "uv_size": [0.5, 7.5]}, + "west": {"uv": [5, 37], "uv_size": [1, 7.5]}, + "up": {"uv": [20, 64], "uv_size": [0.5, 1]}, + "down": {"uv": [21, 65], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [19, 52], "uv_size": [0.5, 7.5]}, + "east": {"uv": [6, 37], "uv_size": [1, 7.5]}, + "south": {"uv": [20, 52], "uv_size": [0.5, 7.5]}, + "west": {"uv": [7, 37], "uv_size": [1, 7.5]}, + "up": {"uv": [64, 21], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 23], "uv_size": [0.5, -1]} + } + }, + { + "origin": [8.1, 1.2, 4.52], + "size": [0.12, 7.68, 0.96], + "pivot": [9, 9, 5], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [21, 52], "uv_size": [0.5, 7.5]}, + "east": {"uv": [8, 37], "uv_size": [1, 7.5]}, + "south": {"uv": [37, 52], "uv_size": [0.5, 7.5]}, + "west": {"uv": [9, 37], "uv_size": [1, 7.5]}, + "up": {"uv": [23, 64], "uv_size": [0.5, 1]}, + "down": {"uv": [64, 24], "uv_size": [0.5, -1]} + } + } + ] + }, + { + "name": "zuowailun", + "parent": "lun2", + "pivot": [9.84, 9, 5], + "cubes": [ + { + "origin": [9, 0.9, 3.38], + "size": [0.54, 0.54, 3.24], + "uv": { + "east": {"uv": [60, 5], "uv_size": [3, 0.5]}, + "west": {"uv": [60, 14], "uv_size": [3, 0.5]}, + "up": {"uv": [37, 60], "uv_size": [0.5, 3]}, + "down": {"uv": [38, 63], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 2.38387, 2.96561], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-22.5, 0, 0], + "uv": { + "east": {"uv": [60, 47], "uv_size": [3, 0.5]}, + "west": {"uv": [1, 61], "uv_size": [3, 0.5]}, + "up": {"uv": [4, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [5, 64], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 3.5962, 2.01492], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [9, 61], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 10], "uv_size": [3, 0.5]}, + "up": {"uv": [61, 11], "uv_size": [0.5, 3]}, + "down": {"uv": [61, 21], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.35244, 0.67265], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-67.5, 0, 0], + "uv": { + "east": {"uv": [61, 3], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 6], "uv_size": [3, 0.5]}, + "up": {"uv": [6, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [61, 10], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.53745, -0.85684], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [61, 40], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 41], "uv_size": [3, 0.5]}, + "up": {"uv": [42, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [43, 64], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.12306, -2.34071], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-112.5, 0, 0], + "uv": { + "east": {"uv": [61, 32], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 33], "uv_size": [3, 0.5]}, + "up": {"uv": [61, 34], "uv_size": [0.5, 3]}, + "down": {"uv": [61, 40], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 3.17237, -3.55304], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [61, 23], "uv_size": [3, 0.5]}, + "west": {"uv": [27, 61], "uv_size": [3, 0.5]}, + "up": {"uv": [61, 29], "uv_size": [0.5, 3]}, + "down": {"uv": [30, 64], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 1.8301, -4.30928], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 8.74459, 1.06286], + "rotation": [-157.5, 0, 0], + "uv": { + "east": {"uv": [61, 21], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 22], "uv_size": [3, 0.5]}, + "up": {"uv": [23, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [61, 29], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 1.49939, 11.25429], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [180, 0, 0], + "uv": { + "east": {"uv": [62, 8], "uv_size": [3, 0.5]}, + "west": {"uv": [62, 9], "uv_size": [3, 0.5]}, + "up": {"uv": [62, 18], "uv_size": [0.5, 3]}, + "down": {"uv": [22, 65], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 2.98326, 10.8399], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [157.5, 0, 0], + "uv": { + "east": {"uv": [62, 7], "uv_size": [3, 0.5]}, + "west": {"uv": [8, 62], "uv_size": [3, 0.5]}, + "up": {"uv": [11, 62], "uv_size": [0.5, 3]}, + "down": {"uv": [62, 14], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.1956, 9.88921], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [62, 1], "uv_size": [3, 0.5]}, + "west": {"uv": [62, 2], "uv_size": [3, 0.5]}, + "up": {"uv": [3, 62], "uv_size": [0.5, 3]}, + "down": {"uv": [7, 65], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.95183, 8.54694], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [112.5, 0, 0], + "uv": { + "east": {"uv": [61, 61], "uv_size": [3, 0.5]}, + "west": {"uv": [62, 0], "uv_size": [3, 0.5]}, + "up": {"uv": [1, 62], "uv_size": [0.5, 3]}, + "down": {"uv": [2, 65], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 5.13684, 7.01745], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [61, 56], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 57], "uv_size": [3, 0.5]}, + "up": {"uv": [61, 58], "uv_size": [0.5, 3]}, + "down": {"uv": [60, 64], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 4.72246, 5.53358], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [67.5, 0, 0], + "uv": { + "east": {"uv": [61, 54], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 55], "uv_size": [3, 0.5]}, + "up": {"uv": [53, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [54, 64], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 3.77176, 4.32125], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [61, 48], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 49], "uv_size": [3, 0.5]}, + "up": {"uv": [51, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [61, 54], "uv_size": [0.5, -3]} + } + }, + { + "origin": [9, 2.42949, 3.56501], + "size": [0.54, 0.54, 3.24], + "pivot": [9.27, 9.34399, 8.93715], + "rotation": [22.5, 0, 0], + "uv": { + "east": {"uv": [61, 42], "uv_size": [3, 0.5]}, + "west": {"uv": [61, 43], "uv_size": [3, 0.5]}, + "up": {"uv": [49, 61], "uv_size": [0.5, 3]}, + "down": {"uv": [50, 64], "uv_size": [0.5, -3]} + } + } + ] + }, + { + "name": "zuodaxiaolunlianjie", + "parent": "lun2", + "pivot": [8.88, 9, 5], + "cubes": [ + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "uv": { + "north": {"uv": [64, 43], "uv_size": [0.5, 0.5]}, + "east": {"uv": [64, 44], "uv_size": [0.5, 0.5]}, + "south": {"uv": [45, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [64, 45], "uv_size": [0.5, 0.5]}, + "up": {"uv": [46, 64], "uv_size": [0.5, 0.5]}, + "down": {"uv": [64, 46.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [64, 47], "uv_size": [0.5, 0.5]}, + "east": {"uv": [64, 48], "uv_size": [0.5, 0.5]}, + "south": {"uv": [49, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [64, 49], "uv_size": [0.5, 0.5]}, + "up": {"uv": [50, 64], "uv_size": [0.5, 0.5]}, + "down": {"uv": [51, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [-90, 0, 0], + "uv": { + "north": {"uv": [64, 52], "uv_size": [0.5, 0.5]}, + "east": {"uv": [53, 64], "uv_size": [0.5, 0.5]}, + "south": {"uv": [64, 53], "uv_size": [0.5, 0.5]}, + "west": {"uv": [54, 64], "uv_size": [0.5, 0.5]}, + "up": {"uv": [64, 54], "uv_size": [0.5, 0.5]}, + "down": {"uv": [55, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [-135, 0, 0], + "uv": { + "north": {"uv": [64, 55], "uv_size": [0.5, 0.5]}, + "east": {"uv": [56, 64], "uv_size": [0.5, 0.5]}, + "south": {"uv": [64, 56], "uv_size": [0.5, 0.5]}, + "west": {"uv": [64, 57], "uv_size": [0.5, 0.5]}, + "up": {"uv": [58, 64], "uv_size": [0.5, 0.5]}, + "down": {"uv": [64, 58.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [180, 0, 0], + "uv": { + "north": {"uv": [59, 64], "uv_size": [0.5, 0.5]}, + "east": {"uv": [64, 59], "uv_size": [0.5, 0.5]}, + "south": {"uv": [60, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [64, 60], "uv_size": [0.5, 0.5]}, + "up": {"uv": [64, 61], "uv_size": [0.5, 0.5]}, + "down": {"uv": [64, 62.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [63, 64], "uv_size": [0.5, 0.5]}, + "east": {"uv": [64, 63], "uv_size": [0.5, 0.5]}, + "south": {"uv": [64, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [65, 0], "uv_size": [0.5, 0.5]}, + "up": {"uv": [1, 65], "uv_size": [0.5, 0.5]}, + "down": {"uv": [65, 1.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [90, 0, 0], + "uv": { + "north": {"uv": [2, 65], "uv_size": [0.5, 0.5]}, + "east": {"uv": [65, 2], "uv_size": [0.5, 0.5]}, + "south": {"uv": [3, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [65, 3], "uv_size": [0.5, 0.5]}, + "up": {"uv": [4, 65], "uv_size": [0.5, 0.5]}, + "down": {"uv": [65, 4.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [8.64, 1.02, 4.82], + "size": [0.54, 0.18, 0.36], + "pivot": [9, 9, 5], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [5, 65], "uv_size": [0.5, 0.5]}, + "east": {"uv": [65, 5], "uv_size": [0.5, 0.5]}, + "south": {"uv": [6, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [65, 6], "uv_size": [0.5, 0.5]}, + "up": {"uv": [7, 65], "uv_size": [0.5, 0.5]}, + "down": {"uv": [65, 7.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "w_lb", + "parent": "root", + "pivot": [6.9, 2.76871, -9.4], + "cubes": [ + { + "origin": [6.6, 0.81989, -12.82149], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 3.10995, -10.56575], + "rotation": [180, 0, 0], + "uv": { + "east": {"uv": [24, 62], "uv_size": [2, 0.5]}, + "west": {"uv": [62, 26], "uv_size": [2, 0.5]}, + "up": {"uv": [27, 62], "uv_size": [0.5, 2]}, + "down": {"uv": [62, 29], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 1.54419, -12.23862], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 3.10995, -10.56575], + "rotation": [-135, 0, 0], + "uv": { + "east": {"uv": [63, 14], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 15], "uv_size": [2, 0.5]}, + "up": {"uv": [63, 18], "uv_size": [0.5, 2]}, + "down": {"uv": [24, 65], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 1.6442, -11.31431], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 3.10995, -10.56575], + "rotation": [-90, 0, 0], + "uv": { + "east": {"uv": [63, 28], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 29], "uv_size": [2, 0.5]}, + "up": {"uv": [29, 63], "uv_size": [0.5, 2]}, + "down": {"uv": [63, 32], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 1.06133, -10.59001], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 3.10995, -10.56575], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [63, 20], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 27], "uv_size": [2, 0.5]}, + "up": {"uv": [25, 63], "uv_size": [0.5, 2]}, + "down": {"uv": [28, 65], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 0.86132, -9.90713], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 2.42707, -8.23425], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [63, 50], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 51], "uv_size": [2, 0.5]}, + "up": {"uv": [48, 63], "uv_size": [0.5, 2]}, + "down": {"uv": [52, 65], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 0.96132, -8.98281], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 2.42707, -8.23425], + "rotation": [90, 0, 0], + "uv": { + "east": {"uv": [63, 39], "uv_size": [2, 0.5]}, + "west": {"uv": [45, 63], "uv_size": [2, 0.5]}, + "up": {"uv": [63, 46], "uv_size": [0.5, 2]}, + "down": {"uv": [47, 65], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 0.37845, -8.25851], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 2.42707, -8.23425], + "rotation": [135, 0, 0], + "uv": { + "east": {"uv": [38, 63], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 38], "uv_size": [2, 0.5]}, + "up": {"uv": [44, 63], "uv_size": [0.5, 2]}, + "down": {"uv": [63, 46], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.6, 0.13701, -10.49], + "size": [0.6, 0.6, 2.18], + "pivot": [6.9, 2.42707, -8.23425], + "rotation": [0, 0, 0], + "uv": { + "east": {"uv": [63, 34], "uv_size": [2, 0.5]}, + "west": {"uv": [63, 35], "uv_size": [2, 0.5]}, + "up": {"uv": [63, 36], "uv_size": [0.5, 2]}, + "down": {"uv": [37, 65], "uv_size": [0.5, -2]} + } + }, + { + "origin": [6.8, 0.73701, -9.64], + "size": [0.2, 4.065, 0.48], + "pivot": [6.9, 2.76951, -9.4], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [59, 58], "uv_size": [0.5, 4]}, + "east": {"uv": [60, 0], "uv_size": [0.5, 4]}, + "south": {"uv": [60, 10], "uv_size": [0.5, 4]}, + "west": {"uv": [18, 60], "uv_size": [0.5, 4]} + } + }, + { + "origin": [6.8, 0.73701, -9.64], + "size": [0.2, 4.065, 0.48], + "pivot": [6.9, 2.76951, -9.4], + "rotation": [135, 0, 0], + "uv": { + "north": {"uv": [19, 60], "uv_size": [0.5, 4]}, + "east": {"uv": [20, 60], "uv_size": [0.5, 4]}, + "south": {"uv": [21, 60], "uv_size": [0.5, 4]}, + "west": {"uv": [35, 60], "uv_size": [0.5, 4]} + } + } + ] + }, + { + "name": "bone", + "parent": "root", + "pivot": [0, 0, 5] + }, + { + "name": "zuoyishen", + "parent": "bone", + "pivot": [6.9, 14.50172, -13.77877], + "cubes": [ + { + "origin": [6.3, 19.92, -5.68], + "size": [1.2, 0.6, 12], + "pivot": [6, 19.92, -4.48], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [63, 60], "uv_size": [1, 0.5]}, + "east": {"uv": [0, 46], "uv_size": [12, 0.5]}, + "south": {"uv": [4, 64], "uv_size": [1, 0.5]}, + "west": {"uv": [44, 46], "uv_size": [12, 0.5]}, + "up": {"uv": [23, 33], "uv_size": [1, 12]}, + "down": {"uv": [10, 46], "uv_size": [1, -12]} + } + } + ] + }, + { + "name": "jiaota", + "parent": "zuoyishen", + "pivot": [6.9, 4.09319, -17.09725], + "cubes": [ + { + "origin": [3, 3.72, -19], + "size": [4.44, 0.12, 2.76], + "pivot": [6, 3, -17.8], + "rotation": [-15, 0, 0], + "uv": { + "north": {"uv": [59, 16], "uv_size": [4.5, 0.5]}, + "east": {"uv": [60, 15], "uv_size": [3, 0.5]}, + "south": {"uv": [59, 17], "uv_size": [4.5, 0.5]}, + "west": {"uv": [60, 46], "uv_size": [3, 0.5]}, + "up": {"uv": [0, 34], "uv_size": [4.5, 3]}, + "down": {"uv": [5, 37], "uv_size": [4.5, -3]} + } + }, + { + "origin": [6.24, 3.46245, -17.90926], + "size": [0.96, 1.07, 1.8], + "pivot": [6.9, 3.99245, -17.09926], + "rotation": [0, 15, 90], + "uv": { + "north": {"uv": [62, 60], "uv_size": [1, 1]}, + "east": {"uv": [59, 30], "uv_size": [2, 1]}, + "south": {"uv": [61, 62], "uv_size": [1, 1]}, + "up": {"uv": [58, 4], "uv_size": [1, 2]}, + "down": {"uv": [51, 61], "uv_size": [1, -2]} + } + }, + { + "origin": [6.6, 3.79319, -18.89725], + "size": [0.6, 0.6, 3.6], + "pivot": [6.9, 4.09319, -17.09725], + "rotation": [-10.72858, 10.54529, 44.00703], + "uv": { + "north": {"uv": [64, 42], "uv_size": [0.5, 0.5]}, + "east": {"uv": [59, 50], "uv_size": [3.5, 0.5]}, + "south": {"uv": [43, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [60, 4], "uv_size": [3.5, 0.5]}, + "up": {"uv": [36, 60], "uv_size": [0.5, 3.5]}, + "down": {"uv": [60, 39.5], "uv_size": [0.5, -3.5]} + } + } + ] + }, + { + "name": "jiaota2", + "parent": "zuoyishen", + "pivot": [-6.9, 4.09319, -17.09725], + "cubes": [ + { + "origin": [-7.44, 3.72, -19], + "size": [4.44, 0.12, 2.76], + "pivot": [-6, 3, -17.8], + "rotation": [-15, 0, 0], + "uv": { + "north": {"uv": [63.5, 16], "uv_size": [-4.5, 0.5]}, + "east": {"uv": [63, 46], "uv_size": [-3, 0.5]}, + "south": {"uv": [63.5, 17], "uv_size": [-4.5, 0.5]}, + "west": {"uv": [63, 15], "uv_size": [-3, 0.5]}, + "up": {"uv": [4.5, 34], "uv_size": [-4.5, 3]}, + "down": {"uv": [9.5, 37], "uv_size": [-4.5, -3]} + } + }, + { + "origin": [-7.2, 3.46245, -17.90926], + "size": [0.96, 1.07, 1.8], + "pivot": [-6.9, 3.99245, -17.09926], + "rotation": [0, -15, -90], + "uv": { + "north": {"uv": [63, 60], "uv_size": [-1, 1]}, + "south": {"uv": [62, 62], "uv_size": [-1, 1]}, + "west": {"uv": [61, 30], "uv_size": [-2, 1]}, + "up": {"uv": [59, 4], "uv_size": [-1, 2]}, + "down": {"uv": [52, 61], "uv_size": [-1, -2]} + } + }, + { + "origin": [-7.2, 3.79319, -18.89725], + "size": [0.6, 0.6, 3.6], + "pivot": [-6.9, 4.09319, -17.09725], + "rotation": [-10.72858, -10.54529, -44.00703], + "uv": { + "north": {"uv": [64.5, 42], "uv_size": [-0.5, 0.5]}, + "east": {"uv": [63.5, 4], "uv_size": [-3.5, 0.5]}, + "south": {"uv": [43.5, 64], "uv_size": [-0.5, 0.5]}, + "west": {"uv": [62.5, 50], "uv_size": [-3.5, 0.5]}, + "up": {"uv": [36.5, 60], "uv_size": [-0.5, 3.5]}, + "down": {"uv": [60.5, 39.5], "uv_size": [-0.5, -3.5]} + } + } + ] + }, + { + "name": "bashou", + "parent": "zuoyishen", + "pivot": [6, 19.44, -4.78], + "cubes": [ + { + "origin": [6, 13.44, 6.2], + "size": [0.6, 11.64, 0.6], + "pivot": [5.4, 13.5, 7.4], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [35, 44], "uv_size": [0.5, 11.5]}, + "east": {"uv": [36, 44], "uv_size": [0.5, 11.5]}, + "south": {"uv": [23, 45], "uv_size": [0.5, 11.5]}, + "west": {"uv": [12, 46], "uv_size": [0.5, 11.5]}, + "up": {"uv": [64, 33], "uv_size": [0.5, 0.5]}, + "down": {"uv": [34, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [5.85, 24.75311, 8.66642], + "size": [0.9, 0.9, 3.6], + "pivot": [6.3, 25.20311, 10.46642], + "rotation": [-1.5914, 1.59079, 44.9779], + "uv": { + "north": {"uv": [62, 31], "uv_size": [1, 1]}, + "east": {"uv": [51, 30], "uv_size": [3.5, 1]}, + "south": {"uv": [62, 53], "uv_size": [1, 1]}, + "west": {"uv": [52, 36], "uv_size": [3.5, 1]}, + "up": {"uv": [38, 52], "uv_size": [1, 3.5]}, + "down": {"uv": [39, 55.5], "uv_size": [1, -3.5]} + } + }, + { + "origin": [6, 25.56, 7.46], + "size": [0.6, 0.6, 4.32], + "pivot": [6, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [64, 41], "uv_size": [0.5, 0.5]}, + "east": {"uv": [58, 44], "uv_size": [4.5, 0.5]}, + "south": {"uv": [42, 64], "uv_size": [0.5, 0.5]}, + "west": {"uv": [58, 45], "uv_size": [4.5, 0.5]}, + "up": {"uv": [26, 59], "uv_size": [0.5, 4.5]}, + "down": {"uv": [59, 42.5], "uv_size": [0.5, -4.5]} + } + } + ] + }, + { + "name": "kuangjia", + "parent": "zuoyishen", + "pivot": [6, 13.5, 7.4], + "cubes": [ + { + "origin": [6.6, 8.7, -8.2], + "size": [0.6, 11.4, 0.6], + "pivot": [6, 6.3, -7], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [44, 48], "uv_size": [0.5, 11.5]}, + "east": {"uv": [45, 48], "uv_size": [0.5, 11.5]}, + "south": {"uv": [46, 48], "uv_size": [0.5, 11.5]}, + "west": {"uv": [47, 48], "uv_size": [0.5, 11.5]}, + "up": {"uv": [38, 64], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [6.48, 6.3, -8.32], + "size": [0.84, 2.4, 0.84], + "pivot": [6, 6.3, -7], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [21, 28], "uv_size": [1, 2.5]}, + "east": {"uv": [58, 48], "uv_size": [1, 2.5]}, + "south": {"uv": [7, 59], "uv_size": [1, 2.5]}, + "west": {"uv": [8, 59], "uv_size": [1, 2.5]}, + "up": {"uv": [8, 63], "uv_size": [1, 1]} + } + }, + { + "origin": [6.6, 6.96, 4.7], + "size": [0.6, 6.6, 0.6], + "uv": { + "north": {"uv": [55, 57], "uv_size": [0.5, 6.5]}, + "east": {"uv": [56, 57], "uv_size": [0.5, 6.5]}, + "south": {"uv": [57, 56], "uv_size": [0.5, 6.5]}, + "west": {"uv": [12, 58], "uv_size": [0.5, 6.5]}, + "up": {"uv": [64, 32], "uv_size": [0.5, 0.5]}, + "down": {"uv": [33, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [6.6, 19.44, -5.98], + "size": [0.6, 0.6, 13.02], + "pivot": [6, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [64, 36], "uv_size": [0.5, 0.5]}, + "east": {"uv": [38, 10], "uv_size": [13, 0.5]}, + "south": {"uv": [64, 37], "uv_size": [0.5, 0.5]}, + "west": {"uv": [38, 11], "uv_size": [13, 0.5]}, + "up": {"uv": [40, 38], "uv_size": [0.5, 13]}, + "down": {"uv": [41, 51], "uv_size": [0.5, -13]} + } + }, + { + "origin": [6.8, 15.24, -6.46], + "size": [0.3, 3, 13.44], + "pivot": [5.9, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [60, 53], "uv_size": [0.5, 3]}, + "east": {"uv": [0, 25], "uv_size": [13.5, 3]}, + "south": {"uv": [60, 58], "uv_size": [0.5, 3]}, + "west": {"uv": [26, 0], "uv_size": [13.5, 3]}, + "up": {"uv": [22, 37], "uv_size": [0.5, 13.5]}, + "down": {"uv": [37, 51.5], "uv_size": [0.5, -13.5]} + } + }, + { + "origin": [6.6, 13.5, 6.2], + "size": [0.6, 6, 0.6], + "pivot": [6, 13.5, 7.4], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [17, 58], "uv_size": [0.5, 6]}, + "east": {"uv": [31, 58], "uv_size": [0.5, 6]}, + "south": {"uv": [32, 58], "uv_size": [0.5, 6]}, + "west": {"uv": [33, 58], "uv_size": [0.5, 6]}, + "up": {"uv": [35, 64], "uv_size": [0.5, 0.5]}, + "down": {"uv": [36, 64.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "youyishen", + "parent": "bone", + "pivot": [-6.9, 14.50172, -13.77877], + "cubes": [ + { + "origin": [-7.5, 19.92, -5.68], + "size": [1.2, 0.6, 12], + "pivot": [-6, 19.92, -4.48], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [64, 24], "uv_size": [1, 0.5]}, + "east": {"uv": [0, 47], "uv_size": [12, 0.5]}, + "south": {"uv": [64, 25], "uv_size": [1, 0.5]}, + "west": {"uv": [47, 35], "uv_size": [12, 0.5]}, + "up": {"uv": [11, 34], "uv_size": [1, 12]}, + "down": {"uv": [12, 46], "uv_size": [1, -12]} + } + } + ] + }, + { + "name": "bashou2", + "parent": "youyishen", + "pivot": [-6, 19.44, -4.78], + "cubes": [ + { + "origin": [-6.75, 24.75311, 8.66642], + "size": [0.9, 0.9, 3.6], + "pivot": [-6.3, 25.20311, 10.46642], + "rotation": [-1.5914, -1.59079, -44.9779], + "uv": { + "north": {"uv": [63, 31], "uv_size": [-1, 1]}, + "east": {"uv": [55.5, 36], "uv_size": [-3.5, 1]}, + "south": {"uv": [63, 53], "uv_size": [-1, 1]}, + "west": {"uv": [54.5, 30], "uv_size": [-3.5, 1]}, + "up": {"uv": [39, 52], "uv_size": [-1, 3.5]}, + "down": {"uv": [40, 55.5], "uv_size": [-1, -3.5]} + } + }, + { + "origin": [-6.6, 13.44, 6.2], + "size": [0.6, 11.64, 0.6], + "pivot": [-5.4, 13.5, 7.4], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [48, 48], "uv_size": [0.5, 11.5]}, + "east": {"uv": [0, 49], "uv_size": [0.5, 11.5]}, + "south": {"uv": [1, 49], "uv_size": [0.5, 11.5]}, + "west": {"uv": [2, 49], "uv_size": [0.5, 11.5]}, + "up": {"uv": [8, 65], "uv_size": [0.5, 0.5]}, + "down": {"uv": [65, 8.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-6.6, 25.56, 7.46], + "size": [0.6, 0.6, 4.32], + "pivot": [-6, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [9, 65], "uv_size": [0.5, 0.5]}, + "east": {"uv": [59, 24], "uv_size": [4.5, 0.5]}, + "south": {"uv": [65, 9], "uv_size": [0.5, 0.5]}, + "west": {"uv": [59, 25], "uv_size": [4.5, 0.5]}, + "up": {"uv": [40, 59], "uv_size": [0.5, 4.5]}, + "down": {"uv": [41, 63.5], "uv_size": [0.5, -4.5]} + } + } + ] + }, + { + "name": "kuangjia2", + "parent": "youyishen", + "pivot": [-6, 13.5, 7.4], + "cubes": [ + { + "origin": [-7.2, 2.79856, -11.94666], + "size": [0.6, 12.55, 0.6], + "pivot": [-6.9, 14.49856, -13.80666], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [27, 44], "uv_size": [0.5, 12.5]}, + "east": {"uv": [28, 44], "uv_size": [0.5, 12.5]}, + "south": {"uv": [29, 44], "uv_size": [0.5, 12.5]}, + "west": {"uv": [30, 44], "uv_size": [0.5, 12.5]}, + "down": {"uv": [10, 65.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [6.6, 2.79856, -11.94666], + "size": [0.6, 12.55, 0.6], + "pivot": [6.9, 14.49856, -13.80666], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [31, 44], "uv_size": [0.5, 12.5]}, + "east": {"uv": [32, 44], "uv_size": [0.5, 12.5]}, + "south": {"uv": [33, 44], "uv_size": [0.5, 12.5]}, + "west": {"uv": [34, 44], "uv_size": [0.5, 12.5]}, + "down": {"uv": [65, 22.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-7.2, 7.08, -13.88], + "size": [0.6, 0.6, 22.6], + "pivot": [-6, 6, -7], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [65, 10], "uv_size": [0.5, 0.5]}, + "east": {"uv": [24, 35], "uv_size": [22.5, 0.5]}, + "south": {"uv": [11, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 15], "uv_size": [22.5, 0.5]}, + "up": {"uv": [13, 35], "uv_size": [0.5, 22.5]}, + "down": {"uv": [14, 57.5], "uv_size": [0.5, -22.5]} + } + }, + { + "origin": [6.6, 7.08, -13.88], + "size": [0.6, 0.6, 22.6], + "pivot": [6, 6, -7], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [65, 23], "uv_size": [0.5, 0.5]}, + "east": {"uv": [36, 16], "uv_size": [22.5, 0.5]}, + "south": {"uv": [24, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 17], "uv_size": [22.5, 0.5]}, + "up": {"uv": [15, 35], "uv_size": [0.5, 22.5]}, + "down": {"uv": [16, 57.5], "uv_size": [0.5, -22.5]} + } + }, + { + "origin": [-7.2, 8.7, -8.2], + "size": [0.6, 11.4, 0.6], + "pivot": [-6, 6.3, -7], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [3, 49], "uv_size": [0.5, 11.5]}, + "east": {"uv": [4, 49], "uv_size": [0.5, 11.5]}, + "south": {"uv": [5, 49], "uv_size": [0.5, 11.5]}, + "west": {"uv": [6, 49], "uv_size": [0.5, 11.5]}, + "up": {"uv": [65, 11], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [-7.32, 6.3, -8.32], + "size": [0.84, 2.4, 0.84], + "pivot": [-6, 6.3, -7], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [59, 13], "uv_size": [1, 2.5]}, + "east": {"uv": [22, 59], "uv_size": [1, 2.5]}, + "south": {"uv": [24, 59], "uv_size": [1, 2.5]}, + "west": {"uv": [25, 59], "uv_size": [1, 2.5]}, + "up": {"uv": [9, 63], "uv_size": [1, 1]} + } + }, + { + "origin": [-7.2, 13.8, -11.8], + "size": [0.6, 0.6, 18.6], + "pivot": [-6, 13.8, -5.8], + "rotation": [-2.5, 0, 0], + "uv": { + "east": {"uv": [36, 18], "uv_size": [18.5, 0.5]}, + "south": {"uv": [12, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 19], "uv_size": [18.5, 0.5]}, + "up": {"uv": [17, 35], "uv_size": [0.5, 18.5]}, + "down": {"uv": [24, 54.5], "uv_size": [0.5, -18.5]} + } + }, + { + "origin": [6.6, 13.8, -11.8], + "size": [0.6, 0.6, 18.6], + "pivot": [6, 13.8, -5.8], + "rotation": [-2.5, 0, 0], + "uv": { + "east": {"uv": [36, 20], "uv_size": [18.5, 0.5]}, + "south": {"uv": [23, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 21], "uv_size": [18.5, 0.5]}, + "up": {"uv": [25, 36], "uv_size": [0.5, 18.5]}, + "down": {"uv": [26, 54.5], "uv_size": [0.5, -18.5]} + } + }, + { + "origin": [-7.2, 6.96, 4.7], + "size": [0.6, 6.6, 0.6], + "uv": { + "north": {"uv": [13, 58], "uv_size": [0.5, 6.5]}, + "east": {"uv": [14, 58], "uv_size": [0.5, 6.5]}, + "south": {"uv": [15, 58], "uv_size": [0.5, 6.5]}, + "west": {"uv": [16, 58], "uv_size": [0.5, 6.5]}, + "up": {"uv": [65, 12], "uv_size": [0.5, 0.5]}, + "down": {"uv": [13, 65.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [-7.2, 19.44, -5.98], + "size": [0.6, 0.6, 13.02], + "pivot": [-6, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [65, 13], "uv_size": [0.5, 0.5]}, + "east": {"uv": [38, 12], "uv_size": [13, 0.5]}, + "south": {"uv": [14, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [38, 13], "uv_size": [13, 0.5]}, + "up": {"uv": [42, 38], "uv_size": [0.5, 13]}, + "down": {"uv": [43, 51], "uv_size": [0.5, -13]} + } + }, + { + "origin": [-7.1, 15.24, -6.46], + "size": [0.3, 3, 13.44], + "pivot": [-5.9, 19.44, -4.78], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [0, 61], "uv_size": [0.5, 3]}, + "east": {"uv": [26, 3], "uv_size": [13.5, 3]}, + "south": {"uv": [61, 0], "uv_size": [0.5, 3]}, + "west": {"uv": [26, 6], "uv_size": [13.5, 3]}, + "up": {"uv": [38, 38], "uv_size": [0.5, 13.5]}, + "down": {"uv": [39, 51.5], "uv_size": [0.5, -13.5]} + } + }, + { + "origin": [-7.2, 13.5, 6.2], + "size": [0.6, 6, 0.6], + "pivot": [-6, 13.5, 7.4], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [34, 58], "uv_size": [0.5, 6]}, + "east": {"uv": [58, 38], "uv_size": [0.5, 6]}, + "south": {"uv": [58, 56], "uv_size": [0.5, 6]}, + "west": {"uv": [59, 0], "uv_size": [0.5, 6]}, + "up": {"uv": [65, 14], "uv_size": [0.5, 0.5]}, + "down": {"uv": [15, 65.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "zhongbukuangjia", + "parent": "bone", + "pivot": [-5.4, 9, 5], + "cubes": [ + { + "origin": [-6.6, 7.60172, -11.91877], + "size": [13.2, 2.4, 0.3], + "pivot": [6.9, 14.50172, -13.77877], + "rotation": [-20, 0, 0], + "uv": { + "north": {"uv": [0, 28], "uv_size": [13, 2.5]}, + "south": {"uv": [0, 31], "uv_size": [13, 2.5]}, + "up": {"uv": [40, 1], "uv_size": [13, 0.5]}, + "down": {"uv": [40, 2.5], "uv_size": [13, -0.5]} + } + }, + { + "origin": [-6, 13.44, 6.2], + "size": [12, 9.6, 0.3], + "pivot": [5.4, 13.5, 7.1], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [0, 15], "uv_size": [12, 9.5]}, + "east": {"uv": [7, 49], "uv_size": [0.5, 9.5]}, + "south": {"uv": [12, 15], "uv_size": [12, 9.5]}, + "west": {"uv": [8, 49], "uv_size": [0.5, 9.5]}, + "up": {"uv": [44, 47], "uv_size": [12, 0.5]}, + "down": {"uv": [0, 48.5], "uv_size": [12, -0.5]} + } + }, + { + "origin": [-6.6, 6.77491, 4.68686], + "size": [13.2, 0.36, 0.36], + "uv": { + "north": {"uv": [44, 38], "uv_size": [13, 0.5]}, + "east": {"uv": [65, 20], "uv_size": [0.5, 0.5]}, + "south": {"uv": [44, 39], "uv_size": [13, 0.5]}, + "west": {"uv": [21, 65], "uv_size": [0.5, 0.5]}, + "up": {"uv": [44, 40], "uv_size": [13, 0.5]}, + "down": {"uv": [44, 41.5], "uv_size": [13, -0.5]} + } + }, + { + "origin": [-6.48, 7.37491, -7.91314], + "size": [12.96, 0.36, 0.36], + "uv": { + "north": {"uv": [40, 3], "uv_size": [13, 0.5]}, + "east": {"uv": [65, 18], "uv_size": [0.5, 0.5]}, + "south": {"uv": [40, 4], "uv_size": [13, 0.5]}, + "west": {"uv": [19, 65], "uv_size": [0.5, 0.5]}, + "up": {"uv": [40, 5], "uv_size": [13, 0.5]}, + "down": {"uv": [40, 6.5], "uv_size": [13, -0.5]} + } + } + ] + }, + { + "name": "zhongzhou", + "parent": "zhongbukuangjia", + "pivot": [-5.4, 9, 5], + "cubes": [ + { + "origin": [-5.7, 8.64, 4.64], + "size": [11.4, 0.72, 0.72], + "pivot": [6, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [49, 31], "uv_size": [11.5, 0.5]}, + "east": {"uv": [65, 15], "uv_size": [0.5, 0.5]}, + "south": {"uv": [49, 32], "uv_size": [11.5, 0.5]}, + "west": {"uv": [16, 65], "uv_size": [0.5, 0.5]}, + "up": {"uv": [49, 33], "uv_size": [11.5, 0.5]}, + "down": {"uv": [49, 34.5], "uv_size": [11.5, -0.5]} + } + }, + { + "origin": [5.7, 8.22, 4.22], + "size": [0.3, 1.56, 1.56], + "pivot": [6.3, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [63, 52], "uv_size": [0.5, 1.5]}, + "east": {"uv": [42, 59], "uv_size": [1.5, 1.5]}, + "south": {"uv": [57, 63], "uv_size": [0.5, 1.5]}, + "west": {"uv": [59, 48], "uv_size": [1.5, 1.5]}, + "up": {"uv": [63, 58], "uv_size": [0.5, 1.5]}, + "down": {"uv": [61, 64.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [-6, 8.22, 4.22], + "size": [0.3, 1.56, 1.56], + "pivot": [-5.4, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [62, 63], "uv_size": [0.5, 1.5]}, + "east": {"uv": [49, 59], "uv_size": [1.5, 1.5]}, + "south": {"uv": [63, 62], "uv_size": [0.5, 1.5]}, + "west": {"uv": [59, 56], "uv_size": [1.5, 1.5]}, + "up": {"uv": [0, 64], "uv_size": [0.5, 1.5]}, + "down": {"uv": [64, 4.5], "uv_size": [0.5, -1.5]} + } + }, + { + "origin": [6, 8.52, 4.52], + "size": [3, 0.96, 0.96], + "pivot": [9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [57, 53], "uv_size": [3, 1]}, + "east": {"uv": [10, 63], "uv_size": [1, 1]}, + "south": {"uv": [57, 54], "uv_size": [3, 1]}, + "west": {"uv": [63, 11], "uv_size": [1, 1]}, + "up": {"uv": [58, 6], "uv_size": [3, 1]}, + "down": {"uv": [58, 8], "uv_size": [3, -1]} + } + }, + { + "origin": [-9, 8.52, 4.52], + "size": [3, 0.96, 0.96], + "pivot": [-9, 9, 5], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [58, 19], "uv_size": [3, 1]}, + "east": {"uv": [63, 12], "uv_size": [1, 1]}, + "south": {"uv": [58, 20], "uv_size": [3, 1]}, + "west": {"uv": [63, 13], "uv_size": [1, 1]}, + "up": {"uv": [58, 21], "uv_size": [3, 1]}, + "down": {"uv": [58, 23], "uv_size": [3, -1]} + } + } + ] + }, + { + "name": "zuodian", + "parent": "zhongbukuangjia", + "pivot": [0, 13.84023, 6.50481], + "cubes": [ + { + "origin": [6, 13.54023, -8.19519], + "size": [0.6, 0.6, 15], + "uv": { + "north": {"uv": [65, 16], "uv_size": [0.5, 0.5]}, + "east": {"uv": [36, 24], "uv_size": [15, 0.5]}, + "south": {"uv": [17, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 25], "uv_size": [15, 0.5]}, + "up": {"uv": [18, 37], "uv_size": [0.5, 15]}, + "down": {"uv": [19, 52], "uv_size": [0.5, -15]} + } + }, + { + "origin": [-6.6, 14.14023, -8.61519], + "size": [13.2, 0.3, 15], + "uv": { + "north": {"uv": [38, 14], "uv_size": [13, 0.5]}, + "east": {"uv": [36, 28], "uv_size": [15, 0.5]}, + "south": {"uv": [40, 0], "uv_size": [13, 0.5]}, + "west": {"uv": [36, 29], "uv_size": [15, 0.5]}, + "up": {"uv": [0, 0], "uv_size": [13, 15]}, + "down": {"uv": [13, 15], "uv_size": [13, -15]} + } + }, + { + "origin": [-6.6, 13.54023, -8.19519], + "size": [0.6, 0.6, 15], + "uv": { + "north": {"uv": [65, 17], "uv_size": [0.5, 0.5]}, + "east": {"uv": [36, 26], "uv_size": [15, 0.5]}, + "south": {"uv": [18, 65], "uv_size": [0.5, 0.5]}, + "west": {"uv": [36, 27], "uv_size": [15, 0.5]}, + "up": {"uv": [20, 37], "uv_size": [0.5, 15]}, + "down": {"uv": [21, 52], "uv_size": [0.5, -15]} + } + } + ] + }, + { + "name": "zuowanxianglunjia2", + "parent": "bone", + "pivot": [-6.9, 2.7, -8.2], + "cubes": [ + { + "origin": [-7.5, 2.4, -9.7], + "size": [1.2, 0.6, 0.6], + "pivot": [-6.9, 2.7, -9.4], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [6, 64], "uv_size": [-1, 0.5]}, + "south": {"uv": [65, 5], "uv_size": [-1, 0.5]}, + "up": {"uv": [7, 64], "uv_size": [-1, 0.5]}, + "down": {"uv": [65, 6.5], "uv_size": [-1, -0.5]} + } + }, + { + "origin": [-7.5, 6, -8.5], + "size": [1.2, 0.6, 1.2], + "uv": { + "north": {"uv": [9, 64], "uv_size": [-1, 0.5]}, + "east": {"uv": [65, 10], "uv_size": [-1, 0.5]}, + "south": {"uv": [11, 64], "uv_size": [-1, 0.5]}, + "west": {"uv": [10, 64], "uv_size": [-1, 0.5]}, + "up": {"uv": [29, 62], "uv_size": [-1, 1]}, + "down": {"uv": [30, 63], "uv_size": [-1, -1]} + } + }, + { + "origin": [-7.56, 4.5, -8.68], + "size": [0.12, 1.8, 0.72], + "pivot": [-6.9, 2.7, -8.2], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [62.5, 29], "uv_size": [-0.5, 2]}, + "east": {"uv": [62.5, 38], "uv_size": [-0.5, 2]}, + "south": {"uv": [62.5, 36], "uv_size": [-0.5, 2]}, + "west": {"uv": [62.5, 34], "uv_size": [-0.5, 2]}, + "up": {"uv": [39.5, 64], "uv_size": [-0.5, 0.5]} + } + }, + { + "origin": [-6.36, 2.19212, -9.34923], + "size": [0.12, 2.76, 0.72], + "pivot": [-5.7, 3.27212, -8.96923], + "rotation": [-35, 0, 0], + "uv": { + "north": {"uv": [46.5, 60], "uv_size": [-0.5, 3]}, + "east": {"uv": [52.5, 60], "uv_size": [-0.5, 3]}, + "south": {"uv": [48.5, 60], "uv_size": [-0.5, 3]}, + "west": {"uv": [47.5, 60], "uv_size": [-0.5, 3]}, + "down": {"uv": [41.5, 64.5], "uv_size": [-0.5, -0.5]} + } + }, + { + "origin": [-6.36, 4.5, -8.68], + "size": [0.12, 1.8, 0.72], + "pivot": [-5.7, 2.7, -8.2], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [62.5, 51], "uv_size": [-0.5, 2]}, + "east": {"uv": [59.5, 62], "uv_size": [-0.5, 2]}, + "south": {"uv": [62.5, 58], "uv_size": [-0.5, 2]}, + "west": {"uv": [58.5, 62], "uv_size": [-0.5, 2]}, + "up": {"uv": [64.5, 40], "uv_size": [-0.5, 0.5]} + } + }, + { + "origin": [-7.56, 2.19212, -9.34923], + "size": [0.12, 2.76, 0.72], + "pivot": [-6.9, 3.27212, -8.96923], + "rotation": [-35, 0, 0], + "uv": { + "north": {"uv": [39.5, 60], "uv_size": [-0.5, 3]}, + "east": {"uv": [45.5, 60], "uv_size": [-0.5, 3]}, + "south": {"uv": [44.5, 60], "uv_size": [-0.5, 3]}, + "west": {"uv": [60.5, 40], "uv_size": [-0.5, 3]}, + "down": {"uv": [40.5, 64.5], "uv_size": [-0.5, -0.5]} + } + } + ] + }, + { + "name": "zuowanxianglunjia", + "parent": "bone", + "pivot": [6.9, 2.7, -8.2], + "cubes": [ + { + "origin": [6.3, 2.4, -9.7], + "size": [1.2, 0.6, 0.6], + "pivot": [6.9, 2.7, -9.4], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [5, 64], "uv_size": [1, 0.5]}, + "south": {"uv": [64, 5], "uv_size": [1, 0.5]}, + "up": {"uv": [6, 64], "uv_size": [1, 0.5]}, + "down": {"uv": [64, 6.5], "uv_size": [1, -0.5]} + } + }, + { + "origin": [6.3, 6, -8.5], + "size": [1.2, 0.6, 1.2], + "uv": { + "north": {"uv": [8, 64], "uv_size": [1, 0.5]}, + "east": {"uv": [9, 64], "uv_size": [1, 0.5]}, + "south": {"uv": [10, 64], "uv_size": [1, 0.5]}, + "west": {"uv": [64, 10], "uv_size": [1, 0.5]}, + "up": {"uv": [28, 62], "uv_size": [1, 1]}, + "down": {"uv": [29, 63], "uv_size": [1, -1]} + } + }, + { + "origin": [7.44, 4.5, -8.68], + "size": [0.12, 1.8, 0.72], + "pivot": [6.9, 2.7, -8.2], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [62, 29], "uv_size": [0.5, 2]}, + "east": {"uv": [62, 34], "uv_size": [0.5, 2]}, + "south": {"uv": [62, 36], "uv_size": [0.5, 2]}, + "west": {"uv": [62, 38], "uv_size": [0.5, 2]}, + "up": {"uv": [39, 64], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [6.24, 2.19212, -9.34923], + "size": [0.12, 2.76, 0.72], + "pivot": [5.7, 3.27212, -8.96923], + "rotation": [-35, 0, 0], + "uv": { + "north": {"uv": [46, 60], "uv_size": [0.5, 3]}, + "east": {"uv": [47, 60], "uv_size": [0.5, 3]}, + "south": {"uv": [48, 60], "uv_size": [0.5, 3]}, + "west": {"uv": [52, 60], "uv_size": [0.5, 3]}, + "down": {"uv": [41, 64.5], "uv_size": [0.5, -0.5]} + } + }, + { + "origin": [6.24, 4.5, -8.68], + "size": [0.12, 1.8, 0.72], + "pivot": [5.7, 2.7, -8.2], + "rotation": [-7.5, 0, 0], + "uv": { + "north": {"uv": [62, 51], "uv_size": [0.5, 2]}, + "east": {"uv": [58, 62], "uv_size": [0.5, 2]}, + "south": {"uv": [62, 58], "uv_size": [0.5, 2]}, + "west": {"uv": [59, 62], "uv_size": [0.5, 2]}, + "up": {"uv": [64, 40], "uv_size": [0.5, 0.5]} + } + }, + { + "origin": [7.44, 2.19212, -9.34923], + "size": [0.12, 2.76, 0.72], + "pivot": [6.9, 3.27212, -8.96923], + "rotation": [-35, 0, 0], + "uv": { + "north": {"uv": [39, 60], "uv_size": [0.5, 3]}, + "east": {"uv": [60, 40], "uv_size": [0.5, 3]}, + "south": {"uv": [44, 60], "uv_size": [0.5, 3]}, + "west": {"uv": [45, 60], "uv_size": [0.5, 3]}, + "down": {"uv": [40, 64.5], "uv_size": [0.5, -0.5]} + } + } + ] + }, + { + "name": "dianchizu", + "parent": "bone", + "pivot": [0, -0.1, 8] + }, + { + "name": "dianchizu2", + "parent": "dianchizu", + "pivot": [0, -0.1, 8], + "cubes": [ + { + "origin": [-5.75, 10.05, -1.05], + "size": [4.5, 1, 3.5], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [49, 50], "uv_size": [4.5, 1]}, + "east": {"uv": [53, 8], "uv_size": [3.5, 1]}, + "south": {"uv": [51, 10], "uv_size": [4.5, 1]}, + "west": {"uv": [53, 9], "uv_size": [3.5, 1]}, + "up": {"uv": [29, 31], "uv_size": [4.5, 3.5]} + } + }, + { + "origin": [-6, 7.05, -5.3], + "size": [12, 3, 8], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [26, 9], "uv_size": [12, 3]}, + "east": {"uv": [14, 25], "uv_size": [8, 3]}, + "south": {"uv": [26, 12], "uv_size": [12, 3]}, + "west": {"uv": [13, 28], "uv_size": [8, 3]}, + "up": {"uv": [24, 15], "uv_size": [12, 8]}, + "down": {"uv": [24, 31], "uv_size": [12, -8]} + } + }, + { + "origin": [-1.1, 10.05, -5.3], + "size": [2.2, 0.75, 8], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [59, 35], "uv_size": [2, 1]}, + "east": {"uv": [36, 22], "uv_size": [8, 1]}, + "south": {"uv": [59, 43], "uv_size": [2, 1]}, + "west": {"uv": [36, 23], "uv_size": [8, 1]}, + "up": {"uv": [22, 25], "uv_size": [2, 8]} + } + }, + { + "origin": [1.25, 10.05, -5.05], + "size": [4.5, 1, 3.5], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [0, 45], "uv_size": [4.5, 1]}, + "east": {"uv": [53, 4], "uv_size": [3.5, 1]}, + "south": {"uv": [5, 45], "uv_size": [4.5, 1]}, + "west": {"uv": [53, 5], "uv_size": [3.5, 1]}, + "up": {"uv": [13, 31], "uv_size": [4.5, 3.5]} + } + }, + { + "origin": [1.25, 10.05, -1.05], + "size": [4.5, 1, 3.5], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [49, 48], "uv_size": [4.5, 1]}, + "east": {"uv": [53, 6], "uv_size": [3.5, 1]}, + "south": {"uv": [49, 49], "uv_size": [4.5, 1]}, + "west": {"uv": [53, 7], "uv_size": [3.5, 1]}, + "up": {"uv": [24, 31], "uv_size": [4.5, 3.5]} + } + }, + { + "origin": [-5.75, 10.05, -5.05], + "size": [4.5, 1, 3.5], + "pivot": [0, -0.1, 8], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [51, 11], "uv_size": [4.5, 1]}, + "east": {"uv": [53, 26], "uv_size": [3.5, 1]}, + "south": {"uv": [51, 12], "uv_size": [4.5, 1]}, + "west": {"uv": [53, 27], "uv_size": [3.5, 1]}, + "up": {"uv": [18, 33], "uv_size": [4.5, 3.5]} + } + } + ] + }, + { + "name": "dianchijia", + "parent": "dianchizu", + "pivot": [-6.3, 6.85491, 7.86686], + "cubes": [ + { + "origin": [3.6, 7.05, -5.01314], + "size": [1, 0.01, 8], + "pivot": [6.3, 6.85491, 7.86686], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [26, 64], "uv_size": [1, 0.5]}, + "east": {"uv": [51, 13], "uv_size": [8, 0.5]}, + "south": {"uv": [64, 26], "uv_size": [1, 0.5]}, + "west": {"uv": [51, 14], "uv_size": [8, 0.5]}, + "up": {"uv": [27, 36], "uv_size": [1, 8]}, + "down": {"uv": [28, 44], "uv_size": [1, -8]} + } + }, + { + "origin": [-7.2, 7.05, -4.01314], + "size": [14.4, 0.01, 1], + "pivot": [6.3, 6.85491, 7.86686], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [36, 30], "uv_size": [14.5, 0.5]}, + "east": {"uv": [64, 30], "uv_size": [1, 0.5]}, + "south": {"uv": [37, 36], "uv_size": [14.5, 0.5]}, + "west": {"uv": [31, 64], "uv_size": [1, 0.5]}, + "up": {"uv": [34, 31], "uv_size": [14.5, 1]}, + "down": {"uv": [34, 33], "uv_size": [14.5, -1]} + } + }, + { + "origin": [-7.2, 7.05, 0.98686], + "size": [14.4, 0.01, 1], + "pivot": [6.3, 6.85491, 7.86686], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [37, 37], "uv_size": [14.5, 0.5]}, + "east": {"uv": [64, 31], "uv_size": [1, 0.5]}, + "south": {"uv": [38, 9], "uv_size": [14.5, 0.5]}, + "west": {"uv": [32, 64], "uv_size": [1, 0.5]}, + "up": {"uv": [34, 33], "uv_size": [14.5, 1]}, + "down": {"uv": [34, 35], "uv_size": [14.5, -1]} + } + }, + { + "origin": [-4.6, 7.05, -5.01314], + "size": [1, 0.01, 8], + "pivot": [-6.3, 6.85491, 7.86686], + "rotation": [-2.5, 0, 0], + "uv": { + "north": {"uv": [27, 64], "uv_size": [1, 0.5]}, + "east": {"uv": [51, 24], "uv_size": [8, 0.5]}, + "south": {"uv": [30, 64], "uv_size": [1, 0.5]}, + "west": {"uv": [51, 25], "uv_size": [8, 0.5]}, + "up": {"uv": [29, 36], "uv_size": [1, 8]}, + "down": {"uv": [30, 44], "uv_size": [1, -8]} + } + }, + { + "origin": [-6.6, 6.92, 2.58686], + "size": [13.2, 0.36, 0.36], + "uv": { + "north": {"uv": [40, 7], "uv_size": [13, 0.5]}, + "east": {"uv": [65, 19], "uv_size": [0.5, 0.5]}, + "south": {"uv": [40, 8], "uv_size": [13, 0.5]}, + "west": {"uv": [20, 65], "uv_size": [0.5, 0.5]}, + "up": {"uv": [44, 22], "uv_size": [13, 0.5]}, + "down": {"uv": [44, 23.5], "uv_size": [13, -0.5]} + } + }, + { + "origin": [-6.6, 7.27491, -4.91314], + "size": [13.2, 0.36, 0.36], + "uv": { + "north": {"uv": [44, 42], "uv_size": [13, 0.5]}, + "east": {"uv": [65, 21], "uv_size": [0.5, 0.5]}, + "south": {"uv": [44, 43], "uv_size": [13, 0.5]}, + "west": {"uv": [22, 65], "uv_size": [0.5, 0.5]}, + "up": {"uv": [44, 44], "uv_size": [13, 0.5]}, + "down": {"uv": [44, 45.5], "uv_size": [13, -0.5]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/textures/entity/wheel_chair.png b/src/main/resources/assets/superbwarfare/textures/entity/wheel_chair.png new file mode 100644 index 000000000..78068d9ac Binary files /dev/null and b/src/main/resources/assets/superbwarfare/textures/entity/wheel_chair.png differ