From db14308a0c95b1eb36f7a40ebb9bcba7d995baca Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 2 Nov 2018 11:57:57 +0200 Subject: [PATCH] Made zombie villagers act a bit more like zombies. And villagers. --- .../minelittlepony/model/ModelMobPony.java | 24 +--------------- .../java/com/minelittlepony/model/PMAPI.java | 1 + .../model/ponies/ModelIllagerPony.java | 8 ++---- .../model/ponies/ModelSkeletonPony.java | 21 ++++++++++++++ .../model/ponies/ModelVillagerPony.java | 8 ++---- .../model/ponies/ModelZombieVillagerPony.java | 27 ++++++++++++++++++ .../ponies/RenderPonyZombieVillager.java | 12 +++++++- .../zombie_villager/zombie_silly_pony.png | Bin 0 -> 5553 bytes .../zombie_tiny_silly_pony.png | Bin 0 -> 5097 bytes 9 files changed, 65 insertions(+), 36 deletions(-) create mode 100644 src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/zombie_silly_pony.png create mode 100644 src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/zombie_tiny_silly_pony.png diff --git a/src/main/java/com/minelittlepony/model/ModelMobPony.java b/src/main/java/com/minelittlepony/model/ModelMobPony.java index 8cf588bf..1b196f1d 100644 --- a/src/main/java/com/minelittlepony/model/ModelMobPony.java +++ b/src/main/java/com/minelittlepony/model/ModelMobPony.java @@ -3,40 +3,18 @@ package com.minelittlepony.model; import com.minelittlepony.model.player.ModelAlicorn; import net.minecraft.client.model.ModelRenderer; -import net.minecraft.entity.Entity; import net.minecraft.util.math.MathHelper; /** * Common class for all humanoid (ponioid?) non-player enemies. * */ -public class ModelMobPony extends ModelAlicorn { +public abstract class ModelMobPony extends ModelAlicorn { public ModelMobPony() { super(false); } - @Override - protected void rotateLegs(float move, float swing, float ticks, Entity entity) { - super.rotateLegs(move, swing, ticks, entity); - - if (rightArmPose != ArmPose.EMPTY) { - if (canCast()) { - rotateArmHolding(unicornArmRight, -1, swingProgress, ticks); - } else { - rotateArmHolding(bipedRightArm, -1, swingProgress, ticks); - } - } - - if (leftArmPose != ArmPose.EMPTY) { - if (canCast()) { - rotateArmHolding(unicornArmLeft, -1, swingProgress, ticks); - } else { - rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); - } - } - } - /** * Rotates the provided arm to the correct orientation for holding an item. * diff --git a/src/main/java/com/minelittlepony/model/PMAPI.java b/src/main/java/com/minelittlepony/model/PMAPI.java index 8832de2f..6f2f1b1d 100644 --- a/src/main/java/com/minelittlepony/model/PMAPI.java +++ b/src/main/java/com/minelittlepony/model/PMAPI.java @@ -36,6 +36,7 @@ public interface PMAPI { ModelWrapper zombie = new ModelWrapper(new ModelZombiePony()); ModelWrapper skeleton = new ModelWrapper(new ModelSkeletonPony()); ModelWrapper villager = new ModelWrapper(new ModelVillagerPony()); + ModelWrapper zombieVillager = new ModelWrapper(new ModelZombieVillagerPony()); ModelWrapper illager = new ModelWrapper(new ModelIllagerPony()); ModelWrapper witch = new ModelWrapper(new ModelWitchPony()); ModelWrapper enderman = new ModelWrapper(new ModelEnderStallion()); diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java index 269fffd8..342d4dfc 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelIllagerPony.java @@ -1,6 +1,6 @@ package com.minelittlepony.model.ponies; -import com.minelittlepony.model.player.ModelAlicorn; +import com.minelittlepony.model.ModelMobPony; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; @@ -9,11 +9,7 @@ import net.minecraft.entity.monster.AbstractIllager.IllagerArmPose; import net.minecraft.util.EnumHandSide; import net.minecraft.util.math.MathHelper; -public class ModelIllagerPony extends ModelAlicorn { - - public ModelIllagerPony() { - super(false); - } +public class ModelIllagerPony extends ModelMobPony { @Override public void setRotationAngles(float move, float swing, float ticks, float headYaw, float headPitch, float scale, Entity entity) { diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java index 67db0650..9f0f9f43 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelSkeletonPony.java @@ -2,6 +2,7 @@ package com.minelittlepony.model.ponies; import com.minelittlepony.model.ModelMobPony; +import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.AbstractSkeleton; import net.minecraft.entity.monster.EntityWitherSkeleton; @@ -51,6 +52,26 @@ public class ModelSkeletonPony extends ModelMobPony { super.setLivingAnimations(entity, move, swing, ticks); } + @Override + protected void rotateLegs(float move, float swing, float ticks, Entity entity) { + super.rotateLegs(move, swing, ticks, entity); + if (rightArmPose != ArmPose.EMPTY) { + if (canCast()) { + rotateArmHolding(unicornArmRight, -1, swingProgress, ticks); + } else { + rotateArmHolding(bipedRightArm, -1, swingProgress, ticks); + } + } + + if (leftArmPose != ArmPose.EMPTY) { + if (canCast()) { + rotateArmHolding(unicornArmLeft, -1, swingProgress, ticks); + } else { + rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); + } + } + } + @Override public boolean canCast() { return isUnicorn; diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java index 746b3992..adc7abd3 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java @@ -5,11 +5,11 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityZombieVillager; import net.minecraft.entity.passive.EntityVillager; -import com.minelittlepony.model.player.ModelAlicorn; +import com.minelittlepony.model.ModelMobPony; import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.render.model.PlaneRenderer; -public class ModelVillagerPony extends ModelAlicorn { +public class ModelVillagerPony extends ModelMobPony { public PlaneRenderer apron, trinket; @@ -18,10 +18,6 @@ public class ModelVillagerPony extends ModelAlicorn { public boolean special; public boolean special2; - public ModelVillagerPony() { - super(false); - } - @Override protected void shakeBody(float move, float swing, float bodySwing, float ticks) { super.shakeBody(move, swing, bodySwing, ticks); diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java new file mode 100644 index 00000000..526702c9 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/ponies/ModelZombieVillagerPony.java @@ -0,0 +1,27 @@ +package com.minelittlepony.model.ponies; + +import net.minecraft.entity.Entity; +import net.minecraft.util.math.MathHelper; + +import com.minelittlepony.util.render.AbstractBoxRenderer; + +public class ModelZombieVillagerPony extends ModelVillagerPony { + + @Override + protected void rotateLegs(float move, float swing, float ticks, Entity entity) { + super.rotateLegs(move, swing, ticks, entity); + if (rightArmPose != ArmPose.EMPTY) return; + + if (islookAngleRight(move)) { + rotateArmHolding(bipedRightArm, 1, swingProgress, ticks); + AbstractBoxRenderer.shiftRotationPoint(bipedRightArm, 0.5F, 1.5F, 3); + } else { + rotateArmHolding(bipedLeftArm, -1, swingProgress, ticks); + AbstractBoxRenderer.shiftRotationPoint(bipedLeftArm, -0.5F, 1.5F, 3); + } + } + + public boolean islookAngleRight(float move) { + return MathHelper.sin(move / 20) < 0; + } +} diff --git a/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java b/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java index 170a1a70..31aa7ee5 100644 --- a/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java +++ b/src/main/java/com/minelittlepony/render/ponies/RenderPonyZombieVillager.java @@ -19,13 +19,23 @@ public class RenderPonyZombieVillager extends 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/zombie_tiny_silly_pony.png b/src/main/resources/assets/minelittlepony/textures/entity/zombie_villager/zombie_tiny_silly_pony.png new file mode 100644 index 0000000000000000000000000000000000000000..51f042153421ac45b1bc0bc5d49046f99b4e1c12 GIT binary patch literal 5097 zcmVvu5 zWeI^0l*ZzLhloUNO`4`oKmzf=OQKqpxhRn}-Tr0;v0rr~SPeU8T;ds6s5_}1_KmR72m$`glxdXEzr z)*Gt2!dw>~K>pJ2idGH5d5D>^+aWO_-a}QRDR4ZSGigW6yAftIffBgqqS@Xc@h{tv7GBZ5(-DA?Fj8;8V% zF`&j`{_r#ZTxA#-PG99)pZ!;=SfsAWDUnj7YC7l#au}FQ#+-$Lq6OnUDA=k(#ZXyC zGGJ9u3`GlG6u}}!a9u^FP+}wu14_n=``)H|ZMLrqe;s{)aGQ^P=$H7+S3jk1X#q`x zph#t5$WQ?SuC6gnjcFcyh|z-&;Ezv`;|GW#p<#y^HMn*}&_sy|hlL^FHM6>UN{Ini zH$)40w<21XH*r-7+DUH7!zr?L&Tuh+~qn6-tGq1 z1;5$!AKiXhzV_VbZc*I#XF*TtdoT`X4Gu+1CKPbq;Y@cz9Rs$lh)J;sI_xnBxoXjz zkPLCX!iXX%AfuX2;9|Qb_mPuP3sP{iDR~H3Nl47Rbb1N})C&(xrj$v8?HU$~1$nbY zx)I>sB=mJf+^mo*&p*qf+fU!Z`nN}qJ90q3r&J9w^hi4*ra(0w;nYxKME>XtpI2#H zWW7XOO|oFcK~9vMC@Pqe5no}ALfa9;fTW0ZHDZLT=VzQ89ix(=2(I#+pPjSVZF%tI zgjG8DzGwj_xMG-2#w0Pk|F3=GhEO*X-gQOXNpOH?x+nB@H@H1CUgwCL?|H+#a6_?I zo_`j3@#){zoHC}V(UdW9Ai4_I2U1hr_@kvjR*VV}1!r#=&~mfE4iTv&+X6qbMODejojh-vwiLP<~M#Hm$PETkav50Jwlx#1s?jvUw+feUVQqu$V1}& zzwl=AdGYt2LYhQ&hLj4s^@i1Y!))BK-fS^>ppa2h5HaLFPlA>sDfe{}n4dF`kEtKR!R|FS&OJ)w_3_M{l?2M{RMvMz#V<;CCm z{Edg4edpJC;3t2LpZMgLAr9DT#7}(k%RKOtzsA{je*MOM-~P()V1^!Ngw^VTX;ouL zWMe2P!VrlmA)^lOgwprusQY2be#2Utrs3uIzi%Pan=Q>y)#!dtiILLppdAsbnm_u& zZvt>~`F%HLIPBK+r>`L*xBT|$B72efjWo}bfAk1<9t$|2Mli}wz34*Edx4u*gU z1AiL0nMfah?8#er!le{&RSnjXRViVQvmU90D_{B#LVU_5tQewh%9cc*sY2lgf3B6M^F~(Qq zen-g(pE8;x8-MZ`@B5pd6o79(_3u?$&)M0A>1>QQLP`m* z%2)3D1Agx8&$BpRp~j#^!3vj;W(>m~=WDcNoC+ls%xFaF_ZS1&SwtKfdU6Q3x+ZQ{ z#Pc_h@ewA2lpT-!y?^`zk*X=Vz%Wo50b@~XFesrEih;1-V~oSrQ-+&N)(l(1c87{$ zujTXr(sh&!wzkyX!8KvNa^D~D@FO3^6vJ#jW!7~ZO*>2+$RSXVricioD1Aw!%Ar;$ z!eMn9B7^~4g>5_Zu+~Ll#yEpC6=~c5z*gd{v*cZm60uIGyeEeq59p{P4_maYh}#u@ zGUmmne_PWKNy`OE46bP~&hqUq{id$^o}3G+iVOp>X(**&{dXrt1vF$#<;XEJolRL6 zWwhJj+XlxW5|ua*QbG-A$*gxh)4FC80!0jx6a8|v5wNVx&?fh@sSDOv;$?9BYKt`Rg?Ed$8j<)5{M~N+xB60ybw< z;dHTLvs`if;QdH0kiWaQ`Oo(~dm}gh+H;@d<7Xd3OJP2rbAEctQQdN}Tu_{2ael$^ zsAYC(&UU%tXguL;vEVp_L!?QW`rb?AK{3{VF+BGh|4c{kc`wzdA}Kud^Pl*>oZy54 zSX|elAs}L5RHHHB+nN{^V*^PQBZBo66fl!9qJnXT6eBBR(VQSgj>jXc7IYY}ZHHW2 z)?P1gUeCz^G!={(bhXCB#7p1#6K1m+#u(<~j@fv^#b(1%JECMbnax<7U1c^sfl*B^ zfS1FvTaUuA1yX{XiAC{bLQIs+_D~Vp_Q+<1HG)_}Nr}_5#bMyPHF@Y+ zELObu%IiGXHXLPTdUS-U5>!DPB}a&dgy*lk`Y2bPf0mEG{wM%{_3SU8sw~$l7W*CZ z%O|||(g~#q+V9E6up9y<3tBh0%1}bYv=c-lWwS#}g;XPwDk&=JEN0YVq#&B!S^-#t zScB{bj%IWE^%kuhVhoGjlHxrDMMbcxR9#EajB_oEeutu*%%_x5M{a9UOyrcX-m)C_ zsIjO$EJke3{LBj;+p@NFQ|2KgXG$R%3qz#zff57Kjvz;7lM&~OHOH4OppD~lM_qleqoU+tP1TJsF|ZDi#V}A1K7RG!^W&~#<{TJ{#&5BExPDuNRX(~$2xbc** zSRif7*w?s}xmaEx1%A%|MV4uU#$siOI z?*%BSM-);zxRZ<<%8+r+p>ZGs$0wI5aX_$Kz4|)NR+PA8Z5`GMGMuprk%vb$L&&6< zFq)|-T&uqjH4`@(JMGB6XRb9Dt39*Xn4A)Vl6G5`t#avTO3vl26%by1iChv{4tr&( z1f*&x7G$$WDo+^_ctbD__5(7k*@lD#CV%FqkYZ3@A>okcm;D}TTJo;PcncVGw?&Nu zQRdwkjKR1GIcKD<$U{%;1Ibm?4zjiAP}sim0IM@Fl)`*cW5&lgDPSwY5U3_& zl#CW2W>gEC{hnsOKWw}jgOK6cHeGvi86!eT2~h>_k&+=R#d%7ca-oF@xJr&Pw!$8c!PGX_G$J4>-1 zQ&p@k&M5mp&I7h;kll`~32Y{uoxl4oAkH58{+uJnfq7Ts+K%D_Rnzju#R4Y==L>CB zW1OdyNb#QiIv}pXw;iZL%2d9BqDUTC#smmQvk7G@&{Sx)lv3g9mSH=7_Z5&z!C8Tv zA!Up>+^8Y1GsQWMXA_DFb<=Qhehx*Mwk>9}B!rB1p4BY zhziMCa_ulFAQp^5+3hd|)EG=vlh#`nG2ok;lm=G&p2=i>Xs*r~8TRD3r+5q2P)#R< zA!9LzPBZ%>pn%*T+T)9OHv9eIq=`EmN-Enu#d6pNYa1j-V%%d?k-q2nXnF`k-m%yQ zW}_PG1Y0sM<^W=$C|RL|9<5qZ7I2PxrZbH5UGnbCXEOvXcbqpbb6inS>ibZ4Qd~v~QxjlrQ7?HMy zQV3x{tC|$|XfYJ$a3PZ8;gqVl>d@`cwP+eRJ72Nhtl4b0?|vAxm1h_NmA52>lruJD zOw}T$aJpLKtBSPWF`3S&v~czO9H|^71SA#kmOS)`_-n!%wDS02k2Wo=H<*#9&HqJFgR~9vwnc^kr-{BA6T+Ub-LpJ>8J`QK zsWHAjbb*PIc9wYd3f_ByF~kH8rNqGbkU8!={ra4QBI*DC#L52!K9ou`HG7sf00000 LNkvXXu0mjf2tc~A literal 0 HcmV?d00001