From 38a2fd7214caa0f00ba23fd751e06db2661afe3c Mon Sep 17 00:00:00 2001 From: Lionarius Date: Sun, 1 Jun 2025 18:20:04 +0300 Subject: [PATCH 1/5] update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 0ea2780..696d77a 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,4 @@ bin/ .architectury-transformer/ run/ +scripts/ From 3b15f7b3416544d0749bf28fed8711df02482ba4 Mon Sep 17 00:00:00 2001 From: Lionarius Date: Sun, 1 Jun 2025 18:24:22 +0300 Subject: [PATCH 2/5] Revert "remove shadow from ServerLoginPacketListenerImplMixin" This reverts commit 5b384c32d6cb3b075876d21544087fa6926b0a38. --- .../skinrestorer/mixin/PlayerListMixin.java | 1 - ...erverLoginPacketListenerImplAccessorInvoker.java | 13 ------------- .../mixin/ServerLoginPacketListenerImplMixin.java | 7 ++++++- common/src/main/resources/skinrestorer.mixins.json | 1 - 4 files changed, 6 insertions(+), 16 deletions(-) delete mode 100644 common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java index 92982ab..6f49c96 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java @@ -16,7 +16,6 @@ import java.util.Collections; @Mixin(PlayerList.class) public abstract class PlayerListMixin { - @Inject(method = "remove", at = @At("TAIL")) private void remove(ServerPlayer player, CallbackInfo ci) { SkinRestorer.Events.onPlayerDisconnect(player); diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java deleted file mode 100644 index aab07c3..0000000 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplAccessorInvoker.java +++ /dev/null @@ -1,13 +0,0 @@ -package net.lionarius.skinrestorer.mixin; - -import com.mojang.authlib.GameProfile; -import net.minecraft.server.network.ServerLoginPacketListenerImpl; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Accessor; - -@Mixin(ServerLoginPacketListenerImpl.class) -public interface ServerLoginPacketListenerImplAccessorInvoker { - - @Accessor - GameProfile getAuthenticatedProfile(); -} 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 5ce9df9..28e588e 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/ServerLoginPacketListenerImplMixin.java @@ -7,7 +7,9 @@ import net.lionarius.skinrestorer.skin.provider.SkinProviderContext; import net.lionarius.skinrestorer.util.PlayerUtils; import net.lionarius.skinrestorer.util.Result; import net.minecraft.server.network.ServerLoginPacketListenerImpl; +import org.jetbrains.annotations.Nullable; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -18,6 +20,9 @@ import java.util.concurrent.CompletableFuture; @Mixin(ServerLoginPacketListenerImpl.class) public abstract class ServerLoginPacketListenerImplMixin { + @Shadow @Nullable + private GameProfile authenticatedProfile; + @Unique private CompletableFuture skinrestorer$pendingSkin; @@ -27,7 +32,7 @@ public abstract class ServerLoginPacketListenerImplMixin { public void waitForSkin(CallbackInfo ci) { if (skinrestorer$pendingSkin == null) { skinrestorer$pendingSkin = CompletableFuture.supplyAsync(() -> { - final var profile = ((ServerLoginPacketListenerImplAccessorInvoker) this).getAuthenticatedProfile(); + final var profile = authenticatedProfile; assert profile != null; var originalSkin = PlayerUtils.getPlayerSkin(profile); diff --git a/common/src/main/resources/skinrestorer.mixins.json b/common/src/main/resources/skinrestorer.mixins.json index 939d827..224662d 100644 --- a/common/src/main/resources/skinrestorer.mixins.json +++ b/common/src/main/resources/skinrestorer.mixins.json @@ -8,7 +8,6 @@ "mixins": [ "ChunkMapAccessor", "PlayerListMixin", - "ServerLoginPacketListenerImplAccessorInvoker", "ServerLoginPacketListenerImplMixin", "TrackedEntityAccessorInvoker" ], From 757d46b231c5c61ef9d149df10470c45915123be Mon Sep 17 00:00:00 2001 From: Lionarius Date: Sun, 1 Jun 2025 18:24:23 +0300 Subject: [PATCH 3/5] Revert "remove shadow of server from PlayerListMixin" This reverts commit 8119a08c80ae3536e34d3ebc12f1953b235bab47. --- .../net/lionarius/skinrestorer/mixin/PlayerListMixin.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java index 6f49c96..53c81d7 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java @@ -6,16 +6,23 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.CommonListenerCookie; import net.minecraft.server.players.PlayerList; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.Collections; +import java.util.List; @Mixin(PlayerList.class) public abstract class PlayerListMixin { + + @Shadow @Final + private MinecraftServer server; + @Inject(method = "remove", at = @At("TAIL")) private void remove(ServerPlayer player, CallbackInfo ci) { SkinRestorer.Events.onPlayerDisconnect(player); @@ -30,7 +37,6 @@ public abstract class PlayerListMixin { @Inject(method = "placeNewPlayer", at = @At("HEAD")) private void placeNewPlayer(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) { - var server = ((PlayerList) (Object) this).getServer(); var delay = SkinRestorer.getConfig().skinApplyDelayOnJoin(); if (delay <= 0) { From 81d05fe991849f04a11aaa11e3c5dfe3057b453c Mon Sep 17 00:00:00 2001 From: Lionarius Date: Sun, 1 Jun 2025 18:24:23 +0300 Subject: [PATCH 4/5] Revert "remove shadow of public method getPlayers" This reverts commit 6c159d6aa21e65620895c470d505fbc3d0154c3a. --- .../net/lionarius/skinrestorer/mixin/PlayerListMixin.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java index 53c81d7..ccaed02 100644 --- a/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java +++ b/common/src/main/java/net/lionarius/skinrestorer/mixin/PlayerListMixin.java @@ -20,6 +20,9 @@ import java.util.List; @Mixin(PlayerList.class) public abstract class PlayerListMixin { + @Shadow + public abstract List getPlayers(); + @Shadow @Final private MinecraftServer server; @@ -30,7 +33,7 @@ public abstract class PlayerListMixin { @Inject(method = "removeAll", at = @At("HEAD")) private void removeAll(CallbackInfo ci) { - for (var player : ((PlayerList) (Object) this).getPlayers()) { + for (var player : getPlayers()) { SkinRestorer.Events.onPlayerDisconnect(player); } } From 7e05f1eec965e70d33547622d47bf0ef9985aa8c Mon Sep 17 00:00:00 2001 From: Lionarius Date: Sun, 1 Jun 2025 18:46:32 +0300 Subject: [PATCH 5/5] decouple publish task from jar tasks --- buildSrc/src/main/groovy/multiloader-publish.gradle | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/buildSrc/src/main/groovy/multiloader-publish.gradle b/buildSrc/src/main/groovy/multiloader-publish.gradle index 25eda0a..affceee 100644 --- a/buildSrc/src/main/groovy/multiloader-publish.gradle +++ b/buildSrc/src/main/groovy/multiloader-publish.gradle @@ -3,12 +3,7 @@ plugins { } publishMods { - if (project.name == 'fabric') - file = remapJar.archiveFile - else if (project.name == 'neoforge') - file = jar.archiveFile - else - file = tasks.named('jarJar').get().archiveFile + file = project.layout.buildDirectory.file("libs/${project.archivesBaseName}-${project.version}.jar").map { it.asFile }.getOrNull() modLoaders.add(project.name) type = STABLE