From 3da7853265b037fcb49d4f535f808242b67bd641 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 30 Apr 2018 14:10:30 +0200 Subject: [PATCH] Added zebras and finished witches --- .../com/minelittlepony/PonyRenderManager.java | 1 + .../java/com/minelittlepony/model/PMAPI.java | 4 ++ .../model/components/PonySnout.java | 5 ++ .../model/player/ModelZebra.java | 50 +++++++++++++++ .../model/player/PlayerModels.java | 3 +- .../model/ponies/ModelWitchPony.java | 57 ++++++++++++++---- .../minelittlepony/pony/data/PonyRace.java | 2 +- .../render/ponies/RenderPonyWitch.java | 3 +- .../textures/entity/witch_pony.png | Bin 620 -> 769 bytes 9 files changed, 111 insertions(+), 14 deletions(-) create mode 100644 src/main/java/com/minelittlepony/model/player/ModelZebra.java diff --git a/src/main/java/com/minelittlepony/PonyRenderManager.java b/src/main/java/com/minelittlepony/PonyRenderManager.java index 30355b2b..554d7ce7 100644 --- a/src/main/java/com/minelittlepony/PonyRenderManager.java +++ b/src/main/java/com/minelittlepony/PonyRenderManager.java @@ -58,6 +58,7 @@ public class PonyRenderManager { registerPlayerSkin(manager, PlayerModels.EARTH); registerPlayerSkin(manager, PlayerModels.PEGASUS); registerPlayerSkin(manager, PlayerModels.ALICORN); + registerPlayerSkin(manager, PlayerModels.ZEBRA); } private void registerPlayerSkin(RenderManager manager, PlayerModels playerModel) { diff --git a/src/main/java/com/minelittlepony/model/PMAPI.java b/src/main/java/com/minelittlepony/model/PMAPI.java index 2d02aa5e..945dcec5 100644 --- a/src/main/java/com/minelittlepony/model/PMAPI.java +++ b/src/main/java/com/minelittlepony/model/PMAPI.java @@ -3,6 +3,7 @@ package com.minelittlepony.model; import com.minelittlepony.model.player.ModelAlicorn; import com.minelittlepony.model.player.ModelEarthPony; import com.minelittlepony.model.player.ModelPegasus; +import com.minelittlepony.model.player.ModelZebra; import com.minelittlepony.model.ponies.ModelIllagerPony; import com.minelittlepony.model.ponies.ModelSkeletonPony; import com.minelittlepony.model.ponies.ModelVillagerPony; @@ -30,6 +31,9 @@ public final class PMAPI { public static final ModelWrapper alicorn = new ModelWrapper(new ModelAlicorn(false)); public static final ModelWrapper alicornSmall = new ModelWrapper(new ModelAlicorn(true)); + public static final ModelWrapper zebra = new ModelWrapper(new ModelZebra(false)); + public static final ModelWrapper zebraSmall = new ModelWrapper(new ModelZebra(true)); + public static final ModelWrapper zombie = new ModelWrapper(new ModelZombiePony()); public static final ModelWrapper skeleton = new ModelWrapper(new ModelSkeletonPony()); public static final ModelWrapper villager = new ModelWrapper(new ModelVillagerPony()); diff --git a/src/main/java/com/minelittlepony/model/components/PonySnout.java b/src/main/java/com/minelittlepony/model/components/PonySnout.java index 05c12fd9..a525acb0 100644 --- a/src/main/java/com/minelittlepony/model/components/PonySnout.java +++ b/src/main/java/com/minelittlepony/model/components/PonySnout.java @@ -20,6 +20,11 @@ public class PonySnout { pony.bipedHead.addChild(mare); } + public void rotate(float x, float y, float z) { + mare.rotate(x, y, z); + stallion.rotate(x, y, z); + } + public void init(float yOffset, float stretch) { mare.offset(HEAD_CENTRE_X, HEAD_CENTRE_Y, HEAD_CENTRE_Z) .around(HEAD_RP_X, HEAD_RP_Y + yOffset, HEAD_RP_Z) diff --git a/src/main/java/com/minelittlepony/model/player/ModelZebra.java b/src/main/java/com/minelittlepony/model/player/ModelZebra.java new file mode 100644 index 00000000..89fc4c5e --- /dev/null +++ b/src/main/java/com/minelittlepony/model/player/ModelZebra.java @@ -0,0 +1,50 @@ +package com.minelittlepony.model.player; + +import com.minelittlepony.render.PonyRenderer; + +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; + +public class ModelZebra extends ModelEarthPony { + + public PonyRenderer bristles; + + public ModelZebra(boolean useSmallArms) { + super(useSmallArms); + } + + @Override + protected void renderHead(Entity entity, float move, float swing, float age, float headYaw, float headPitch, float scale) { + GlStateManager.translate(0, -0.1F, 0); + super.renderHead(entity, move, swing, age, headYaw, headPitch, scale); + } + + @Override + protected void renderNeck() { + GlStateManager.scale(1, 1.1F, 1); + super.renderNeck(); + } + + @Override + protected void initHeadTextures() { + super.initHeadTextures(); + + bristles = new PonyRenderer(this, 56, 32); + bipedHead.addChild(bristles); + } + + @Override + protected void initHeadPositions(float yOffset, float stretch) { + super.initHeadPositions(yOffset, stretch); + + bristles.offset(-1, -1, -3) + .box(0, -10, 2, 2, 6, 2, scale) + .box(0, -10, 4, 2, 8, 2, scale) + .box(0, -8, 6, 2, 6, 2, scale) + .rotateAngleX = 0.3F; + bristles.child(0).offset(-1.01F, 2, -7) //0.01 to prevent z-fighting + .box(0, -10, 4, 2, 8, 2, scale) + .box(0, -8, 6, 2, 6, 2, scale) + .rotateAngleX = -1F; + } +} diff --git a/src/main/java/com/minelittlepony/model/player/PlayerModels.java b/src/main/java/com/minelittlepony/model/player/PlayerModels.java index af91e7f7..28f03673 100644 --- a/src/main/java/com/minelittlepony/model/player/PlayerModels.java +++ b/src/main/java/com/minelittlepony/model/player/PlayerModels.java @@ -10,7 +10,8 @@ public enum PlayerModels { @Deprecated HUMAN("default", "slim", () -> PMAPI.pony, () -> PMAPI.ponySmall), EARTH("earthpony", "slimearthpony", () -> PMAPI.earthpony, () -> PMAPI.earthponySmall), PEGASUS("pegasus", "slimpegasus", () -> PMAPI.pegasus, () -> PMAPI.pegasusSmall), - ALICORN("alicorn", "slimalicorn", () -> PMAPI.alicorn, () -> PMAPI.alicornSmall); + ALICORN("alicorn", "slimalicorn", () -> PMAPI.alicorn, () -> PMAPI.alicornSmall), + ZEBRA("zebra", "slimzebra", () -> PMAPI.zebra, () -> PMAPI.zebraSmall); private final ModelResolver normal, slim; diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java index e8daea9c..1429fbcb 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelWitchPony.java @@ -3,38 +3,73 @@ package com.minelittlepony.model.ponies; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityWitch; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; import static com.minelittlepony.model.PonyModelConstants.HEAD_RP_X; import static com.minelittlepony.model.PonyModelConstants.HEAD_RP_Y; import static com.minelittlepony.model.PonyModelConstants.HEAD_RP_Z; +import static com.minelittlepony.model.PonyModelConstants.PI; +import com.minelittlepony.model.player.ModelZebra; import com.minelittlepony.render.PonyRenderer; -public class ModelWitchPony extends ModelVillagerPony { +public class ModelWitchPony extends ModelZebra { private static final ResourceLocation WITCH_TEXTURES = new ResourceLocation("textures/entity/witch.png"); private PonyRenderer witchHat; public ModelWitchPony() { - super(); + super(false); + } + + public void setLivingAnimations(EntityLivingBase entity, float move, float swing, float ticks) { + EntityWitch witch = ((EntityWitch) entity); + + leftArmPose = ArmPose.EMPTY; + rightArmPose = witch.getHeldItemMainhand().isEmpty() ? ArmPose.EMPTY : ArmPose.ITEM; } @Override public void setRotationAngles(float move, float swing, float ticks, float headYaw, float headPitch, float scale, Entity entity) { - rightArmPose = ArmPose.EMPTY; - leftArmPose = ((EntityWitch) entity).getHeldItemMainhand().isEmpty() ? ArmPose.EMPTY : ArmPose.ITEM; - super.setRotationAngles(move, swing, ticks, headYaw, headPitch, scale, entity); - if (leftArmPose != ArmPose.EMPTY) { - if (!canCast()) { - bipedRightArm.rotateAngleX = -2 * (float)Math.PI/3; - bipedRightArm.offsetZ = 0.1f; - } - unicornArmRight.offsetZ = -0.1f; + + if (((EntityWitch)entity).isDrinkingPotion()) { + float noseRot = MathHelper.sin(entity.ticksExisted); + + snout.rotate(noseRot * 4.5F * 0.02F, 0, noseRot * 2.5F * 0.02F); + } else { + snout.rotate(0, 0, 0); } + + + if (rightArmPose != ArmPose.EMPTY) { + float rot = (float)(Math.tan(ticks / 7) + Math.sin(ticks / 3)); + if (rot > 1) rot = 1; + if (rot < -1) rot = -1; + + float legDrinkingAngle = -1 * PI/3 + rot; + + bipedRightArm.rotateAngleX = legDrinkingAngle; + bipedRightArmwear.rotateAngleX = legDrinkingAngle; + bipedRightArm.rotateAngleY = 0.1F; + bipedRightArmwear.rotateAngleY = 0.1F; + bipedRightArm.offsetZ = 0.1f; + bipedRightArmwear.offsetZ = 0.1f; + + if (rot > 0) rot = 0; + + bipedHead.rotateAngleX = -rot / 2; + bipedHeadwear.rotateAngleX = -rot / 2; + } else { + bipedRightArm.offsetZ = 0; + bipedRightArmwear.offsetZ = 0; + } + + } @Override diff --git a/src/main/java/com/minelittlepony/pony/data/PonyRace.java b/src/main/java/com/minelittlepony/pony/data/PonyRace.java index 508f8707..d0f973c8 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonyRace.java +++ b/src/main/java/com/minelittlepony/pony/data/PonyRace.java @@ -10,7 +10,7 @@ public enum PonyRace implements ITriggerPixelMapped { UNICORN(0xd19fe4, PlayerModels.ALICORN, false, true), ALICORN(0xfef9fc, PlayerModels.ALICORN, true, true), CHANGELING(0x282b29, PlayerModels.ALICORN, true, true), - ZEBRA(0xd0cccf, PlayerModels.EARTH, false, false), + ZEBRA(0xd0cccf, PlayerModels.ZEBRA, false, false), REFORMED_CHANGELING(0xcaed5a, PlayerModels.ALICORN, true, true), GRIFFIN(0xae9145, PlayerModels.PEGASUS, true, false), HIPPOGRIFF(0xd6ddac, PlayerModels.PEGASUS, true, false); diff --git a/src/main/java/com/minelittlepony/render/ponies/RenderPonyWitch.java b/src/main/java/com/minelittlepony/render/ponies/RenderPonyWitch.java index cdfd4e3c..ccb72cac 100644 --- a/src/main/java/com/minelittlepony/render/ponies/RenderPonyWitch.java +++ b/src/main/java/com/minelittlepony/render/ponies/RenderPonyWitch.java @@ -30,7 +30,8 @@ public class RenderPonyWitch extends RenderPonyMob { GlStateManager.translate(-0.1F, 0.7F, 0); GlStateManager.rotate(110, 1, 0, 0); } else { - GlStateManager.translate(-0.2F, -0.3F, -0.7F); + GlStateManager.translate(0, -0.3F, -0.8F); + GlStateManager.rotate(10, 1, 0, 0); } } }; diff --git a/src/main/resources/assets/minelittlepony/textures/entity/witch_pony.png b/src/main/resources/assets/minelittlepony/textures/entity/witch_pony.png index 215d140060ac2ce9cb9b3e7d26a09349a8699960..e0743364e7eef06a2eb3b6ac69d35a324b1494a9 100644 GIT binary patch delta 745 zcmV* zIWH4p3n8mWNC4zkp4#6T9LoUIG8Yf1s`ADVfQGF6e0gy-SKWXH8t&E&KtLz}z*b&- ziBAYshCpco#TqZWkghyt09v{3Ofy+!<9JKY&dd*~E`N7m2Od7vWS%shUBAp=+*l2i-~#1~A4xvD&5ktQ~-< zwRu_RaL!3V0H*o934o6=@lB28uK)pcdfe_>YCi^f0D60?fU>Ggv5y2m9aoo)|3d=6R-9rV z2%sram;^OV8VdlN4krL(F5r4V6Fk7w6C?l$Kmw2eBmfCO0+0YC011F6Q5Phj%}d|U z*DeV_0?;r3n0E>&?;lXLb^tER=B~@`{N9lV;9|P>7d-&et`EQ0b@w;=9AMf7YJ>+s zAu#eDka9rk1^UJAv5(VM}^pt3&Emz_K z6g1SKN8$)buk(%7&`_o3?UZ6Dhv-o9*}dUn6wyf{@zy5Ptx&{bT^75P;3|r*{^l zFrL~80boB%3gGDM#aA4+W_ozChMDc7*QlQg9z*GOwGvPl3S`773` zwRd((GJ62W*MARt#_~Nq3k4t#Qq=>ve0q1z0D3li0IVr?3(c396aeiy6oB+2CbbL1 zo)t7Fs%ijaERUKze{-4L*RIpt+p4dBEac>oaz9x)e-Hre3|i7&^o{qq8# zGjtaa5h))tUC(mCi0$8Mwd#y@rHu?qYTxGj@^Zxu4(*>8z*1z-30j&g7J%0s27sB1 z_j|w+W|^5lzWTBK{{@{AxuKUErW^nO002ovPDHLkV1kVp1)%@{