From 5804e091876c33061808c08a550ddddaa0e26c57 Mon Sep 17 00:00:00 2001 From: Sollace Date: Tue, 3 Dec 2019 14:15:28 +0200 Subject: [PATCH] Added a pony skin for the alex model and fixed head positioning when posed as swimming --- .../minelittlepony/client/hdskins/DummyPony.java | 9 +++------ .../client/hdskins/DummyPonyModel.java | 10 ++++++++++ .../client/hdskins/PonyPreview.java | 14 ++++++++++++-- .../client/model/AbstractPonyModel.java | 2 +- .../minelittlepony/model/IRotatedSwimmer.java | 5 +++++ .../minelittlepony/model/ModelAttributes.java | 2 +- .../minelittlepony/textures/mob/noskin_alex.png | Bin 0 -> 1267 bytes 7 files changed, 32 insertions(+), 10 deletions(-) create mode 100644 src/main/java/com/minelittlepony/client/hdskins/DummyPonyModel.java create mode 100644 src/main/java/com/minelittlepony/model/IRotatedSwimmer.java create mode 100644 src/main/resources/assets/minelittlepony/textures/mob/noskin_alex.png diff --git a/src/main/java/com/minelittlepony/client/hdskins/DummyPony.java b/src/main/java/com/minelittlepony/client/hdskins/DummyPony.java index 40ebc5fb..deca9874 100644 --- a/src/main/java/com/minelittlepony/client/hdskins/DummyPony.java +++ b/src/main/java/com/minelittlepony/client/hdskins/DummyPony.java @@ -7,11 +7,12 @@ import com.minelittlepony.hdskins.dummy.DummyPlayer; import com.minelittlepony.hdskins.dummy.TextureProxy; import com.minelittlepony.hdskins.profile.SkinType; import com.minelittlepony.hdskins.resources.LocalTexture; +import com.minelittlepony.model.IRotatedSwimmer; /** * Dummy model used for the skin uploading screen. */ -class DummyPony extends DummyPlayer { +class DummyPony extends DummyPlayer implements IRotatedSwimmer { public static EntityType TYPE = EntityType.Builder .create((t, w) -> new DummyPony(t, null), EntityCategory.MISC) @@ -30,11 +31,7 @@ class DummyPony extends DummyPlayer { LocalTexture skin = getTextures().get(SkinType.SKIN); - if (wet && skin.getId() == PonyPreview.NO_SKIN_PONY) { - skin.reset(); - } - - if (!wet && skin.getId() == PonyPreview.NO_SKIN_SEAPONY) { + if (wet != (skin.getId() == PonyPreview.NO_SKIN_SEAPONY)) { skin.reset(); } } diff --git a/src/main/java/com/minelittlepony/client/hdskins/DummyPonyModel.java b/src/main/java/com/minelittlepony/client/hdskins/DummyPonyModel.java new file mode 100644 index 00000000..f719e9db --- /dev/null +++ b/src/main/java/com/minelittlepony/client/hdskins/DummyPonyModel.java @@ -0,0 +1,10 @@ +package com.minelittlepony.client.hdskins; + +import com.minelittlepony.client.model.entity.race.EarthPonyModel; + +public class DummyPonyModel extends EarthPonyModel { + + public DummyPonyModel(boolean smallArms) { + super(smallArms); + } +} diff --git a/src/main/java/com/minelittlepony/client/hdskins/PonyPreview.java b/src/main/java/com/minelittlepony/client/hdskins/PonyPreview.java index 411363f5..bed7be43 100644 --- a/src/main/java/com/minelittlepony/client/hdskins/PonyPreview.java +++ b/src/main/java/com/minelittlepony/client/hdskins/PonyPreview.java @@ -11,7 +11,8 @@ import com.minelittlepony.pony.meta.Race; class PonyPreview extends PlayerPreview { - public static final Identifier NO_SKIN_PONY = new Identifier("minelittlepony", "textures/mob/noskin.png"); + public static final Identifier NO_SKIN_STEVE_PONY = new Identifier("minelittlepony", "textures/mob/noskin.png"); + public static final Identifier NO_SKIN_ALEX_PONY = new Identifier("minelittlepony", "textures/mob/noskin_alex.png"); public static final Identifier NO_SKIN_SEAPONY = new Identifier("minelittlepony", "textures/mob/noskin_seapony.png"); private final DummyPony localPony = new DummyPony(DummyPony.TYPE, localTextures); @@ -27,11 +28,20 @@ class PonyPreview extends PlayerPreview { if (type == SkinType.SKIN) { // Initialization order means this method might be called before class members have been initialized. // This is something that needs to be fixed in HDSkins - return localPony != null && localPony.wet ? NO_SKIN_SEAPONY : NO_SKIN_PONY; + return localPony != null && localPony.wet ? NO_SKIN_SEAPONY : NO_SKIN_STEVE_PONY; } return super.getBlankSteveSkin(type); } + @Override + public Identifier getBlankAlexSkin(SkinType type) { + if (type == SkinType.SKIN) { + return localPony != null && localPony.wet ? NO_SKIN_SEAPONY : NO_SKIN_ALEX_PONY; + } + return getBlankSteveSkin(type); + } + + protected DummyPlayer ponify(DummyPlayer human, DummyPlayer pony) { Identifier loc = human.getTextures().get(SkinType.SKIN).getId(); diff --git a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java index 257b6dc6..4f498e1c 100644 --- a/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java +++ b/src/main/java/com/minelittlepony/client/model/AbstractPonyModel.java @@ -93,7 +93,7 @@ public abstract class AbstractPonyModel extends ClientPo } if (attributes.isSwimmingRotated) { - head.setPivot(0, -2, -2); + head.setPivot(0, -2, -4); } else { head.setPivot(0, 0, 0); } diff --git a/src/main/java/com/minelittlepony/model/IRotatedSwimmer.java b/src/main/java/com/minelittlepony/model/IRotatedSwimmer.java new file mode 100644 index 00000000..68aa8bfe --- /dev/null +++ b/src/main/java/com/minelittlepony/model/IRotatedSwimmer.java @@ -0,0 +1,5 @@ +package com.minelittlepony.model; + +public interface IRotatedSwimmer { + +} diff --git a/src/main/java/com/minelittlepony/model/ModelAttributes.java b/src/main/java/com/minelittlepony/model/ModelAttributes.java index 1c053889..455157e5 100644 --- a/src/main/java/com/minelittlepony/model/ModelAttributes.java +++ b/src/main/java/com/minelittlepony/model/ModelAttributes.java @@ -97,7 +97,7 @@ public class ModelAttributes { isFlying = mode == Mode.THIRD_PERSON && pony.isFlying(entity); isGliding = entity.isFallFlying(); isSwimming = mode == Mode.THIRD_PERSON && pony.isSwimming(entity); - isSwimmingRotated = mode == Mode.THIRD_PERSON && isSwimming && entity instanceof PlayerEntity; + isSwimmingRotated = mode == Mode.THIRD_PERSON && isSwimming && (entity instanceof PlayerEntity || entity instanceof IRotatedSwimmer); hasHeadGear = pony.isWearingHeadgear(entity); isSitting = pony.isRidingInteractive(entity); interpolatorId = entity.getUuid(); diff --git a/src/main/resources/assets/minelittlepony/textures/mob/noskin_alex.png b/src/main/resources/assets/minelittlepony/textures/mob/noskin_alex.png new file mode 100644 index 0000000000000000000000000000000000000000..7a72b12a92f5bd045d16073d01cfe71634c7d50e GIT binary patch literal 1267 zcmVg8c`$)Qle zODR$)y;ORs2SE=Na#)IooINbJw{y?%j<4pGZ&G-Gj z`DRtRySp=9y!cuIegyy=92^+vBUDwz+kPP;|Bq5Y_r)k?3kqGMby0--I7$JmU5F}7a z5e|nfhPNZ4Uaun(iFixEH{bmz0RUqR#ee>l2B`s}%iF~e02+-3?(grtCE(r8m!=2I z#Xm9zsR4Fk>>e;WItoQmyw?Ci2*l4pW&zP?-lu6=O9=3`=R)dt-nXMxtMx7HR##V{ z>pD(PPpux%3E6D+Nquf%&+FA{)$(IUr+)if{9a6>=H8+g_-d>C0*=*Kq_X^c& z6}eo_(w0uAF*!NeQ-3=+rO^-8*Vn&oH(+UL35ueiTrT70<_4;&noRPxv9Ymd8GC(w zy-O)YwOR$G6qM2y;{f2|;sPrxD*%Aq-Cf82g@py!=MwMd=jRcLL~wq7ZnkyxfQ^j} z06->_!OYAI03aTZn{9`OhtKi=zG|^p44S4nx_httem)kM-Tbci0gN$JDiuskO#uKZl?wLv_a&z~dvkMB>i2m< zr|09?%H;6pAHNuc5Tri&R006??ATz8;pN(ENyd;vJv%m1sT5RIg?e^uaN<&_6x6e0 z!!-eXg}EjqlgWXcB)LJcSj6JuA_|292q8$NQYaRSy=y?FQfX-`l}fn0y!2EMp9-hv z>y*7@Sq5Vagplq8@c0rZBZMHCOq#1dNZ6k*pU)fOf*c(kSr*7nMrhbIfE&!u67AkP z^aO}*??lef6VS~YLVhyb$s2q@fRhOFPv455Z?Zrjf)3swlH(f@)OFqT1|AN+5SCWmyIx5r2rFSP0pRB3}@& z{Mi>R>7J)TUsZ#xMN-`_)nL74KhSJ8{GkEd&{uEXN@Dzn!-_vNfE#Mx8S>qrFFb&; zI-1P}Uaq~C#7y8D4G^*R`B##t2cB1h_IGnvS63b1-+MjYEqt8@0|NS04tINh|9_9~ z1j&n-x3~5B2NU*l`lpQF-rkmi5C{ke2nYxW2nYxW2nYxW2nYxmKrP_3Pw(~rhT!{0Cl%gC-tv(MJFP002ovPDHLkV1i=UQRDys literal 0 HcmV?d00001