aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java35
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;
+ }
}