1
0
mirror of https://github.com/Suiranoil/SkinRestorer.git synced 2026-01-16 04:42:12 +00:00

inject at cancel-safe position

This commit is contained in:
2025-05-03 09:45:53 +03:00
parent 4a1ce7885c
commit 5da06ee325

View File

@@ -26,15 +26,19 @@ public abstract class ServerLoginPacketListenerImplMixin {
@Unique
private CompletableFuture<Void> skinrestorer$pendingSkin;
@Inject(method = "handleAcceptedLogin", at = @At(value = "INVOKE",
target = "Lnet/minecraft/server/players/PlayerList;canPlayerLogin(Ljava/net/SocketAddress;Lcom/mojang/authlib/GameProfile;)Lnet/minecraft/network/chat/Component;"),
cancellable = true)
@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(() -> {
final var profile = gameProfile;
var profile = gameProfile;
assert profile != null;
if (!profile.isComplete())
profile = createFakeProfile(profile);
var originalSkin = PlayerUtils.getPlayerSkin(profile);
if (SkinRestorer.getSkinStorage().hasSavedSkin(profile.getId())) {