From 85726e8c8d36cdb4f9f14e26347f0a538825443e Mon Sep 17 00:00:00 2001 From: Sollace Date: Sat, 4 May 2024 19:43:24 +0100 Subject: [PATCH] Fix fillycam --- .../minelittlepony/client/PonyManagerImpl.java | 10 ++++++++-- ...ivingEntity.java => MixinPlayerEntity.java} | 18 ++++++++---------- src/main/resources/minelp.mixin.json | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) rename src/main/java/com/minelittlepony/client/mixin/{MixinLivingEntity.java => MixinPlayerEntity.java} (54%) diff --git a/src/main/java/com/minelittlepony/client/PonyManagerImpl.java b/src/main/java/com/minelittlepony/client/PonyManagerImpl.java index 51e8d8d3..b9aea9e7 100644 --- a/src/main/java/com/minelittlepony/client/PonyManagerImpl.java +++ b/src/main/java/com/minelittlepony/client/PonyManagerImpl.java @@ -53,8 +53,11 @@ public class PonyManagerImpl implements PonyManager, SimpleSynchronousResourceRe @Override public Pony getPony(PlayerEntity player) { final UUID id = player instanceof ForcedPony ? null : player.getGameProfile() == null ? player.getUuid() : player.getGameProfile().getId(); + @Nullable Identifier skin = getSkin(player); - skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(player, s -> getPony(s, id), skin), skin); + if (skin != null) { + skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(player, s -> getPony(s, id), skin), skin); + } return getPony(skin, id); } @@ -63,8 +66,11 @@ public class PonyManagerImpl implements PonyManager, SimpleSynchronousResourceRe if (entity instanceof PlayerEntity player) { return Optional.of(getPony(player)); } + @Nullable Identifier skin = getSkin(entity); - skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(entity, s -> getPony(s, null), skin), skin); + if (skin != null) { + skin = MoreObjects.firstNonNull(PonySkinResolver.EVENT.invoker().onPonySkinResolving(entity, s -> getPony(s, null), skin), skin); + } return skin == null ? Optional.empty() : Optional.of(getPony(skin, null)); } diff --git a/src/main/java/com/minelittlepony/client/mixin/MixinLivingEntity.java b/src/main/java/com/minelittlepony/client/mixin/MixinPlayerEntity.java similarity index 54% rename from src/main/java/com/minelittlepony/client/mixin/MixinLivingEntity.java rename to src/main/java/com/minelittlepony/client/mixin/MixinPlayerEntity.java index ee4f8bd9..e2731350 100644 --- a/src/main/java/com/minelittlepony/client/mixin/MixinLivingEntity.java +++ b/src/main/java/com/minelittlepony/client/mixin/MixinPlayerEntity.java @@ -10,19 +10,17 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import com.minelittlepony.api.pony.Pony; -@Mixin(LivingEntity.class) -abstract class MixinLivingEntity { +@Mixin(PlayerEntity.class) +abstract class MixinPlayerEntity { @Inject(method = "getBaseDimensions", at = @At("RETURN"), cancellable = true) private void onGetBaseDimensions(EntityPose pose, CallbackInfoReturnable info) { - if (((Object)this) instanceof PlayerEntity player) { - Pony pony = Pony.getManager().getPony(player); + Pony pony = Pony.getManager().getPony((PlayerEntity)(Object)this); - if (!pony.race().isHuman()) { - float factor = pony.size().eyeHeightFactor(); - if (factor != 1) { - EntityDimensions dimensions = info.getReturnValue(); - info.setReturnValue(dimensions.withEyeHeight(dimensions.eyeHeight() * factor)); - } + if (!pony.race().isHuman()) { + float factor = pony.size().eyeHeightFactor(); + if (factor != 1) { + EntityDimensions dimensions = info.getReturnValue(); + info.setReturnValue(dimensions.withEyeHeight(dimensions.eyeHeight() * factor)); } } } diff --git a/src/main/resources/minelp.mixin.json b/src/main/resources/minelp.mixin.json index 0bd6c039..5c32b7be 100644 --- a/src/main/resources/minelp.mixin.json +++ b/src/main/resources/minelp.mixin.json @@ -12,7 +12,7 @@ "MixinSkullBlockEntityRenderer", "MixinHeldItemRenderer", "MixinClientPlayerEntity", - "MixinLivingEntity", + "MixinPlayerEntity", "MixinPlayerMoveC2SPacket", "MixinPlayerPositionLookS2CPacket", "MixinVertextConsumers",