From 02c19ee69aea7714824721286e9b6f7cad97ad6a Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 28 Oct 2018 10:54:21 +0200 Subject: [PATCH] Added changeling models --- .../java/com/minelittlepony/model/PMAPI.java | 3 ++ .../model/components/BugWings.java | 26 ++++++++++ .../model/components/ModelBatWing.java | 18 ++----- .../model/components/ModelBugWing.java | 51 +++++++++++++++++++ .../model/components/ModelWing.java | 5 +- .../model/player/ModelAlicorn.java | 4 ++ .../model/player/ModelBatpony.java | 26 +--------- .../model/player/ModelChangeling.java | 25 +++++++++ .../model/player/ModelPegasus.java | 4 ++ .../model/player/PlayerModels.java | 21 +++++--- .../minelittlepony/pony/data/PonyRace.java | 4 +- 11 files changed, 135 insertions(+), 52 deletions(-) create mode 100644 src/main/java/com/minelittlepony/model/components/BugWings.java create mode 100644 src/main/java/com/minelittlepony/model/components/ModelBugWing.java create mode 100644 src/main/java/com/minelittlepony/model/player/ModelChangeling.java diff --git a/src/main/java/com/minelittlepony/model/PMAPI.java b/src/main/java/com/minelittlepony/model/PMAPI.java index 00bf27ec..8832de2f 100644 --- a/src/main/java/com/minelittlepony/model/PMAPI.java +++ b/src/main/java/com/minelittlepony/model/PMAPI.java @@ -28,6 +28,9 @@ public interface PMAPI { ModelWrapper zebra = new ModelWrapper(new ModelZebra(false)); ModelWrapper zebraSmall = new ModelWrapper(new ModelZebra(true)); + ModelWrapper bug = new ModelWrapper(new ModelChangeling(false)); + ModelWrapper bugSmall = new ModelWrapper(new ModelChangeling(true)); + ModelWrapper seapony = new ModelWrapper(new ModelSeapony()); ModelWrapper zombie = new ModelWrapper(new ModelZombiePony()); diff --git a/src/main/java/com/minelittlepony/model/components/BugWings.java b/src/main/java/com/minelittlepony/model/components/BugWings.java new file mode 100644 index 00000000..40f67c2c --- /dev/null +++ b/src/main/java/com/minelittlepony/model/components/BugWings.java @@ -0,0 +1,26 @@ +package com.minelittlepony.model.components; + +import com.minelittlepony.model.AbstractPonyModel; +import com.minelittlepony.model.capabilities.IModelPegasus; + +public class BugWings extends PegasusWings { + + public BugWings(T model, float yOffset, float stretch) { + super(model, yOffset, stretch); + } + + @Override + public void init(float yOffset, float stretch) { + int x = 57; + + leftWing = new ModelBugWing(pegasus, false, false, yOffset, stretch, x, 16); + rightWing = new ModelBugWing(pegasus, true, false, yOffset, stretch, x - 1, 16); + } + + @Override + public ModelWing getRight() { + //pegasus.boxList.clear(); + //init(0, 0); + return rightWing; + } +} diff --git a/src/main/java/com/minelittlepony/model/components/ModelBatWing.java b/src/main/java/com/minelittlepony/model/components/ModelBatWing.java index 6d680ca8..ce52e577 100644 --- a/src/main/java/com/minelittlepony/model/components/ModelBatWing.java +++ b/src/main/java/com/minelittlepony/model/components/ModelBatWing.java @@ -4,14 +4,6 @@ import com.minelittlepony.model.AbstractPonyModel; import com.minelittlepony.model.capabilities.IModelPegasus; import com.minelittlepony.render.model.PlaneRenderer; -import static com.minelittlepony.model.PonyModelConstants.EXT_WING_RP_X; -import static com.minelittlepony.model.PonyModelConstants.EXT_WING_RP_Y; -import static com.minelittlepony.model.PonyModelConstants.EXT_WING_RP_Z; -import static com.minelittlepony.model.PonyModelConstants.HEAD_RP_X; -import static com.minelittlepony.model.PonyModelConstants.ROTATE_90; -import static com.minelittlepony.model.PonyModelConstants.WING_FOLDED_RP_Y; -import static com.minelittlepony.model.PonyModelConstants.WING_FOLDED_RP_Z; - public class ModelBatWing extends ModelWing { public ModelBatWing(T pegasus, boolean right, boolean legacy, float y, float scale, int texX, int texY) { @@ -53,15 +45,11 @@ public class ModelBatWing extends M .box(-0.4997F, 0, 3, 1, 7, 1, scale); PlaneRenderer skin = new PlaneRenderer(pegasus) - .tex(56, 32); + .tex(56, 32) + .mirror(right) + .west(0, 0, -7, 16, 8, scale); extended.child(0).child(skin); - - if (right) { - skin .west(0, 0, -7, 16, 8, scale); - } else { - skin.flip().west(0, 0, -7, 16, 8, scale); - } } @Override diff --git a/src/main/java/com/minelittlepony/model/components/ModelBugWing.java b/src/main/java/com/minelittlepony/model/components/ModelBugWing.java new file mode 100644 index 00000000..3aad94c0 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/components/ModelBugWing.java @@ -0,0 +1,51 @@ +package com.minelittlepony.model.components; + +import com.minelittlepony.model.AbstractPonyModel; +import com.minelittlepony.model.capabilities.IModelPegasus; +import com.minelittlepony.render.model.PlaneRenderer; + +public class ModelBugWing extends ModelWing { + + public ModelBugWing(T pegasus, boolean right, boolean legacy, float y, float scale, int texX, int texY) { + super(pegasus, right, legacy, y, scale, texX, texY); + } + + @Override + protected void addClosedWing(boolean right, float y, float scale) { + + } + + @Override + protected void addFeathers(boolean right, boolean l, float rotationPointY, float scale) { + float r = right ? -1 : 1; + + extended.around((r * (EXT_WING_RP_X - 2)), EXT_WING_RP_Y + rotationPointY, EXT_WING_RP_Z - 2) + .mirror(right) + .rotateAngleY = r * 3; + + PlaneRenderer primary = new PlaneRenderer(pegasus) + .tex(56, 17) + .mirror(right) + .west(0, 0, -7, 15, 8, scale); + PlaneRenderer secondary = new PlaneRenderer(pegasus) + .tex(56, 32) + .rotate(-0.5F, r * 0.3F, r / 3) + .mirror(right) + .west(0, 0, -7, 15, 8, scale); + + extended.child(primary); + extended.child(secondary); + } + + @Override + public void rotateWalking(float swing) { + folded.rotateAngleY = swing * 0.05F; + } + + @Override + public void render(float scale) { + if (pegasus.wingsAreOpen()) { + extended.render(scale); + } + } +} diff --git a/src/main/java/com/minelittlepony/model/components/ModelWing.java b/src/main/java/com/minelittlepony/model/components/ModelWing.java index 30032c9b..c98ac623 100644 --- a/src/main/java/com/minelittlepony/model/components/ModelWing.java +++ b/src/main/java/com/minelittlepony/model/components/ModelWing.java @@ -1,15 +1,14 @@ package com.minelittlepony.model.components; -import static com.minelittlepony.model.PonyModelConstants.*; - import com.minelittlepony.model.AbstractPonyModel; +import com.minelittlepony.model.PonyModelConstants; import com.minelittlepony.model.capabilities.IModelPegasus; import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.render.model.PonyRenderer; import net.minecraft.client.renderer.GlStateManager; -public class ModelWing { +public class ModelWing implements PonyModelConstants { protected final T pegasus; diff --git a/src/main/java/com/minelittlepony/model/player/ModelAlicorn.java b/src/main/java/com/minelittlepony/model/player/ModelAlicorn.java index 41e4a0f9..cca3e98f 100644 --- a/src/main/java/com/minelittlepony/model/player/ModelAlicorn.java +++ b/src/main/java/com/minelittlepony/model/player/ModelAlicorn.java @@ -16,6 +16,10 @@ public class ModelAlicorn extends ModelUnicorn implements IModelPegasus { @Override public void init(float yOffset, float stretch) { super.init(yOffset, stretch); + initWings(yOffset, stretch); + } + + protected void initWings(float yOffset, float stretch) { wings = new PegasusWings<>(this, yOffset, stretch); } diff --git a/src/main/java/com/minelittlepony/model/player/ModelBatpony.java b/src/main/java/com/minelittlepony/model/player/ModelBatpony.java index 308b9ada..0421342a 100644 --- a/src/main/java/com/minelittlepony/model/player/ModelBatpony.java +++ b/src/main/java/com/minelittlepony/model/player/ModelBatpony.java @@ -1,42 +1,20 @@ package com.minelittlepony.model.player; import com.minelittlepony.model.components.BatWings; -import com.minelittlepony.model.components.PegasusWings; import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.render.model.PonyRenderer; -import net.minecraft.entity.Entity; - -import com.minelittlepony.model.capabilities.IModelPegasus; - -public class ModelBatpony extends ModelEarthPony implements IModelPegasus { - - public PegasusWings wings; +public class ModelBatpony extends ModelPegasus { public ModelBatpony(boolean smallArms) { super(smallArms); } @Override - public void init(float yOffset, float stretch) { - super.init(yOffset, stretch); + protected void initWings(float yOffset, float stretch) { wings = new BatWings<>(this, yOffset, stretch); } - @Override - public void setRotationAngles(float move, float swing, float ticks, float headYaw, float headPitch, float scale, Entity entity) { - super.setRotationAngles(move, swing, ticks, headYaw, headPitch, scale, entity); - wings.setRotationAndAngles(rainboom, move, swing, 0, ticks); - } - - @Override - protected void renderBody(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) { - super.renderBody(entity, move, swing, ticks, headYaw, headPitch, scale); - - wings.renderPart(scale); - } - - @Override protected void initEars(PonyRenderer head, float yOffset, float stretch) { head.child() diff --git a/src/main/java/com/minelittlepony/model/player/ModelChangeling.java b/src/main/java/com/minelittlepony/model/player/ModelChangeling.java new file mode 100644 index 00000000..8bda7668 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/player/ModelChangeling.java @@ -0,0 +1,25 @@ +package com.minelittlepony.model.player; + +import net.minecraft.util.math.MathHelper; + +import com.minelittlepony.model.components.BugWings; + +public class ModelChangeling extends ModelAlicorn { + + public ModelChangeling(boolean smallArms) { + super(smallArms); + } + + @Override + protected void initWings(float yOffset, float stretch) { + wings = new BugWings<>(this, yOffset, stretch); + } + + @Override + public float getWingRotationFactor(float ticks) { + if (isFlying()) { + return MathHelper.sin(ticks * 3) + ROTATE_270 + 0.4f; + } + return WING_ROT_Z_SNEAK; + } +} diff --git a/src/main/java/com/minelittlepony/model/player/ModelPegasus.java b/src/main/java/com/minelittlepony/model/player/ModelPegasus.java index 457a1471..c183755e 100644 --- a/src/main/java/com/minelittlepony/model/player/ModelPegasus.java +++ b/src/main/java/com/minelittlepony/model/player/ModelPegasus.java @@ -16,6 +16,10 @@ public class ModelPegasus extends ModelEarthPony implements IModelPegasus { @Override public void init(float yOffset, float stretch) { super.init(yOffset, stretch); + initWings(yOffset, stretch); + } + + protected void initWings(float yOffset, float stretch) { wings = new PegasusWings<>(this, yOffset, stretch); } diff --git a/src/main/java/com/minelittlepony/model/player/PlayerModels.java b/src/main/java/com/minelittlepony/model/player/PlayerModels.java index 2cf890b0..9aa98c90 100644 --- a/src/main/java/com/minelittlepony/model/player/PlayerModels.java +++ b/src/main/java/com/minelittlepony/model/player/PlayerModels.java @@ -13,13 +13,14 @@ public enum PlayerModels { * The default non-pony model. This is typically handled my the vanilla renderer. */ DEFAULT("default", "slim", () -> PMAPI.earthpony, () -> PMAPI.earthponySmall), - EARTH("earthpony", "slimearthpony", () -> PMAPI.earthpony, () -> PMAPI.earthponySmall), - PEGASUS("pegasus", "slimpegasus", () -> PMAPI.pegasus, () -> PMAPI.pegasusSmall), - BATPONY("batpony", "slimbatpony", () -> PMAPI.bat, () -> PMAPI.batSmall), - UNICORN("unicorn", "slimunicorn", () -> PMAPI.unicorn, () -> PMAPI.unicornSmall), - ALICORN("alicorn", "slimalicorn", () -> PMAPI.alicorn, () -> PMAPI.alicornSmall), - ZEBRA("zebra", "slimzebra", () -> PMAPI.zebra, () -> PMAPI.zebraSmall), - SEAPONY("seapony", "slimseapony", () -> PMAPI.seapony, () -> PMAPI.seapony) { + EARTH("earthpony", () -> PMAPI.earthpony, () -> PMAPI.earthponySmall), + PEGASUS("pegasus", () -> PMAPI.pegasus, () -> PMAPI.pegasusSmall), + BATPONY("batpony", () -> PMAPI.bat, () -> PMAPI.batSmall), + UNICORN("unicorn", () -> PMAPI.unicorn, () -> PMAPI.unicornSmall), + ALICORN("alicorn", () -> PMAPI.alicorn, () -> PMAPI.alicornSmall), + CHANGELING("changeling", () -> PMAPI.bug, () -> PMAPI.bugSmall), + ZEBRA("zebra", () -> PMAPI.zebra, () -> PMAPI.zebraSmall), + SEAPONY("seapony", () -> PMAPI.seapony, () -> PMAPI.seapony) { @Override public RenderPonyPlayer createRenderer(RenderManager manager, boolean slimArms) { return new RenderSeaponyPlayer(manager, slimArms, PlayerModels.UNICORN.getModel(slimArms), getModel(slimArms)); @@ -30,9 +31,13 @@ public enum PlayerModels { private final String normalKey, slimKey; + PlayerModels(String key, ModelResolver normal, ModelResolver slim) { + this(key, "slim" + key, normal, slim); + } + PlayerModels(String normalKey, String slimKey, ModelResolver normal, ModelResolver slim) { this.normalKey = normalKey; - this.slimKey = slimKey; + this.slimKey = normalKey; this.normal = normal; this.slim = slim; diff --git a/src/main/java/com/minelittlepony/pony/data/PonyRace.java b/src/main/java/com/minelittlepony/pony/data/PonyRace.java index 80ea03ee..b820c199 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonyRace.java +++ b/src/main/java/com/minelittlepony/pony/data/PonyRace.java @@ -10,9 +10,9 @@ public enum PonyRace implements ITriggerPixelMapped { PEGASUS(0x88caf0, PlayerModels.PEGASUS, true, false), UNICORN(0xd19fe4, PlayerModels.UNICORN, false, true), ALICORN(0xfef9fc, PlayerModels.ALICORN, true, true), - CHANGELING(0x282b29, PlayerModels.ALICORN, true, true), + CHANGELING(0x282b29, PlayerModels.CHANGELING, true, true), ZEBRA(0xd0cccf, PlayerModels.ZEBRA, false, false), - REFORMED_CHANGELING(0xcaed5a, PlayerModels.ALICORN, true, true), + REFORMED_CHANGELING(0xcaed5a, PlayerModels.CHANGELING, true, true), GRIFFIN(0xae9145, PlayerModels.PEGASUS, true, false), HIPPOGRIFF(0xd6ddac, PlayerModels.PEGASUS, true, false), BATPONY(0xeeeeee, PlayerModels.BATPONY, true, false),