diff --git a/src/main/java/com/minelittlepony/client/model/ModelPonyHead.java b/src/main/java/com/minelittlepony/client/model/ModelPonyHead.java index 1b19ada4..40c84a44 100644 --- a/src/main/java/com/minelittlepony/client/model/ModelPonyHead.java +++ b/src/main/java/com/minelittlepony/client/model/ModelPonyHead.java @@ -1,9 +1,9 @@ package com.minelittlepony.client.model; +import com.minelittlepony.client.model.part.PonyEars; import com.minelittlepony.client.model.part.PonySnout; import com.minelittlepony.client.model.part.UnicornHorn; import com.minelittlepony.client.pony.PonyData; -import com.minelittlepony.client.util.render.Part; import com.minelittlepony.model.ICapitated; import com.minelittlepony.pony.IPonyData; import net.minecraft.client.model.ModelPart; @@ -17,26 +17,10 @@ public class ModelPonyHead extends SkullOverlayEntityModel implements ICapitated private UnicornHorn horn; - private ModelPart ears; + private PonyEars ears; public IPonyData metadata = new PonyData(); - public ModelPonyHead() { - super(); - - snout = new PonySnout(this, 0, -3, 2); - horn = new UnicornHorn(this, 0, 0, 0, -1, 4); - - snout.init(0, 0); - - ears = new Part(this, 0, 0) - .offset(0, -3, 2).around(0, 0, -2) - .tex(12, 16).box(-3.999F, -6, 1, 2, 2, 2, 0) - .flip().box( 1.999F, -6, 1, 2, 2, 2, 0); - - getHead().addChild(ears); - } - @Override public ModelPart getHead() { return skull; @@ -50,7 +34,7 @@ public class ModelPonyHead extends SkullOverlayEntityModel implements ICapitated @Override public void render(MatrixStack stack, VertexConsumer vertices, int overlayUv, int lightUv, float red, float green, float blue, float alpha) { snout.isHidden = metadata.getRace().isHuman(); - ears.visible = !snout.isHidden; + ears.setVisible(!snout.isHidden); snout.setGender(metadata.getGender()); diff --git a/src/main/java/com/minelittlepony/client/model/PonyElytra.java b/src/main/java/com/minelittlepony/client/model/PonyElytra.java index 85a0908f..defc558f 100644 --- a/src/main/java/com/minelittlepony/client/model/PonyElytra.java +++ b/src/main/java/com/minelittlepony/client/model/PonyElytra.java @@ -2,14 +2,11 @@ package com.minelittlepony.client.model; import net.minecraft.client.model.ModelPart; import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.client.render.VertexConsumer; import net.minecraft.client.render.entity.model.AnimalModel; -import net.minecraft.client.util.math.MatrixStack; import net.minecraft.entity.LivingEntity; import net.minecraft.util.math.Vec3d; import com.google.common.collect.ImmutableList; -import com.minelittlepony.client.util.render.Part; import static com.minelittlepony.model.PonyModelConstants.*; @@ -20,13 +17,8 @@ public class PonyElytra extends AnimalModel { public boolean isSneaking; - private Part rightWing = new Part(this, 22, 0); - private Part leftWing = new Part(this, 22, 0); - - public PonyElytra() { - leftWing .box(-10, 0, 0, 10, 20, 2, 1); - rightWing.flip().box( 0, 0, 0, 10, 20, 2, 1); - } + private ModelPart rightWing; + private ModelPart leftWing; @Override protected Iterable getHeadParts() { diff --git a/src/main/java/com/minelittlepony/client/model/part/PonyEars.java b/src/main/java/com/minelittlepony/client/model/part/PonyEars.java index 17c52d57..c616bfba 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonyEars.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonyEars.java @@ -13,18 +13,18 @@ import java.util.UUID; public class PonyEars implements IPart { - private final Part head; + private final ModelPart head; private final boolean bat; - private Part right; - private Part left; + private ModelPart right; + private ModelPart left; - public > PonyEars(Part head, boolean bat) { + public > PonyEars(ModelPart head, boolean bat) { this.head = head; this.bat = bat; } - @Override + @Deprecated public void init(float yOffset, float stretch) { right = head.child().tex(12, 16).box(-4, -6, 1, 2, 2, 2, stretch); diff --git a/src/main/java/com/minelittlepony/client/model/part/PonySnout.java b/src/main/java/com/minelittlepony/client/model/part/PonySnout.java index dff16f38..09c3a8ad 100644 --- a/src/main/java/com/minelittlepony/client/model/part/PonySnout.java +++ b/src/main/java/com/minelittlepony/client/model/part/PonySnout.java @@ -24,14 +24,14 @@ public class PonySnout implements IPart { private final ICapitated head; public > PonySnout(T pony) { - this(pony, 0, 0, 0); + this(pony, 0, 0); } - public > PonySnout(T pony, int x, int y, int z) { + public > PonySnout(T pony, int y, int z) { head = pony; - mare = new Part(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z + 0.25F); - stallion = new Part(pony).offset(HEAD_CENTRE_X + x, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z); + mare = new Part(pony).offset(HEAD_CENTRE_X, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z + 0.25F); + stallion = new Part(pony).offset(HEAD_CENTRE_X, HEAD_CENTRE_Y + y, HEAD_CENTRE_Z + z); pony.getHead().addChild(stallion); pony.getHead().addChild(mare); diff --git a/src/main/java/com/minelittlepony/client/model/part/UnicornHorn.java b/src/main/java/com/minelittlepony/client/model/part/UnicornHorn.java index 4005857f..08abf318 100644 --- a/src/main/java/com/minelittlepony/client/model/part/UnicornHorn.java +++ b/src/main/java/com/minelittlepony/client/model/part/UnicornHorn.java @@ -29,23 +29,23 @@ public class UnicornHorn implements IPart { protected boolean isVisible = true; - public > UnicornHorn(T pony, float yOffset, float stretch) { - this(pony, yOffset, stretch, 0, 0, 0); + public > UnicornHorn(T pony) { + this(pony, 0, 0); } - public > UnicornHorn(T pony, float yOffset, float stretch, int x, int y, int z) { + public > UnicornHorn(T pony, int y, int z) { horn = new Part(pony, 0, 3); glow = new Part(pony, 0, 3); - horn.offset(HORN_X + x, HORN_Y + y, HORN_Z + z) - .around(HEAD_RP_X, HEAD_RP_Y + yOffset, HEAD_RP_Z) - .box(0, 0, 0, 1, 4, 1, stretch) + horn.offset(HORN_X, HORN_Y + y, HORN_Z + z) + .around(HEAD_RP_X, HEAD_RP_Y, HEAD_RP_Z) + .box(0, 0, 0, 1, 4, 1, 0) .pitch = 0.5F; - glow.offset(HORN_X + x, HORN_Y + y, HORN_Z + z) - .around(HEAD_RP_X, HEAD_RP_Y + yOffset, HEAD_RP_Z) - .cone(0, 0, 0, 1, 4, 1, stretch + 0.5F) - .cone(0, 0, 0, 1, 3, 1, stretch + 0.8F); + glow.offset(HORN_X, HORN_Y + y, HORN_Z + z) + .around(HEAD_RP_X, HEAD_RP_Y , HEAD_RP_Z) + .cone(0, 0, 0, 1, 4, 1, 0.5F) + .cone(0, 0, 0, 1, 3, 1, 0.8F); } @Override diff --git a/src/main/resources/assets/minelittlepony/models/elytra.json b/src/main/resources/assets/minelittlepony/models/elytra.json new file mode 100644 index 00000000..0a0b1a17 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/elytra.json @@ -0,0 +1,13 @@ +{ + "texture": {"u": 22, "w": 64, "h": 32}, + "left_wing": { + "cubes": [ + {"from": [-10, 0, 0], "size": [10, 20, 2], "stretch": 1} + ] + }, + "right_wing": { + "cubes": [ + {"from": [ 0, 0, 0], "size": [10, 20, 2], "stretch": 1, "mirror": true} + ] + } +} diff --git a/src/main/resources/assets/minelittlepony/models/head.json b/src/main/resources/assets/minelittlepony/models/head.json new file mode 100644 index 00000000..a8140fc0 --- /dev/null +++ b/src/main/resources/assets/minelittlepony/models/head.json @@ -0,0 +1,34 @@ +{ + "texture": {"u": 32, "w": 64, "h": 64}, + "locals": { + "snout_x": -3, + "snout_z": 2, + "horn_x": -1, + "horn_z": 4 + }, + "head": { + "cubes": [ + {"from": [-4, -8, -4], "size": [8, 8, 8], "stretch": 0.25} + ], + "children": [ + { + "type": "mson:slot", + "name": "snout", + "implementation": "com.minelittlepony.client.model.part.PonySnout", + "content: "minelitlepony:components/snout" + }, + { + "type": "mson:slot", + "name": "ears", + "implementation": "com.minelittlepony.client.model.part.PonyEars", + "content": "minelittlepony:components/ears" + }, + { + "type": "mson:slot", + "name": "horn", + "implementation": "com.minelittlepony.client.model.part.UnicornHorn", + "content": "minelittlepony:components/horn" + } + ] + } +}