From 5ff19ea93da37e64caa2b4db8b453a07a713f8d0 Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 14 Dec 2024 22:42:53 +0100 Subject: [PATCH] Clean up models a little and fix strider/spike models --- .../api/model/ModelWithHooves.java | 4 -- .../minelittlepony/api/model/PonyModel.java | 2 +- .../minelittlepony/api/model/SubModel.java | 15 +++- .../client/model/AbstractPonyModel.java | 38 +---------- .../client/model/ClientPonyModel.java | 36 ++++++++-- .../client/model/entity/PiglinPonyModel.java | 2 +- .../model/entity/PillagerPonyModel.java | 2 +- .../client/model/entity/SkeleponyModel.java | 6 +- .../client/model/entity/SpikeModel.java | 12 ---- .../model/entity/race/AlicornModel.java | 2 +- .../model/entity/race/EarthPonyModel.java | 3 +- .../model/entity/race/PegasusModel.java | 2 +- .../model/entity/race/SeaponyModel.java | 2 +- .../model/entity/race/UnicornModel.java | 26 ++++--- .../render/entity/AbstractPonyRenderer.java | 1 + .../client/render/entity/StriderRenderer.java | 3 + .../entity/npc/AbstractNpcRenderer.java | 4 +- .../entity/npc/VillagerPonyRenderer.java | 32 ++++++--- .../entity/npc/ZomponyVillagerRenderer.java | 30 ++++---- .../minelittlepony/models/entity/strider.json | 68 ++++++++++--------- 20 files changed, 144 insertions(+), 146 deletions(-) diff --git a/src/main/java/com/minelittlepony/api/model/ModelWithHooves.java b/src/main/java/com/minelittlepony/api/model/ModelWithHooves.java index a104efdf..bd55877a 100644 --- a/src/main/java/com/minelittlepony/api/model/ModelWithHooves.java +++ b/src/main/java/com/minelittlepony/api/model/ModelWithHooves.java @@ -2,14 +2,10 @@ package com.minelittlepony.api.model; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.entity.model.ModelWithArms; -import net.minecraft.client.render.entity.state.PlayerEntityRenderState; -import net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose; import net.minecraft.util.Arm; public interface ModelWithHooves extends ModelWithArms { ModelPart getForeLeg(Arm side); ModelPart getHindLeg(Arm side); - - ArmPose getArmPoseForSide(S state, Arm side); } diff --git a/src/main/java/com/minelittlepony/api/model/PonyModel.java b/src/main/java/com/minelittlepony/api/model/PonyModel.java index cdc73b86..2197a6d2 100644 --- a/src/main/java/com/minelittlepony/api/model/PonyModel.java +++ b/src/main/java/com/minelittlepony/api/model/PonyModel.java @@ -8,7 +8,7 @@ import net.minecraft.client.util.math.MatrixStack; import com.minelittlepony.api.pony.meta.Race; import com.minelittlepony.mson.api.MsonModel; -public interface PonyModel extends MsonModel, ModelWithHooves, ModelWithHat, ModelWithHead { +public interface PonyModel extends MsonModel, ModelWithHooves, ModelWithHead { ModelPart getBodyPart(BodyPart part); diff --git a/src/main/java/com/minelittlepony/api/model/SubModel.java b/src/main/java/com/minelittlepony/api/model/SubModel.java index d27621da..88436c08 100644 --- a/src/main/java/com/minelittlepony/api/model/SubModel.java +++ b/src/main/java/com/minelittlepony/api/model/SubModel.java @@ -4,12 +4,25 @@ import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.state.EntityRenderState; import net.minecraft.client.util.math.MatrixStack; -public interface SubModel { +import com.minelittlepony.mson.util.RenderList; + +import java.util.function.Supplier; + +public interface SubModel extends RenderList { + static RenderList toRenderList(Supplier> part) { + return (stack, vertices, overlay, light, color) -> part.get().renderPart(stack, vertices, overlay, light, color); + } + /** * Renders this model component. */ void renderPart(MatrixStack stack, VertexConsumer vertices, int overlay, int light, int color); + @Override + default void accept(MatrixStack stack, VertexConsumer vertices, int overlay, int light, int color) { + renderPart(stack, vertices, overlay, light, color); + } + /** * Sets the model's various rotation angles. */ diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index 6d103407..56816934 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -10,7 +10,6 @@ import com.minelittlepony.util.MathUtil.Angles; import java.util.ArrayList; import java.util.List; -import java.util.function.Supplier; import net.minecraft.client.model.ModelPart; import net.minecraft.client.render.VertexConsumer; @@ -22,8 +21,6 @@ import net.minecraft.item.consume.UseAction; import net.minecraft.util.*; import net.minecraft.util.math.*; -import org.jetbrains.annotations.Nullable; - /** * Foundation class for all types of ponies. */ @@ -53,10 +50,6 @@ public abstract class AbstractPonyModel extends Clien private final List> parts = new ArrayList<>(); - @Deprecated - @Nullable - protected T currentState; - public AbstractPonyModel(ModelPart tree, boolean smallArms) { super(tree, smallArms); @@ -73,14 +66,7 @@ public abstract class AbstractPonyModel extends Clien return part; } - protected RenderList forPart(Supplier> part) { - return (stack, vertices, overlay, light, color) -> part.get().renderPart(stack, vertices, overlay, light, color); - } - - protected RenderList forPart(SubModel part) { - return (stack, vertices, overlay, light, color) -> part.renderPart(stack, vertices, overlay, light, color); - } - + @SuppressWarnings({"deprecation"}) protected RenderList withStage(BodyPart part, RenderList action) { return (stack, vertices, overlay, light, color) -> { stack.push(); @@ -97,22 +83,8 @@ public abstract class AbstractPonyModel extends Clien mainRenderList.accept(stack, vertices, overlay, light, color); } - /** - * Sets the model's various rotation angles. - */ - @SuppressWarnings("unchecked") - @Override - public final void setAngles(PlayerEntityRenderState entity) { - currentState = (T)entity; - super.setAngles((PlayerEntityRenderState)entity); - - resetPivot(head, neck, leftArm, rightArm, leftLeg, rightLeg); - - setModelVisibilities((T)entity); - setModelAngles((T)entity); - } - protected void setModelVisibilities(T state) { + resetPivot(head, neck, leftArm, rightArm, leftLeg, rightLeg); hat.visible = head.visible && !state.attributes.isHorsey; if (state.attributes.isHorsey) { neck.visible = head.visible; @@ -122,7 +94,7 @@ public abstract class AbstractPonyModel extends Clien parts.forEach(part -> part.setVisible(body.visible, state)); } - @SuppressWarnings("unchecked") + @SuppressWarnings({"unchecked", "deprecation"}) public void copyTransforms(BipedEntityModel model) { super.copyTransforms(model); if (model instanceof AbstractPonyModel m) { @@ -147,10 +119,6 @@ public abstract class AbstractPonyModel extends Clien ArmPose left = getArmPose(entity, Arm.LEFT); ArmPose right = getArmPose(entity, Arm.RIGHT); - if (onSetModelAngles != null) { - onSetModelAngles.poseModel(this, entity); - } - if (!entity.attributes.isSwimming && !entity.attributes.isGoingFast) { alignArmForAction(entity, getArm(Arm.LEFT), left, right, 1); alignArmForAction(entity, getArm(Arm.RIGHT), right, left, -1); diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java index 8adf9107..9ebbaa76 100644 --- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java @@ -20,6 +20,10 @@ public abstract class ClientPonyModel extends PlayerE @Nullable protected PosingCallback onSetModelAngles; + @Deprecated + @Nullable + protected T currentState; + public ClientPonyModel(ModelPart tree, boolean smallArms) { super(tree, smallArms); } @@ -28,6 +32,29 @@ public abstract class ClientPonyModel extends PlayerE onSetModelAngles = callback; } + /** + * Sets the model's various rotation angles. + */ + @SuppressWarnings("unchecked") + @Override + public final void setAngles(PlayerEntityRenderState entity) { + currentState = (T)entity; + super.setAngles((PlayerEntityRenderState)entity); + + setModelVisibilities((T)entity); + setModelAngles((T)entity); + + if (onSetModelAngles != null) { + onSetModelAngles.poseModel(this, (T)entity); + } + } + + protected void setModelVisibilities(T state) { + } + + protected void setModelAngles(T entity) { + } + @Override public ModelPart getForeLeg(Arm side) { return getArm(side); @@ -39,13 +66,8 @@ public abstract class ClientPonyModel extends PlayerE } @Override - public final ArmPose getArmPoseForSide(S state, Arm side) { - return getArmPose(state, side); - } - - @Override - public void setHatVisible(boolean visible) { - + public ArmPose getArmPose(PlayerEntityRenderState state, Arm side) { + return super.getArmPose(state, side); } static void resetPivot(ModelPart part) { diff --git a/src/main/java/com/minelittlepony/client/model/entity/PiglinPonyModel.java b/src/main/java/com/minelittlepony/client/model/entity/PiglinPonyModel.java index e9b9243c..54247793 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/PiglinPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/PiglinPonyModel.java @@ -20,7 +20,7 @@ public class PiglinPonyModel extends ZomponyModel { } @Override - protected ArmPose getArmPose(PlayerEntityRenderState p, Arm arm) { + public ArmPose getArmPose(PlayerEntityRenderState p, Arm arm) { if (p instanceof PonyPiglinRenderer.State state) { return switch (arm) { case LEFT -> switch (state.activity) { diff --git a/src/main/java/com/minelittlepony/client/model/entity/PillagerPonyModel.java b/src/main/java/com/minelittlepony/client/model/entity/PillagerPonyModel.java index 5711df4a..06c2b7d9 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/PillagerPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/PillagerPonyModel.java @@ -15,7 +15,7 @@ public class PillagerPonyModel extends ChangelingModel extends AlicornMo @SuppressWarnings("unchecked") @Override - protected BipedEntityModel.ArmPose getArmPose(PlayerEntityRenderState state, Arm arm) { - boolean isMain = arm == state.mainArm; - - if (isMain) { + public BipedEntityModel.ArmPose getArmPose(PlayerEntityRenderState state, Arm arm) { + if (arm == state.mainArm) { ItemStack mainHand = state.getMainHandStack(); if (!mainHand.isEmpty()) { return mainHand.getItem() == Items.BOW && ((T)state).isAttacking ? ArmPose.BOW_AND_ARROW : ArmPose.ITEM; diff --git a/src/main/java/com/minelittlepony/client/model/entity/SpikeModel.java b/src/main/java/com/minelittlepony/client/model/entity/SpikeModel.java index baa567f0..1096bc09 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/SpikeModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/SpikeModel.java @@ -20,18 +20,8 @@ public class SpikeModel extends BipedEntityModel { @Override public void setAngles(StriderRenderer.State entity) { - entity.limbFrequency *= 2; - entity.limbAmplitudeMultiplier *= 1.5F; - entity.baby = false; - - head.pivotX = 0; - head.pivotZ = 0; - head.pivotY = 0; - super.setAngles(entity); - leftArm.pivotY++; - rightArm.pivotY++; body.pitch += 0.15F; if (entity.saddled) { @@ -78,8 +68,6 @@ public class SpikeModel extends BipedEntityModel { tail.yaw = (float)Math.sin(entity.age / 20F) / 40 + (float)Math.sin(entity.limbFrequency / 20F) / 4; tail2.yaw = tail.yaw / 2; tail3.yaw = tail2.yaw / 2; - - getRootPart().pivotY += 7; } } diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/AlicornModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/AlicornModel.java index 87a1bd43..5dc7e679 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/AlicornModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/AlicornModel.java @@ -14,13 +14,13 @@ public class AlicornModel extends UnicornModel imp public AlicornModel(ModelPart tree, boolean smallArms) { super(tree, smallArms); + bodyRenderList.add(SubModel.toRenderList(this::getWings)); } @Override public void init(ModelView context) { super.init(context); wings = addPart(context.findByName("wings")); - bodyRenderList.add(forPart(this::getWings)); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/EarthPonyModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/EarthPonyModel.java index 614e0ef9..7ff817e7 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/EarthPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/EarthPonyModel.java @@ -9,7 +9,6 @@ import com.minelittlepony.mson.api.ModelView; import net.minecraft.client.model.ModelPart; public class EarthPonyModel extends AbstractPonyModel { - protected SubModel tail; protected PonySnout snout; protected PonyEars ears; @@ -33,7 +32,7 @@ public class EarthPonyModel extends AbstractPonyModel snout = addPart(context.findByName("snout")); ears = addPart(context.findByName("ears")); - bodyRenderList.add(forPart(tail)); + bodyRenderList.add(tail); } protected void setModelVisibilities(T state) { diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/PegasusModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/PegasusModel.java index a4ca2ceb..2df584c7 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/PegasusModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/PegasusModel.java @@ -20,7 +20,7 @@ public class PegasusModel extends EarthPonyModel i public void init(ModelView context) { super.init(context); wings = addPart(context.findByName("wings")); - bodyRenderList.add(forPart(this::getWings)); + bodyRenderList.add(SubModel.toRenderList(this::getWings)); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java index f2fcb837..82ba393c 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/SeaponyModel.java @@ -40,7 +40,7 @@ public class SeaponyModel extends UnicornModel { super.init(context); setVisible(true); bodyRenderList.clear(); - bodyRenderList.add(body).add(body::rotate).add(forPart(tail)).add(leftFin, centerFin, rightFin); + bodyRenderList.add(body).add(body::rotate).add(tail).add(leftFin, centerFin, rightFin); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java index e7975f8e..1994d4a6 100644 --- a/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java +++ b/src/main/java/com/minelittlepony/client/model/entity/race/UnicornModel.java @@ -25,10 +25,23 @@ public class UnicornModel extends EarthPonyModel { protected UnicornHorn horn; + @SuppressWarnings("deprecation") public UnicornModel(ModelPart tree, boolean smallArms) { super(tree, smallArms); unicornArmRight = tree.getChild("right_cast"); unicornArmLeft = tree.getChild("left_cast"); + headRenderList.add(RenderList.of().add(head::rotate).add(SubModel.toRenderList(() -> horn))); + mainRenderList.add(withStage(BodyPart.HEAD, RenderList.of().add(head::rotate).add((stack, vertices, overlay, light, color) -> { + if (isCasting(currentState)) { + horn.renderMagic(stack, vertices, currentState == null ? 0 : currentState.attributes.metadata.glowColor()); + } + }))); + } + + @Override + public void init(ModelView context) { + super.init(context); + horn = addPart(context.findByName("horn")); } public boolean isCasting(T state) { @@ -41,16 +54,6 @@ public class UnicornModel extends EarthPonyModel { return isCasting(state) ? 0 : 1; } - @Override - public void init(ModelView context) { - super.init(context); - horn = addPart(context.findByName("horn")); - headRenderList.add(RenderList.of().add(head::rotate).add(forPart(horn))); - mainRenderList.add(withStage(BodyPart.HEAD, RenderList.of().add(head::rotate).add((stack, vertices, overlay, light, color) -> { - horn.renderMagic(stack, vertices, currentState == null ? 0 : currentState.attributes.metadata.glowColor()); - })).checked(() -> isCasting(currentState))); - } - @Override protected void rotateLegs(T state) { super.rotateLegs(state); @@ -69,9 +72,10 @@ public class UnicornModel extends EarthPonyModel { unicornArmLeft.pitch -= LEG_SNEAKING_PITCH_ADJUSTMENT; } + @SuppressWarnings("deprecation") @Override public ModelPart getArm(Arm side) { - if (currentState != null && currentState.hasMagicGlow() && getArmPoseForSide(currentState, side) != ArmPose.EMPTY && PonyConfig.getInstance().tpsmagic.get()) { + if (currentState != null && currentState.hasMagicGlow() && getArmPose(currentState, side) != ArmPose.EMPTY && PonyConfig.getInstance().tpsmagic.get()) { return side == Arm.LEFT ? unicornArmLeft : unicornArmRight; } return super.getArm(side); diff --git a/src/main/java/com/minelittlepony/client/render/entity/AbstractPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/AbstractPonyRenderer.java index 49a97b0b..77abb19c 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/AbstractPonyRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/AbstractPonyRenderer.java @@ -168,6 +168,7 @@ public abstract class AbstractPonyRenderer< return renderer; } + @Deprecated @SuppressWarnings({"unchecked", "rawtypes"}) public static < T extends MobEntity, diff --git a/src/main/java/com/minelittlepony/client/render/entity/StriderRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/StriderRenderer.java index 983f08bb..504d0c53 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/StriderRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/StriderRenderer.java @@ -41,6 +41,9 @@ public class StriderRenderer extends MobEntityRenderer model) { - - } + protected abstract void initializeModel(ClientPonyModel model); @Override public Identifier getDefaultTexture(S villager, Wearable wearable) { diff --git a/src/main/java/com/minelittlepony/client/render/entity/npc/VillagerPonyRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/npc/VillagerPonyRenderer.java index 5ea94cd5..c4d9f280 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/npc/VillagerPonyRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/npc/VillagerPonyRenderer.java @@ -1,14 +1,11 @@ package com.minelittlepony.client.render.entity.npc; import net.minecraft.client.render.entity.EntityRendererFactory; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.passive.VillagerEntity; import net.minecraft.util.math.MathHelper; -import com.minelittlepony.api.model.ModelAttributes; -import com.minelittlepony.api.model.PonyModel; -import com.minelittlepony.api.pony.Pony; import com.minelittlepony.client.VariatedTextureSupplier; +import com.minelittlepony.client.model.ClientPonyModel; import com.minelittlepony.client.render.entity.npc.textures.*; public class VillagerPonyRenderer extends AbstractNpcRenderer { @@ -22,18 +19,31 @@ public class VillagerPonyRenderer extends AbstractNpcRenderer model) { + model.onSetModelAngles((m, state) -> { + if (state.headRolling) { + m.head.roll = 0.3F * MathHelper.sin(0.45F * state.age); + m.head.pitch = 0.4F; + } else { + m.head.roll = 0; + } + }); + } + @Override public State createRenderState() { return new State(); } + @Override + public void updateRenderState(VillagerEntity entity, State state, float tickDelta) { + super.updateRenderState(entity, state, tickDelta); + state.headRolling = entity.getHeadRollingTimeLeft() > 0; + state.yawDegrees = 0.3F * MathHelper.sin(0.45F * state.age); + } + public static class State extends SillyPonyTextureSupplier.State { - public int headRollingTime; - public void updateState(LivingEntity entity, PonyModel model, Pony pony, ModelAttributes.Mode mode) { - super.updateState(entity, model, pony, mode); - if (((VillagerEntity)entity).getHeadRollingTimeLeft() > 0) { - this.yawDegrees = 0.3F * MathHelper.sin(0.45F * age); - } - } + public boolean headRolling; } } diff --git a/src/main/java/com/minelittlepony/client/render/entity/npc/ZomponyVillagerRenderer.java b/src/main/java/com/minelittlepony/client/render/entity/npc/ZomponyVillagerRenderer.java index 17956650..6cf69a56 100644 --- a/src/main/java/com/minelittlepony/client/render/entity/npc/ZomponyVillagerRenderer.java +++ b/src/main/java/com/minelittlepony/client/render/entity/npc/ZomponyVillagerRenderer.java @@ -2,16 +2,14 @@ package com.minelittlepony.client.render.entity.npc; import net.minecraft.client.render.entity.EntityRendererFactory; import net.minecraft.client.render.entity.model.BipedEntityModel.ArmPose; -import net.minecraft.entity.LivingEntity; import net.minecraft.entity.mob.ZombieVillagerEntity; import com.minelittlepony.api.model.*; -import com.minelittlepony.api.pony.Pony; import com.minelittlepony.client.VariatedTextureSupplier; import com.minelittlepony.client.model.ClientPonyModel; import com.minelittlepony.client.render.entity.npc.textures.*; -public class ZomponyVillagerRenderer extends AbstractNpcRenderer { +public class ZomponyVillagerRenderer extends AbstractNpcRenderer { private static final TextureSupplier FORMATTER = TextureSupplier.formatted("minelittlepony", "textures/entity/zombie_villager/zombie_%s.png"); private static final TextureSupplier TEXTURES = TextureSupplier.ofPool( VariatedTextureSupplier.BACKGROUND_ZOMPONIES_POOL, @@ -26,26 +24,24 @@ public class ZomponyVillagerRenderer extends AbstractNpcRenderer model) { + public void updateRenderState(ZombieVillagerEntity entity, SillyPonyTextureSupplier.State state, float tickDelta) { + super.updateRenderState(entity, state, tickDelta); + if (entity.isConverting()) { + state.bodyYaw += (float) (Math.cos(entity.age * 3.25D) * (Math.PI / 4)); + } + } + + @Override + protected void initializeModel(ClientPonyModel model) { model.onSetModelAngles((m, state) -> { - if (m.getArmPoseForSide(state, state.mainArm) == ArmPose.EMPTY) { + if (m.getArmPose(state, state.mainArm) == ArmPose.EMPTY) { MobPosingHelper.rotateUndeadArms(state, m, state.limbFrequency, state.age); } }); } - - public static class State extends SillyPonyTextureSupplier.State { - @Override - public void updateState(LivingEntity entity, PonyModel model, Pony pony, ModelAttributes.Mode mode) { - super.updateState(entity, model, pony, mode); - if (((ZombieVillagerEntity)entity).isConverting()) { - bodyYaw += (float) (Math.cos(entity.age * 3.25D) * (Math.PI / 4)); - } - } - } } diff --git a/src/main/resources/assets/minelittlepony/models/entity/strider.json b/src/main/resources/assets/minelittlepony/models/entity/strider.json index a80f5ac5..693f51e5 100644 --- a/src/main/resources/assets/minelittlepony/models/entity/strider.json +++ b/src/main/resources/assets/minelittlepony/models/entity/strider.json @@ -5,17 +5,18 @@ }, "data": { "head": { + "pivot": [0, 7, 0], "cubes": [ { "from": [-3, -7, -3], "size": [ 6, 6, 6] }, { "from": [-2, -3, -4.5], "size": [ 4, 2, 2], "texture": { "v": 12 } } ], "children": { - "hat": { - "texture": { "u": 24, "v": 0 }, - "cubes": [ - { "from": [-3, -7, -3], "size": [ 6, 6, 6], "dilate": [0.5, 0.5, 0.5] } - ] - }, + "hat": { + "texture": { "u": 24, "v": 0 }, + "cubes": [ + { "from": [-3, -7, -3], "size": [ 6, 6, 6], "dilate": [0.5, 0.5, 0.5] } + ] + }, "left_ear": { "texture": { "u": 18 }, "pivot": [2.5, -4, 0], @@ -65,15 +66,16 @@ } }, "body": { + "pivot": [0, 7, 0], "cubes": [ { "from": [-2, -1, -2], "size": [ 4, 2, 3], "texture": { "v": 21 } }, { "from": [-3, 1, -2.5], "size": [ 6, 4, 5], "texture": { "v": 26 } }, { "from": [-4, 5, -3], "size": [ 8, 8, 8], "texture": { "v": 35 } } ], "children": { - "jacket": { - "visible": false - }, + "jacket": { + "visible": false + }, "spines": { "texture": { "u": 8, "v": 12 }, "pivot": [-1, 0, 0], @@ -133,58 +135,58 @@ } }, "right_arm": { - "pivot": [-5, 3, 0], + "pivot": [-5, 11, 0], "texture": { "u": 24 }, "cubes": [ { "from": [-1, -2, -2], "size": [ 3, 3, 3], "texture": { "v": 12 }, "dilate": -0.25 }, { "from": [-0.5, 0.75, -1.5], "size": [ 2, 6, 2], "texture": { "v": 18 } } ], - "children": { - "right_sleeve": { - "visible": false - } - } + "children": { + "right_sleeve": { + "visible": false + } + } }, "left_arm": { - "pivot": [5, 3, 0], + "pivot": [5, 11, 0], "mirror": [true, false, false], "texture": { "u": 36 }, "cubes": [ { "from": [-2, -2, -2], "size": [ 3, 3, 3], "texture": { "v": 12 }, "dilate": -0.25 }, { "from": [-1.5, 0.75, -1.5], "size": [ 2, 6, 2], "texture": { "v": 18 } } ], - "children": { - "left_sleeve": { - "visible": false - } - } + "children": { + "left_sleeve": { + "visible": false + } + } }, "right_leg": { - "pivot": [-1.9, 3, 0], + "pivot": [-1.9, 19, 2], "texture": { "u": 24 }, "cubes": [ { "from": [-2, 0, -2], "size": [ 3, 4, 3], "texture": { "v": 28 } }, { "from": [-2, 4, -3], "size": [ 3, 1, 4], "texture": { "v": 35 } } ], - "children": { - "right_pants": { - "visible": false - } - } + "children": { + "right_pants": { + "visible": false + } + } }, "left_leg": { - "pivot": [1.9, 3, 0], + "pivot": [1.9, 19, 2], "texture": { "u": 38 }, "mirror": [true, false, false], "cubes": [ { "from": [-1, 0, -2], "size": [ 3, 4, 3 ], "texture": { "v": 28 } }, { "from": [-1, 4, -3], "size": [ 3, 1, 4], "texture": { "v": 35 } } ], - "children": { - "left_pants": { - "visible": false - } - } + "children": { + "left_pants": { + "visible": false + } + } } } }