From 09b04af3a8823f6ebb5a6d94552af880eec5dc30 Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Thu, 26 Dec 2024 04:48:01 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=BD=AE=E6=A4=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../superbwarfare/client/ClickHandler.java | 8 +- .../client/layer/SpeedBoatHeatLayer.java | 10 +- .../client/layer/SpeedBoatLayer.java | 8 +- .../client/layer/SpeedBoatPowerLayer.java | 10 +- .../client/model/entity/SpeedboatModel.java | 14 +- .../client/model/entity/WheelChairModel.java | 25 + .../renderer/entity/SpeedboatRenderer.java | 14 +- .../renderer/entity/WheelChairRenderer.java | 46 + .../client/screens/VehicleHudOverlay.java | 4 +- .../client/screens/VehicleMgHudOverlay.java | 4 +- .../entity/MobileVehicleEntity.java | 96 + ...Entity.java => SpeedboatEntityMobile.java} | 129 +- .../entity/WheelChairEntityMobile.java | 258 ++ .../event/ClientEventHandler.java | 10 +- .../superbwarfare/init/ModEntities.java | 6 +- .../init/ModEntityRenderers.java | 1 + .../superbwarfare/mixins/CameraMixin.java | 4 +- .../message/VehicleMovementMessage.java | 17 +- .../superbwarfare/geo/wheel_chair.geo.json | 2557 +++++++++++++++++ .../textures/entity/wheel_chair.png | Bin 0 -> 9727 bytes 20 files changed, 3070 insertions(+), 151 deletions(-) create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/model/entity/WheelChairModel.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/client/renderer/entity/WheelChairRenderer.java create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/MobileVehicleEntity.java rename src/main/java/com/atsuishio/superbwarfare/entity/{SpeedboatEntity.java => SpeedboatEntityMobile.java} (86%) create mode 100644 src/main/java/com/atsuishio/superbwarfare/entity/WheelChairEntityMobile.java create mode 100644 src/main/resources/assets/superbwarfare/geo/wheel_chair.geo.json create mode 100644 src/main/resources/assets/superbwarfare/textures/entity/wheel_chair.png 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 0000000000000000000000000000000000000000..78068d9acd659ef2a1339ccdd2232dc2d2495ca1 GIT binary patch literal 9727 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 nLiTt6|K