From a3549b09db82f4a2b021e4986cbe66ecdb0287cd Mon Sep 17 00:00:00 2001 From: Atsuihsio <842960157@qq.com> Date: Tue, 30 Jul 2024 21:32:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86RGO=E7=9A=84java=E6=A8=A1=E5=9E=8B?= =?UTF-8?q?=E6=8D=A2=E4=B8=BAgeo=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/model/entity/ModelRgoGrenade.java | 100 ---- .../renderer/entity/RgoGrenadeRenderer.java | 51 +- .../entity/RgoGrenadeEntity.java | 35 +- .../entity/model/RgoGrenadeEntityModel.java | 23 + .../superbwarfare/init/ModModels.java | 1 - .../animations/rgo_grenade.animation.json | 9 + .../superbwarfare/geo/rgo_grenade.geo.json | 465 ++++++++++++++++++ 7 files changed, 556 insertions(+), 128 deletions(-) delete mode 100644 src/main/java/net/mcreator/superbwarfare/client/model/entity/ModelRgoGrenade.java create mode 100644 src/main/java/net/mcreator/superbwarfare/entity/model/RgoGrenadeEntityModel.java create mode 100644 src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json create mode 100644 src/main/resources/assets/superbwarfare/geo/rgo_grenade.geo.json diff --git a/src/main/java/net/mcreator/superbwarfare/client/model/entity/ModelRgoGrenade.java b/src/main/java/net/mcreator/superbwarfare/client/model/entity/ModelRgoGrenade.java deleted file mode 100644 index cb78df844..000000000 --- a/src/main/java/net/mcreator/superbwarfare/client/model/entity/ModelRgoGrenade.java +++ /dev/null @@ -1,100 +0,0 @@ -package net.mcreator.superbwarfare.client.model.entity; - -import com.mojang.blaze3d.vertex.PoseStack; -import com.mojang.blaze3d.vertex.VertexConsumer; -import net.mcreator.superbwarfare.ModUtils; -import net.minecraft.client.model.EntityModel; -import net.minecraft.client.model.geom.ModelLayerLocation; -import net.minecraft.client.model.geom.ModelPart; -import net.minecraft.client.model.geom.PartPose; -import net.minecraft.client.model.geom.builders.*; -import net.minecraft.resources.ResourceLocation; -import net.minecraft.world.entity.Entity; - -@SuppressWarnings("unused") -public class ModelRgoGrenade extends EntityModel { - // This layer location should be baked with EntityRendererProvider.Context in the entity renderer and passed into this model's constructor - public static final ModelLayerLocation LAYER_LOCATION = new ModelLayerLocation(new ResourceLocation(ModUtils.MODID, "model_rgo_grenade"), "main"); - public final ModelPart group; - - public ModelRgoGrenade(ModelPart root) { - this.group = root.getChild("group"); - } - - public static LayerDefinition createBodyLayer() { - MeshDefinition meshdefinition = new MeshDefinition(); - PartDefinition partdefinition = meshdefinition.getRoot(); - - PartDefinition group = partdefinition.addOrReplaceChild("group", CubeListBuilder.create(), PartPose.offset(0.0F, -0.0217F, 0.0F)); - - PartDefinition bone = group.addOrReplaceChild("bone", CubeListBuilder.create(), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, -3.1416F, 0.0F, 0.0F)); - - PartDefinition bone5 = bone.addOrReplaceChild("bone5", CubeListBuilder.create().texOffs(24, 25).addBox(-0.5375F, -13.3055F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F)); - - PartDefinition bone180_r1 = bone5.addOrReplaceChild("bone180_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-1.2976F, -0.5375F, -0.5375F, 0.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(24, 25).addBox(-0.5375F, 0.7024F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.0F, 0.0F, -0.7854F)); - - PartDefinition bone179_r1 = bone5.addOrReplaceChild("bone179_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 0.5953F, new CubeDeformation(0.0F)) - .texOffs(24, 25).addBox(-0.5375F, 0.7024F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.7854F, 0.0F, 0.0F)); - - PartDefinition bone6 = bone.addOrReplaceChild("bone6", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -15.5554F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(1, 24).addBox(-0.5375F, -15.5554F, 17.1856F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-0.387F, -17.2646F, 17.3361F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F)); - - PartDefinition bone181_r1 = bone6.addOrReplaceChild("bone181_r1", CubeListBuilder.create().texOffs(25, 25).addBox(-1.2976F, -0.5375F, -0.5375F, 0.5953F, 1.075F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(24, 25).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.2578F, 17.7231F, 0.0F, 0.0F, 0.7854F)); - - PartDefinition bone180_r2 = bone6.addOrReplaceChild("bone180_r2", CubeListBuilder.create().texOffs(25, 25).addBox(-0.5375F, -0.5375F, -1.2976F, 1.075F, 1.075F, 0.5953F, new CubeDeformation(0.0F)) - .texOffs(24, 25).addBox(-0.5375F, -1.2976F, -0.5375F, 1.075F, 0.5953F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.2578F, 17.7231F, -0.7854F, 0.0F, 0.0F)); - - PartDefinition bone7 = bone.addOrReplaceChild("bone7", CubeListBuilder.create().texOffs(24, 28).addBox(-1.2976F, -14.7953F, 17.1856F, 2.5953F, 1.325F, 1.075F, new CubeDeformation(0.0F)) - .texOffs(19, 28).addBox(-0.5375F, -14.7953F, 16.4255F, 1.075F, 1.325F, 2.5953F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 16.0295F, -17.7281F)); - - PartDefinition bone180_r3 = bone7.addOrReplaceChild("bone180_r3", CubeListBuilder.create().texOffs(19, 24).addBox(-0.5375F, -0.7875F, -1.2976F, 1.075F, 1.325F, 2.5953F, new CubeDeformation(0.0F)) - .texOffs(24, 24).addBox(-1.2976F, -0.7875F, -0.5375F, 2.5953F, 1.325F, 1.075F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -14.0078F, 17.7231F, 0.0F, 0.7854F, 0.0F)); - - PartDefinition group3 = bone.addOrReplaceChild("group3", CubeListBuilder.create().texOffs(0, 30).addBox(-1.337F, -17.1111F, -7.7855F, 0.674F, 1.104F, 0.5686F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-1.337F, -16.0911F, -7.263F, 0.674F, 0.804F, 0.4686F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-1.587F, -15.2871F, -7.463F, 1.174F, 0.5F, 0.6686F, new CubeDeformation(0.0F)) - .texOffs(12, 29).addBox(-1.487F, -15.1871F, -6.7944F, 0.974F, 0.3F, 0.0117F, new CubeDeformation(0.0F)), PartPose.offset(1.0F, 15.3733F, 8.1462F)); - - PartDefinition bone183_r1 = group3.addOrReplaceChild("bone183_r1", CubeListBuilder.create().texOffs(2, 27).addBox(-0.337F, -0.3093F, -0.427F, 0.674F, 0.3186F, 0.254F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.4252F, -8.0809F, -0.3927F, 0.0F, 0.0F)); - - PartDefinition bone182_r1 = group3.addOrReplaceChild("bone182_r1", CubeListBuilder.create().texOffs(0, 30).addBox(-0.337F, -0.427F, -0.3093F, 0.674F, 0.554F, 0.6186F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.5982F, -7.9079F, 0.3927F, 0.0F, 0.0F)); - - PartDefinition bone183_r2 = group3.addOrReplaceChild("bone183_r2", CubeListBuilder.create().texOffs(13, 28).addBox(-0.362F, -0.552F, 0.1843F, 0.724F, 0.1F, 0.1F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -15.5821F, -6.7683F, 0.7854F, 0.0F, 0.0F)); - - PartDefinition bone182_r2 = group3.addOrReplaceChild("bone182_r2", CubeListBuilder.create().texOffs(0, 30).addBox(-0.337F, -0.617F, 0.3657F, 0.674F, 1.104F, 0.5686F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, -16.1835F, -7.844F, 0.3927F, 0.0F, 0.0F)); - - PartDefinition group4 = bone.addOrReplaceChild("group4", CubeListBuilder.create().texOffs(1, 29).addBox(-0.9343F, -13.817F, -8.392F, 1.8686F, 1.554F, 0.774F, new CubeDeformation(0.0F)) - .texOffs(0, 27).addBox(-0.387F, -13.817F, -8.9393F, 0.774F, 1.554F, 1.8686F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.1292F, 8.0F)); - - PartDefinition bone181_r2 = group4.addOrReplaceChild("bone181_r2", CubeListBuilder.create().texOffs(2, 27).addBox(-0.387F, -0.567F, -0.9343F, 0.774F, 1.554F, 1.8686F, new CubeDeformation(0.0F)) - .texOffs(0, 29).addBox(-0.9343F, -0.567F, -0.387F, 1.8686F, 1.554F, 0.774F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, 0.0F, 0.7854F, 0.0F)); - - PartDefinition group5 = bone.addOrReplaceChild("group5", CubeListBuilder.create().texOffs(0, 24).addBox(-0.4218F, -12.5194F, -9.0234F, 0.8437F, 0.2589F, 2.0368F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-1.0184F, -12.5194F, -8.4268F, 2.0368F, 0.2589F, 0.8437F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 13.1292F, 8.0F)); - - PartDefinition bone184_r1 = group5.addOrReplaceChild("bone184_r1", CubeListBuilder.create().texOffs(0, 30).addBox(-1.0184F, 0.817F, -0.4218F, 2.0368F, 0.2589F, 0.8437F, new CubeDeformation(0.0F)) - .texOffs(0, 29).addBox(-0.4218F, 0.817F, -1.0184F, 0.8437F, 0.2589F, 2.0368F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.3364F, -8.005F, 0.0F, 0.7854F, 0.0F)); - - PartDefinition group6 = bone.addOrReplaceChild("group6", CubeListBuilder.create(), PartPose.offset(0.0F, 12.9492F, 8.0F)); - - PartDefinition bone179_r2 = group6.addOrReplaceChild("bone179_r2", CubeListBuilder.create().texOffs(0, 30).addBox(-0.387F, -0.9343F, -0.387F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-0.387F, -0.387F, -0.9343F, 0.774F, 0.774F, 0.4286F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, -0.7854F, 0.0F, 0.0F)); - - PartDefinition bone180_r4 = group6.addOrReplaceChild("bone180_r4", CubeListBuilder.create().texOffs(0, 30).addBox(-0.387F, -0.9343F, -0.387F, 0.774F, 0.4286F, 0.774F, new CubeDeformation(0.0F)) - .texOffs(0, 30).addBox(-0.9343F, -0.387F, -0.387F, 0.4286F, 0.774F, 0.774F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, -13.25F, -8.005F, 0.0F, 0.0F, 0.7854F)); - - return LayerDefinition.create(meshdefinition, 32, 32); - } - - @Override - public void setupAnim(T entity, float limbSwing, float limbSwingAmount, float ageInTicks, float netHeadYaw, float headPitch) { - } - - @Override - public void renderToBuffer(PoseStack poseStack, VertexConsumer vertexConsumer, int packedLight, int packedOverlay, float red, float green, float blue, float alpha) { - group.render(poseStack, vertexConsumer, packedLight, packedOverlay, red, green, blue, alpha); - } -} \ No newline at end of file diff --git a/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java b/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java index 6b6c5f662..37d819141 100644 --- a/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java +++ b/src/main/java/net/mcreator/superbwarfare/client/renderer/entity/RgoGrenadeRenderer.java @@ -1,40 +1,39 @@ + package net.mcreator.superbwarfare.client.renderer.entity; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; -import com.mojang.math.Axis; -import net.mcreator.superbwarfare.client.model.entity.ModelRgoGrenade; import net.mcreator.superbwarfare.entity.RgoGrenadeEntity; +import net.mcreator.superbwarfare.entity.model.RgoGrenadeEntityModel; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.RenderType; -import net.minecraft.client.renderer.entity.EntityRenderer; import net.minecraft.client.renderer.entity.EntityRendererProvider; -import net.minecraft.client.renderer.texture.OverlayTexture; 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 RgoGrenadeRenderer extends EntityRenderer { - private static final ResourceLocation texture = new ResourceLocation("superbwarfare:textures/entity/rgo_grenade.png"); - private final ModelRgoGrenade model; +public class RgoGrenadeRenderer extends GeoEntityRenderer { + public RgoGrenadeRenderer(EntityRendererProvider.Context renderManager) { + super(renderManager, new RgoGrenadeEntityModel()); + this.shadowRadius = 0.1f; + } - public RgoGrenadeRenderer(EntityRendererProvider.Context context) { - super(context); - model = new ModelRgoGrenade<>(context.bakeLayer(ModelRgoGrenade.LAYER_LOCATION)); - } + @Override + public RenderType getRenderType(RgoGrenadeEntity animatable, ResourceLocation texture, MultiBufferSource bufferSource, float partialTick) { + return RenderType.entityTranslucent(getTextureLocation(animatable)); + } - @Override - public void render(RgoGrenadeEntity entityIn, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { - VertexConsumer vb = bufferIn.getBuffer(RenderType.entityCutout(this.getTextureLocation(entityIn))); - poseStack.pushPose(); - poseStack.mulPose(Axis.YP.rotationDegrees(Mth.lerp(partialTicks, entityIn.yRotO, entityIn.getYRot()) - 90)); - poseStack.mulPose(Axis.ZP.rotationDegrees(90 + Mth.lerp(partialTicks, entityIn.xRotO, entityIn.getXRot()))); - model.renderToBuffer(poseStack, vb, packedLightIn, OverlayTexture.NO_OVERLAY, 1, 1, 1, 0.0625f); - poseStack.popPose(); - super.render(entityIn, entityYaw, partialTicks, poseStack, bufferIn, packedLightIn); - } + @Override + public void preRender(PoseStack poseStack, RgoGrenadeEntity 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 ResourceLocation getTextureLocation(RgoGrenadeEntity entity) { - return texture; - } + @Override + protected float getDeathMaxRotation(RgoGrenadeEntity entityLivingBaseIn) { + return 0.0F; + } } diff --git a/src/main/java/net/mcreator/superbwarfare/entity/RgoGrenadeEntity.java b/src/main/java/net/mcreator/superbwarfare/entity/RgoGrenadeEntity.java index 87f7c0af8..ed7a2aa36 100644 --- a/src/main/java/net/mcreator/superbwarfare/entity/RgoGrenadeEntity.java +++ b/src/main/java/net/mcreator/superbwarfare/entity/RgoGrenadeEntity.java @@ -13,6 +13,9 @@ import net.minecraft.core.Direction; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.protocol.Packet; import net.minecraft.network.protocol.game.ClientGamePacketListener; +import net.minecraft.network.syncher.EntityDataAccessor; +import net.minecraft.network.syncher.EntityDataSerializers; +import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.sounds.SoundEvent; @@ -31,10 +34,18 @@ import net.minecraft.world.phys.HitResult; import net.minecraftforge.network.NetworkHooks; import net.minecraftforge.network.PacketDistributor; 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 RgoGrenadeEntity extends ThrowableItemProjectile { +public class RgoGrenadeEntity extends ThrowableItemProjectile implements GeoEntity, AnimatedEntity{ + public static final EntityDataAccessor ANIMATION = SynchedEntityData.defineId(MortarEntity.class, EntityDataSerializers.STRING); private int fuse = 80; + private final AnimatableInstanceCache cache = GeckoLibUtil.createInstanceCache(this); + public String animationProcedure = "empty"; + public RgoGrenadeEntity(EntityType type, Level world) { super(type, world); } @@ -153,4 +164,26 @@ public class RgoGrenadeEntity extends ThrowableItemProjectile { protected float getGravity() { return 0.07F; } + + public String getSyncedAnimation() { + return this.entityData.get(ANIMATION); + } + + public void setAnimation(String animation) { + this.entityData.set(ANIMATION, animation); + } + + @Override + public void setAnimationProcedure(String procedure) { + this.animationProcedure = procedure; + } + + @Override + public void registerControllers(AnimatableManager.ControllerRegistrar data) { + } + + @Override + public AnimatableInstanceCache getAnimatableInstanceCache() { + return this.cache; + } } diff --git a/src/main/java/net/mcreator/superbwarfare/entity/model/RgoGrenadeEntityModel.java b/src/main/java/net/mcreator/superbwarfare/entity/model/RgoGrenadeEntityModel.java new file mode 100644 index 000000000..3870b9b1e --- /dev/null +++ b/src/main/java/net/mcreator/superbwarfare/entity/model/RgoGrenadeEntityModel.java @@ -0,0 +1,23 @@ +package net.mcreator.superbwarfare.entity.model; + +import net.mcreator.superbwarfare.ModUtils; +import net.mcreator.superbwarfare.entity.RgoGrenadeEntity; +import net.minecraft.resources.ResourceLocation; +import software.bernie.geckolib.model.GeoModel; + +public class RgoGrenadeEntityModel extends GeoModel { + @Override + public ResourceLocation getAnimationResource(RgoGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "animations/rgo_grenade.animation.json"); + } + + @Override + public ResourceLocation getModelResource(RgoGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "geo/rgo_grenade.geo.json"); + } + + @Override + public ResourceLocation getTextureResource(RgoGrenadeEntity entity) { + return new ResourceLocation(ModUtils.MODID, "textures/item/rgo_grenade.png"); + } +} diff --git a/src/main/java/net/mcreator/superbwarfare/init/ModModels.java b/src/main/java/net/mcreator/superbwarfare/init/ModModels.java index 74dd89540..eba739db0 100644 --- a/src/main/java/net/mcreator/superbwarfare/init/ModModels.java +++ b/src/main/java/net/mcreator/superbwarfare/init/ModModels.java @@ -18,6 +18,5 @@ public class ModModels { event.registerLayerDefinition(ModelBocekArrow.LAYER_LOCATION, ModelBocekArrow::createBodyLayer); event.registerLayerDefinition(ModelClaymore.LAYER_LOCATION, ModelClaymore::createBodyLayer); event.registerLayerDefinition(ModelHandGrenade.LAYER_LOCATION, ModelHandGrenade::createBodyLayer); - event.registerLayerDefinition(ModelRgoGrenade.LAYER_LOCATION, ModelRgoGrenade::createBodyLayer); } } diff --git a/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json b/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json new file mode 100644 index 000000000..db89cd83f --- /dev/null +++ b/src/main/resources/assets/superbwarfare/animations/rgo_grenade.animation.json @@ -0,0 +1,9 @@ +{ + "format_version": "1.8.0", + "animations": { + "animation.rgo_grenade.idle": { + "loop": true + } + }, + "geckolib_format_version": 2 +} \ No newline at end of file diff --git a/src/main/resources/assets/superbwarfare/geo/rgo_grenade.geo.json b/src/main/resources/assets/superbwarfare/geo/rgo_grenade.geo.json new file mode 100644 index 000000000..515d3d77f --- /dev/null +++ b/src/main/resources/assets/superbwarfare/geo/rgo_grenade.geo.json @@ -0,0 +1,465 @@ +{ + "format_version": "1.12.0", + "minecraft:geometry": [ + { + "description": { + "identifier": "geometry.rgo_grenade_geo - Converted", + "texture_width": 16, + "texture_height": 16, + "visible_bounds_width": 2, + "visible_bounds_height": 1.5, + "visible_bounds_offset": [0, 0.25, 0] + }, + "bones": [ + { + "name": "bone", + "pivot": [0, 0, 0] + }, + { + "name": "body", + "parent": "bone", + "pivot": [0, 1.81719, 0] + }, + { + "name": "bone2", + "parent": "body", + "pivot": [0, 1.30938, -25.72809], + "cubes": [ + { + "origin": [-0.5375, 0.01955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "pivot": [0, 1.31719, 0], + "rotation": [45, 0, 0], + "uv": { + "east": {"uv": [10, 9], "uv_size": [1, 0.5]}, + "west": {"uv": [10, 10], "uv_size": [1, 0.5]}, + "up": {"uv": [8, 1], "uv_size": [1, 1]}, + "down": {"uv": [2, 9], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, 0.77969, -1.29764], + "size": [1.075, 1.075, 0.59528], + "pivot": [0, 1.31719, 0], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [8, 2], "uv_size": [1, 1]}, + "east": {"uv": [0, 11], "uv_size": [0.5, 1]}, + "south": {"uv": [3, 8], "uv_size": [1, 1]}, + "west": {"uv": [11, 0], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.5375, 0.01955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "uv": { + "up": {"uv": [8, 3], "uv_size": [1, 1]}, + "down": {"uv": [8, 5], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, 0.01955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "pivot": [0, 1.31719, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [1, 11], "uv_size": [1, 0.5]}, + "south": {"uv": [11, 1], "uv_size": [1, 0.5]}, + "up": {"uv": [5, 8], "uv_size": [1, 1]}, + "down": {"uv": [8, 6], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.29764, 0.77969, -0.5375], + "size": [0.59528, 1.075, 1.075], + "pivot": [0, 1.31719, 0], + "rotation": [0, 0, -45], + "uv": { + "north": {"uv": [2, 11], "uv_size": [0.5, 1]}, + "east": {"uv": [6, 8], "uv_size": [1, 1]}, + "south": {"uv": [11, 2], "uv_size": [0.5, 1]}, + "west": {"uv": [8, 6], "uv_size": [1, 1]} + } + } + ] + }, + { + "name": "bone3", + "parent": "body", + "pivot": [0, 1.30938, -25.72809], + "cubes": [ + { + "origin": [-0.5375, 2.26955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "uv": { + "up": {"uv": [7, 8], "uv_size": [1, 1]}, + "down": {"uv": [8, 8], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, 2.26955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "pivot": [0, 1.56719, 0], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [3, 11], "uv_size": [1, 0.5]}, + "west": {"uv": [11, 3], "uv_size": [1, 0.5]}, + "up": {"uv": [8, 8], "uv_size": [1, 1]}, + "down": {"uv": [9, 1], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, 1.02969, -1.29764], + "size": [1.075, 1.075, 0.59528], + "pivot": [0, 1.56719, 0], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [1, 9], "uv_size": [1, 1]}, + "east": {"uv": [4, 11], "uv_size": [0.5, 1]}, + "south": {"uv": [9, 1], "uv_size": [1, 1]}, + "west": {"uv": [11, 4], "uv_size": [0.5, 1]} + } + }, + { + "origin": [-0.5375, 2.26955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "uv": { + "up": {"uv": [2, 9], "uv_size": [1, 1]}, + "down": {"uv": [9, 3], "uv_size": [1, -1]} + } + }, + { + "origin": [-0.5375, 2.26955, -0.5375], + "size": [1.075, 0.59528, 1.075], + "pivot": [0, 1.56719, 0], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [5, 11], "uv_size": [1, 0.5]}, + "south": {"uv": [11, 5], "uv_size": [1, 0.5]}, + "up": {"uv": [3, 9], "uv_size": [1, 1]}, + "down": {"uv": [9, 4], "uv_size": [1, -1]} + } + }, + { + "origin": [-1.29764, 1.02969, -0.5375], + "size": [0.59528, 1.075, 1.075], + "pivot": [0, 1.56719, 0], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [6, 11], "uv_size": [0.5, 1]}, + "east": {"uv": [4, 9], "uv_size": [1, 1]}, + "south": {"uv": [11, 6], "uv_size": [0.5, 1]}, + "west": {"uv": [9, 4], "uv_size": [1, 1]} + } + }, + { + "origin": [-0.387, 4.14539, -0.387], + "size": [0.774, 0.4286, 0.774], + "uv": { + "up": {"uv": [10, 0], "uv_size": [0.75, 0.75]}, + "down": {"uv": [10, 1.75], "uv_size": [0.75, -0.75]} + } + } + ] + }, + { + "name": "bone175", + "parent": "body", + "pivot": [0, 1.30938, -25.72809], + "cubes": [ + { + "origin": [-1.29764, 0.77969, -0.5375], + "size": [2.59528, 1.325, 1.075], + "uv": { + "east": {"uv": [4, 5], "uv_size": [1, 1.25]}, + "west": {"uv": [5, 4], "uv_size": [1, 1.25]} + } + }, + { + "origin": [-1.29764, 0.77969, -0.5375], + "size": [2.59528, 1.325, 1.075], + "pivot": [0, 1.31719, 0], + "rotation": [0, 45, 0], + "uv": { + "east": {"uv": [0, 6], "uv_size": [1, 1.25]}, + "west": {"uv": [1, 6], "uv_size": [1, 1.25]}, + "up": {"uv": [0, 0], "uv_size": [2.5, 1]}, + "down": {"uv": [0, 2], "uv_size": [2.5, -1]} + } + }, + { + "origin": [-0.5375, 0.77969, -1.29764], + "size": [1.075, 1.325, 2.59528], + "uv": { + "north": {"uv": [2, 6], "uv_size": [1, 1.25]}, + "south": {"uv": [6, 2], "uv_size": [1, 1.25]}, + "down": {"uv": [0, 4.5], "uv_size": [1, -2.5]} + } + }, + { + "origin": [-0.5375, 0.77969, -1.29764], + "size": [1.075, 1.325, 2.59528], + "pivot": [0, 1.31719, 0], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [3, 6], "uv_size": [1, 1.25]}, + "south": {"uv": [6, 4], "uv_size": [1, 1.25]}, + "up": {"uv": [1, 2], "uv_size": [1, 2.5]}, + "down": {"uv": [2, 4.5], "uv_size": [1, -2.5]} + } + } + ] + }, + { + "name": "group3", + "parent": "body", + "pivot": [1, 1.96562, 0.14623], + "cubes": [ + { + "origin": [-0.337, 3.97269, 0.3657], + "size": [0.674, 1.104, 0.5686], + "uv": { + "east": {"uv": [7, 11], "uv_size": [0.5, 1]}, + "west": {"uv": [11, 7], "uv_size": [0.5, 1]}, + "up": {"uv": [10, 11], "uv_size": [0.75, 0.5]} + } + }, + { + "origin": [-0.337, 3.66211, 0.67293], + "size": [0.674, 1.104, 0.56861], + "pivot": [0, 4.14911, 0.30724], + "rotation": [22.5, 0, 0], + "uv": { + "east": {"uv": [8, 11], "uv_size": [0.5, 1]}, + "south": {"uv": [9, 6], "uv_size": [0.75, 1]}, + "west": {"uv": [11, 8], "uv_size": [0.5, 1]}, + "up": {"uv": [11, 10], "uv_size": [0.75, 0.5]} + } + }, + { + "origin": [-0.362, 3.99976, 1.56718], + "size": [0.724, 0.1, 0.1], + "pivot": [0, 3.54776, 1.38288], + "rotation": [45, 0, 0], + "uv": { + "north": {"uv": [13, 2], "uv_size": [0.75, 0.25]}, + "east": {"uv": [14, 12], "uv_size": [0.25, 0.25]}, + "south": {"uv": [3, 13], "uv_size": [0.75, 0.25]}, + "west": {"uv": [13, 14], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 3], "uv_size": [0.75, 0.25]}, + "down": {"uv": [4, 13.25], "uv_size": [0.75, -0.25]} + } + }, + { + "origin": [-0.337, 3.25273, 0.88818], + "size": [0.674, 0.804, 0.4686], + "uv": { + "east": {"uv": [11, 11], "uv_size": [0.5, 0.75]}, + "south": {"uv": [2, 10], "uv_size": [0.75, 0.75]}, + "west": {"uv": [0, 12], "uv_size": [0.5, 0.75]}, + "up": {"uv": [12, 0], "uv_size": [0.75, 0.5]} + } + }, + { + "origin": [-0.587, 2.75273, 0.68818], + "size": [1.174, 0.5, 0.6686], + "uv": { + "east": {"uv": [1, 12], "uv_size": [0.75, 0.5]}, + "south": {"uv": [0, 10], "uv_size": [1.25, 0.5]}, + "west": {"uv": [12, 1], "uv_size": [0.75, 0.5]}, + "up": {"uv": [5, 9], "uv_size": [1.25, 0.75]}, + "down": {"uv": [9, 5.75], "uv_size": [1.25, -0.75]} + } + }, + { + "origin": [-0.487, 2.85273, 1.35678], + "size": [0.974, 0.3, 0.01172], + "uv": { + "east": {"uv": [9, 15], "uv_size": [0.25, 0.25]}, + "south": {"uv": [0, 13], "uv_size": [1, 0.25]}, + "west": {"uv": [15, 9], "uv_size": [0.25, 0.25]}, + "up": {"uv": [13, 0], "uv_size": [1, 0.25]}, + "down": {"uv": [1, 13.25], "uv_size": [1, -0.25]} + } + }, + { + "origin": [-0.337, 4.43683, -0.06595], + "size": [0.674, 0.554, 0.6186], + "pivot": [0, 4.56383, 0.24335], + "rotation": [22.5, 0, 0], + "uv": { + "north": {"uv": [2, 12], "uv_size": [0.75, 0.5]}, + "east": {"uv": [13, 1], "uv_size": [0.5, 0.5]}, + "west": {"uv": [2, 13], "uv_size": [0.5, 0.5]}, + "up": {"uv": [12, 2], "uv_size": [0.75, 0.5]} + } + }, + { + "origin": [-0.337, 4.3815, -0.35668], + "size": [0.674, 0.3186, 0.254], + "pivot": [0, 4.3908, 0.07032], + "rotation": [-22.5, 0, 0], + "uv": { + "north": {"uv": [12, 13], "uv_size": [0.75, 0.25]}, + "east": {"uv": [10, 15], "uv_size": [0.25, 0.25]}, + "west": {"uv": [15, 10], "uv_size": [0.25, 0.25]}, + "down": {"uv": [13, 12.25], "uv_size": [0.75, -0.25]} + } + } + ] + }, + { + "name": "group4", + "parent": "body", + "pivot": [0, 4.20969, 0], + "cubes": [ + { + "origin": [-0.9343, 2.47269, -0.387], + "size": [1.8686, 1.554, 0.774], + "uv": { + "east": {"uv": [5, 6], "uv_size": [0.75, 1.5]}, + "west": {"uv": [6, 6], "uv_size": [0.75, 1.5]} + } + }, + { + "origin": [-0.9343, 2.47269, -0.387], + "size": [1.8686, 1.554, 0.774], + "pivot": [0, 3.45969, 0], + "rotation": [0, 45, 0], + "uv": { + "east": {"uv": [7, 0], "uv_size": [0.75, 1.5]}, + "west": {"uv": [7, 2], "uv_size": [0.75, 1.5]}, + "up": {"uv": [2, 5], "uv_size": [1.75, 0.75]} + } + }, + { + "origin": [-0.387, 2.47269, -0.9343], + "size": [0.774, 1.554, 1.8686], + "uv": { + "north": {"uv": [4, 7], "uv_size": [0.75, 1.5]}, + "south": {"uv": [7, 4], "uv_size": [0.75, 1.5]} + } + }, + { + "origin": [-0.387, 2.47269, -0.9343], + "size": [0.774, 1.554, 1.8686], + "pivot": [0, 3.45969, 0], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [7, 6], "uv_size": [0.75, 1.5]}, + "south": {"uv": [0, 8], "uv_size": [0.75, 1.5]}, + "up": {"uv": [5, 2], "uv_size": [0.75, 1.75]} + } + } + ] + }, + { + "name": "group5", + "parent": "body", + "pivot": [0, 4.20969, 0], + "cubes": [ + { + "origin": [-0.42183, 2.47026, -1.01839], + "size": [0.84366, 0.25886, 2.03678], + "uv": { + "north": {"uv": [13, 13], "uv_size": [0.75, 0.25]}, + "south": {"uv": [0, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [3, 0], "uv_size": [0.75, 2]}, + "down": {"uv": [3, 4], "uv_size": [0.75, -2]} + } + }, + { + "origin": [-0.42183, 2.47026, -1.01839], + "size": [0.84366, 0.25886, 2.03678], + "pivot": [0, 3.54609, 0], + "rotation": [0, 45, 0], + "uv": { + "north": {"uv": [14, 0], "uv_size": [0.75, 0.25]}, + "south": {"uv": [1, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [4, 0], "uv_size": [0.75, 2]}, + "down": {"uv": [4, 4], "uv_size": [0.75, -2]} + } + }, + { + "origin": [-1.01839, 2.47026, -0.42183], + "size": [2.03678, 0.25886, 0.84366], + "uv": { + "east": {"uv": [14, 1], "uv_size": [0.75, 0.25]}, + "west": {"uv": [2, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [3, 4], "uv_size": [2, 0.75]}, + "down": {"uv": [0, 5.75], "uv_size": [2, -0.75]} + } + }, + { + "origin": [-1.01839, 2.47026, -0.42183], + "size": [2.03678, 0.25886, 0.84366], + "pivot": [0, 3.54609, 0], + "rotation": [0, 45, 0], + "uv": { + "east": {"uv": [14, 2], "uv_size": [0.75, 0.25]}, + "west": {"uv": [3, 14], "uv_size": [0.75, 0.25]}, + "up": {"uv": [5, 0], "uv_size": [2, 0.75]}, + "down": {"uv": [5, 1.75], "uv_size": [2, -0.75]} + } + } + ] + }, + { + "name": "group", + "parent": "body", + "pivot": [0, 4.38969, 0], + "cubes": [ + { + "origin": [-0.9343, 3.25269, -0.387], + "size": [0.4286, 0.774, 0.774], + "pivot": [0, 3.63969, 0], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [3, 12], "uv_size": [0.5, 0.75]}, + "east": {"uv": [10, 2], "uv_size": [0.75, 0.75]}, + "south": {"uv": [12, 3], "uv_size": [0.5, 0.75]}, + "west": {"uv": [3, 10], "uv_size": [0.75, 0.75]} + } + }, + { + "origin": [-0.387, 4.14539, -0.387], + "size": [0.774, 0.4286, 0.774], + "pivot": [0, 3.63969, 0], + "rotation": [0, 0, 45], + "uv": { + "north": {"uv": [4, 12], "uv_size": [0.75, 0.5]}, + "south": {"uv": [12, 4], "uv_size": [0.75, 0.5]}, + "up": {"uv": [10, 4], "uv_size": [0.75, 0.75]}, + "down": {"uv": [5, 10.75], "uv_size": [0.75, -0.75]} + } + }, + { + "origin": [-0.387, 3.25269, -0.9343], + "size": [0.774, 0.774, 0.4286], + "pivot": [0, 3.63969, 0], + "rotation": [-45, 0, 0], + "uv": { + "north": {"uv": [6, 10], "uv_size": [0.75, 0.75]}, + "east": {"uv": [5, 12], "uv_size": [0.5, 0.75]}, + "south": {"uv": [10, 6], "uv_size": [0.75, 0.75]}, + "west": {"uv": [12, 5], "uv_size": [0.5, 0.75]} + } + }, + { + "origin": [-0.387, 4.14539, -0.387], + "size": [0.774, 0.4286, 0.774], + "pivot": [0, 3.63969, 0], + "rotation": [-45, 0, 0], + "uv": { + "east": {"uv": [6, 12], "uv_size": [0.75, 0.5]}, + "west": {"uv": [12, 6], "uv_size": [0.75, 0.5]}, + "up": {"uv": [10, 7], "uv_size": [0.75, 0.75]}, + "down": {"uv": [10, 8.75], "uv_size": [0.75, -0.75]} + } + } + ] + } + ] + } + ] +} \ No newline at end of file