diff options
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java index a382a58e..4ca9a642 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java @@ -1,20 +1,29 @@ package me.xmrvizzy.skyblocker.mixin; -import me.xmrvizzy.skyblocker.utils.Utils; -import net.minecraft.client.texture.PlayerSkinProvider; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; -@Mixin(PlayerSkinProvider.class) +import com.llamalad7.mixinextras.injector.ModifyReturnValue; +import com.llamalad7.mixinextras.sugar.Local; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.minecraft.MinecraftSessionService; + +import me.xmrvizzy.skyblocker.utils.Utils; +import net.minecraft.client.texture.PlayerSkinProvider.Textures; + +@Mixin(targets = "net.minecraft.client.texture.PlayerSkinProvider$1") public class PlayerSkinProviderMixin { - @ModifyVariable(method = "loadSkin(Lcom/mojang/authlib/GameProfile;Lnet/minecraft/client/texture/PlayerSkinProvider$SkinTextureAvailableCallback;Z)V", at = @At("STORE")) - private Runnable skyblocker$removeInvalidBase64LogSpam(Runnable runnable) { - return Utils.isOnHypixel() ? () -> { - try { - runnable.run(); - } catch (IllegalArgumentException ignored) { - } - } : runnable; - } + + @ModifyReturnValue(method = "method_52867", at = @At("RETURN")) + private static Textures skyblocker$fixTexturesThatHadAnInvalidSignature(Textures texture, @Local MinecraftSessionService sessionService, @Local GameProfile profile) { + if (Utils.isOnHypixel() && texture == Textures.MISSING) { + try { + return Textures.fromMap(sessionService.getTextures(profile, false), false); + } catch (Throwable t) { + return Textures.MISSING; + } + } + + return texture; + } } |