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 00000000..7a72b12a Binary files /dev/null and b/src/main/resources/assets/minelittlepony/textures/mob/noskin_alex.png differ