From a1f40c9b598aab2dc3e5e4c81a5a15052601d009 Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 27 Jun 2019 15:50:34 +0200 Subject: [PATCH] Ponified Pillagers --- .../client/model/ClientPonyModel.java | 7 ++++ .../model/entities/ModelIllagerPony.java | 5 --- .../model/entities/ModelPillagerPony.java | 35 ++++++++++++++++++ .../model/entities/ModelSkeletonPony.java | 3 -- .../client/model/races/ModelUnicorn.java | 6 +++ .../client/render/entities/MobRenderers.java | 1 + .../render/entities/RenderPonyPillager.java | 27 +++++++++++++- .../render/layer/LayerHeldItemIllager.java | 6 +-- .../textures/entity/illager/pillager_pony.png | Bin 0 -> 1566 bytes 9 files changed, 77 insertions(+), 13 deletions(-) create mode 100644 src/main/java/com/minelittlepony/client/model/entities/ModelPillagerPony.java create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/illager/pillager_pony.png diff --git a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java index c8345eda..01a5d120 100644 --- a/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/ClientPonyModel.java @@ -4,6 +4,7 @@ import net.minecraft.client.model.Cuboid; import net.minecraft.client.render.entity.model.BipedEntityModel; import net.minecraft.client.render.entity.model.PlayerEntityModel; import net.minecraft.entity.LivingEntity; +import net.minecraft.util.AbsoluteHand; import com.minelittlepony.client.pony.PonyData; import com.minelittlepony.model.ModelAttributes; @@ -84,6 +85,12 @@ public abstract class ClientPonyModel extends PlayerEnti return handSwingProgress; } + + @Override + public Cuboid getArm(AbsoluteHand side) { + return super.getArm(side); + } + /** * Copies this model's attributes into the passed model. */ diff --git a/src/main/java/com/minelittlepony/client/model/entities/ModelIllagerPony.java b/src/main/java/com/minelittlepony/client/model/entities/ModelIllagerPony.java index 83579a9f..1c3e1172 100644 --- a/src/main/java/com/minelittlepony/client/model/entities/ModelIllagerPony.java +++ b/src/main/java/com/minelittlepony/client/model/entities/ModelIllagerPony.java @@ -48,9 +48,4 @@ public class ModelIllagerPony extends ModelMobPony { aimBow(arm, ticks); } } - - @Override - public Cuboid getArm(AbsoluteHand side) { - return canCast() ? getUnicornArmForSide(side) : super.getArm(side); - } } diff --git a/src/main/java/com/minelittlepony/client/model/entities/ModelPillagerPony.java b/src/main/java/com/minelittlepony/client/model/entities/ModelPillagerPony.java new file mode 100644 index 00000000..47895cce --- /dev/null +++ b/src/main/java/com/minelittlepony/client/model/entities/ModelPillagerPony.java @@ -0,0 +1,35 @@ +package com.minelittlepony.client.model.entities; + +import net.minecraft.entity.mob.IllagerEntity; +import net.minecraft.entity.mob.PillagerEntity; +import net.minecraft.util.AbsoluteHand; + +import com.minelittlepony.client.model.races.ModelChangeling; + +public class ModelPillagerPony extends ModelChangeling { + + public ModelPillagerPony() { + super(false); + } + + @Override + public void animateModel(T entity, float move, float swing, float ticks) { + ArmPose holdingPose = getHoldingPose(entity.getState()); + + if (holdingPose != ArmPose.EMPTY) { + boolean rightHanded = entity.getMainHand() == AbsoluteHand.RIGHT; + + leftArmPose = rightHanded ? ArmPose.EMPTY : holdingPose; + rightArmPose = rightHanded ? holdingPose : ArmPose.EMPTY; + } + } + + protected ArmPose getHoldingPose(IllagerEntity.State state) { + switch (state) { + case BOW_AND_ARROW: return ArmPose.BOW_AND_ARROW; + case CROSSBOW_CHARGE: return ArmPose.CROSSBOW_CHARGE; + case CROSSBOW_HOLD: return ArmPose.CROSSBOW_HOLD; + default: return ArmPose.EMPTY; + } + } +} diff --git a/src/main/java/com/minelittlepony/client/model/entities/ModelSkeletonPony.java b/src/main/java/com/minelittlepony/client/model/entities/ModelSkeletonPony.java index 76db0f50..a754a7c9 100644 --- a/src/main/java/com/minelittlepony/client/model/entities/ModelSkeletonPony.java +++ b/src/main/java/com/minelittlepony/client/model/entities/ModelSkeletonPony.java @@ -54,9 +54,6 @@ public class ModelSkeletonPony extends ModelMobPony leftArmPose = pose; } } - - - super.animateModel(entity, move, swing, ticks); } @Override diff --git a/src/main/java/com/minelittlepony/client/model/races/ModelUnicorn.java b/src/main/java/com/minelittlepony/client/model/races/ModelUnicorn.java index 5e80b232..db6f6616 100644 --- a/src/main/java/com/minelittlepony/client/model/races/ModelUnicorn.java +++ b/src/main/java/com/minelittlepony/client/model/races/ModelUnicorn.java @@ -4,6 +4,7 @@ import com.minelittlepony.client.model.components.UnicornHorn; import com.minelittlepony.client.util.render.PonyRenderer; import com.minelittlepony.model.IUnicorn; +import net.minecraft.client.model.Cuboid; import net.minecraft.entity.LivingEntity; import net.minecraft.util.AbsoluteHand; import net.minecraft.util.math.MathHelper; @@ -163,4 +164,9 @@ public class ModelUnicorn extends ModelEarthPony impl unicornArmRight.box(armX - armWidth, armY, armZ, armWidth, armLength, armDepth, stretch + .25F) .around(-rarmX, yOffset + rarmY, 0); } + + @Override + public Cuboid getArm(AbsoluteHand side) { + return canCast() ? getUnicornArmForSide(side) : super.getArm(side); + } } diff --git a/src/main/java/com/minelittlepony/client/render/entities/MobRenderers.java b/src/main/java/com/minelittlepony/client/render/entities/MobRenderers.java index 88ef7686..2bf8bb60 100644 --- a/src/main/java/com/minelittlepony/client/render/entities/MobRenderers.java +++ b/src/main/java/com/minelittlepony/client/render/entities/MobRenderers.java @@ -22,6 +22,7 @@ public enum MobRenderers implements Setting { pony.switchRenderer(state, WitchEntity.class, RenderPonyWitch::new); pony.switchRenderer(state, ZombieVillagerEntity.class, RenderPonyZombieVillager::new); pony.switchRenderer(state, WanderingTraderEntity.class, RenderPonyTrader::new); + pony.switchRenderer(state, PillagerEntity.class, RenderPonyPillager::new); } }, ZOMBIES { diff --git a/src/main/java/com/minelittlepony/client/render/entities/RenderPonyPillager.java b/src/main/java/com/minelittlepony/client/render/entities/RenderPonyPillager.java index 82953e86..017be91e 100644 --- a/src/main/java/com/minelittlepony/client/render/entities/RenderPonyPillager.java +++ b/src/main/java/com/minelittlepony/client/render/entities/RenderPonyPillager.java @@ -1,5 +1,28 @@ package com.minelittlepony.client.render.entities; -public class RenderPonyPillager { - // TODO: Render Pillagers as changelings +import net.minecraft.client.render.entity.EntityRenderDispatcher; +import net.minecraft.entity.mob.PillagerEntity; +import net.minecraft.util.Identifier; + +import com.minelittlepony.client.model.entities.ModelPillagerPony; +import com.minelittlepony.client.render.layer.LayerHeldItemIllager; +import com.minelittlepony.client.render.layer.LayerHeldPonyItem; + +public class RenderPonyPillager extends RenderPonyMob> { + + private static final Identifier TEXTURES = new Identifier("minelittlepony", "textures/entity/illager/pillager_pony.png"); + + public RenderPonyPillager(EntityRenderDispatcher manager) { + super(manager, new ModelPillagerPony()); + } + + @Override + public Identifier findTexture(PillagerEntity entity) { + return TEXTURES; + } + + @Override + protected LayerHeldPonyItem> createItemHoldingLayer() { + return new LayerHeldItemIllager<>(this); + } } diff --git a/src/main/java/com/minelittlepony/client/render/layer/LayerHeldItemIllager.java b/src/main/java/com/minelittlepony/client/render/layer/LayerHeldItemIllager.java index 1a3e0dcf..014e654f 100644 --- a/src/main/java/com/minelittlepony/client/render/layer/LayerHeldItemIllager.java +++ b/src/main/java/com/minelittlepony/client/render/layer/LayerHeldItemIllager.java @@ -3,12 +3,12 @@ package com.minelittlepony.client.render.layer; import net.minecraft.entity.mob.IllagerEntity; import net.minecraft.util.AbsoluteHand; -import com.minelittlepony.client.model.entities.ModelIllagerPony; +import com.minelittlepony.client.model.races.ModelAlicorn; import com.minelittlepony.client.render.IPonyRender; -public class LayerHeldItemIllager extends LayerHeldPonyItem> { +public class LayerHeldItemIllager> extends LayerHeldPonyItem { - public LayerHeldItemIllager(IPonyRender> livingPony) { + public LayerHeldItemIllager(IPonyRender livingPony) { super(livingPony); } diff --git a/src/main/resources/assets/minelittlepony/textures/entity/illager/pillager_pony.png b/src/main/resources/assets/minelittlepony/textures/entity/illager/pillager_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..149b11ae75c4e351ea74fb4bb2a99bbccba8e388 GIT binary patch literal 1566 zcmV+(2I2XMP)Em_7=D}|*Un#4XI&FCZBxh3#>7Gp8w@V9#0iNTLgF%VL*mSV3uxkm5NFQigj5ZQ z!^SR5;nD#@B6ZPdVQ5kTt%fG<4~?CCsq=A2Y&nVJ*w{&1npcYaQ-AjRKHu~H`E!}` z7cbC@XJ5k?w?Ae8Ae+rn1T2|M2Gwe{ZwmmqTn+$`&*vdYQr~{LTxR?{dzd|uwfn2g z+Wl1=CXpnm3j{;>*enGAP2FU?fbR$Zj(`}3r!(`$Dc3+4OmhUlpouKY%t07vH``X@ zr{Z(qxj48)+g;KCw0aEy=r9n5GQjF1qws$>vaqng6bc3N*&V+(XI*dUV0i(_WC8%t z(go-(9XvM=P2Kd*fPV@=&;4-1xH$I>Lw$VR~++y$6e^j zQ_mwgqq|CzjtnTC6L9l#4yn?kuGuz>zj--_;yJ-L1E#ncaC~y;bxKu%QdNdt$MH!_ zaWk%-?Fhi)m9w~|G)xc-F^s>ZG_ZK(tZx7!Y#fY>aK^Gxuxxbbbqv$KryF6s6hDNJ zjv{Pe0aBJ_hL6qCr}D4j>dP-;;nNS`wcfXu%f)v-#J5Y|;TP#ESNCuYfGo>q9I);O z0f1q^jZYQ;06+ho275O^&Xyn<~#u4#=Aw=V_gHV^4ls-Cfa`W_udvR zJ$@lj0IaiU4QgIy-|M)c01!f;C<+9j9q1HA32f$r5Ig+`SP>?=9Zdv;B zp7pTQ*@{Q%eSp6V!}@1HP!->(q(gmMiN^Wf+3#Y)Pyh`7vihBqOYH3G0D$RK*wuLe zNY7mZ0KD+hWdOkU_kL*C^nZN=ulfO?R{f%hI5XB}h~-Zpl|F^a#qEhcQ(&>RTX010M}U z9dQr~Mp_3r8E!~RZ-9_6!XX9!gr_=jL;)dnwDblL9hrI}fKq5sU2e&-BV8+qb1L+v z3aws4eQyKxy$xvf8uX@$IHzLN`gH+d*B1za;HFvfr9?|7CJ2V{EuHjT=R?1)^4AuC z9&{NOC2Ghypu3N z_+CDR6{7C3N@)%&Zem~%IeClF6bzl)iK;I?&3w=2QoCy}` QssI2007*qoM6N<$g59;=qyPW_ literal 0 HcmV?d00001