From 56655bca36697b3b30fd1e6c1e93d240c9ccfcce Mon Sep 17 00:00:00 2001 From: Lionarius Date: Fri, 30 May 2025 22:39:37 +0300 Subject: [PATCH] backport to 1.20 --- .../ServerLoginPacketListenerImplAccessorInvoker.java | 6 +++++- .../mixin/ServerLoginPacketListenerImplMixin.java | 7 ++----- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java index aab07c3..c637634 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java @@ -4,10 +4,14 @@ import com.mojang.authlib.GameProfile; import net.minecraft.server.network.ServerLoginPacketListenerImpl; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import org.spongepowered.asm.mixin.gen.Invoker; @Mixin(ServerLoginPacketListenerImpl.class) public interface ServerLoginPacketListenerImplAccessorInvoker { @Accessor - GameProfile getAuthenticatedProfile(); + GameProfile getGameProfile(); + + @Invoker + GameProfile invokeCreateFakeProfile(GameProfile original); } diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java index 18504e8..fbcf3c1 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java @@ -23,18 +23,15 @@ public abstract class ServerLoginPacketListenerImplMixin { @Unique private CompletableFuture skinrestorer$pendingSkin; - @Shadow - protected abstract GameProfile createFakeProfile(GameProfile original); - @Inject(method = "handleAcceptedLogin", at = @At(value = "HEAD"), cancellable = true) public void waitForSkin(CallbackInfo ci) { if (skinrestorer$pendingSkin == null) { skinrestorer$pendingSkin = CompletableFuture.supplyAsync(() -> { - var profile = gameProfile; + var profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).getGameProfile(); assert profile != null; if (!profile.isComplete()) - profile = createFakeProfile(profile); + profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).invokeCreateFakeProfile(profile); var originalSkin = PlayerUtils.getPlayerSkin(profile);