diff options
-rw-r--r-- | build.gradle | 4 | ||||
-rw-r--r-- | gradle.properties | 8 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java | 35 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilMinecraftSessionServiceMixin.java | 20 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java | 5 | ||||
-rw-r--r-- | src/main/resources/fabric.mod.json | 5 | ||||
-rw-r--r-- | src/main/resources/skyblocker.accesswidener | 3 | ||||
-rw-r--r-- | src/main/resources/skyblocker.mixins.json | 1 |
8 files changed, 62 insertions, 19 deletions
diff --git a/build.gradle b/build.gradle index d890f64a..5f0d1822 100644 --- a/build.gradle +++ b/build.gradle @@ -84,6 +84,10 @@ dependencies { // include implementation("moe.nea:neurepoparser:${project.repoparser_version}") } +loom { + accessWidenerPath = file("src/main/resources/skyblocker.accesswidener") +} + base { archivesName = project.archives_base_name } diff --git a/gradle.properties b/gradle.properties index 6ff00bfd..1c8e60d4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.parallel=true # Fabric Properties (https://fabricmc.net/versions.html) ## 1.20 -minecraft_version=1.20.2-rc1 -yarn_mappings=1.20.2-rc1+build.2 +minecraft_version=1.20.2 +yarn_mappings=1.20.2+build.1 loader_version=0.14.22 #Fabric api ## 1.20 -fabric_api_version=0.88.5+1.20.2 +fabric_api_version=0.89.1+1.20.2 ## Cloth Api (https://www.curseforge.com/minecraft/mc-mods/cloth-config/files) -clothconfig_version=12.0.107 +clothconfig_version=12.0.108 ## Mod Menu (https://www.curseforge.com/minecraft/mc-mods/modmenu/files) mod_menu_version=8.0.0-beta.2 ## REI (https://www.curseforge.com/minecraft/mc-mods/roughly-enough-items/files) diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/PlayerSkinProviderMixin.java index 2f0921a6..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; + } } diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilMinecraftSessionServiceMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilMinecraftSessionServiceMixin.java new file mode 100644 index 00000000..f0a0c768 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilMinecraftSessionServiceMixin.java @@ -0,0 +1,20 @@ +package me.xmrvizzy.skyblocker.mixin; + +import org.slf4j.Logger; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import com.mojang.authlib.yggdrasil.YggdrasilMinecraftSessionService; + +import me.xmrvizzy.skyblocker.utils.Utils; + +@Mixin(value = YggdrasilMinecraftSessionService.class, remap = false) +public class YggdrasilMinecraftSessionServiceMixin { + + @WrapOperation(method = "getSecurePropertyValue", remap = false, at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;error(Ljava/lang/String;Ljava/lang/Object;)V", remap = false)) + private void skyblocker$dontLogMissingSignaturesOrTamperedProperties(Logger logger, String message, Object property, Operation<Void> operation) { + if (!Utils.isOnHypixel()) operation.call(logger, message, property); + } +} diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java index d9668100..9abca5ad 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/YggdrasilServicesKeyInfoMixin.java @@ -51,4 +51,9 @@ public class YggdrasilServicesKeyInfoMixin { throw e; } } + + @WrapOperation(method = "validateProperty", remap = false, at = @At(value = "INVOKE", target = "org/slf4j/Logger.error(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false)) + private void skyblocker$dontLogFailedSignatureValidation(Logger logger, String message, Object property, Object exception, Operation<Void> operation) { + if (!Utils.isOnHypixel()) operation.call(logger, message, property, exception); + } }
\ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ba86509d..888e3374 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,11 +34,12 @@ "mixins": [ "skyblocker.mixins.json" ], + "accesswidener": "skyblocker.accesswidener", "depends": { "fabricloader": ">=0.14.22", - "fabric-api": ">=0.88.5+1.20.2", + "fabric-api": ">=0.89.1+1.20.2", "cloth-config2": "*", - "minecraft": "~1.20" + "minecraft": "~1.20.2" }, "conflicts": { "immediatelyfast": "<=1.1.26+1.20.1" diff --git a/src/main/resources/skyblocker.accesswidener b/src/main/resources/skyblocker.accesswidener new file mode 100644 index 00000000..7cf4250e --- /dev/null +++ b/src/main/resources/skyblocker.accesswidener @@ -0,0 +1,3 @@ +accessWidener v2 named + +accessible class net/minecraft/client/texture/PlayerSkinProvider$Textures
\ No newline at end of file diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json index 537f07d3..a4fe92dd 100644 --- a/src/main/resources/skyblocker.mixins.json +++ b/src/main/resources/skyblocker.mixins.json @@ -24,6 +24,7 @@ "ScoreboardMixin", "SocialInteractionsPlayerListWidgetMixin", "WorldRendererMixin", + "YggdrasilMinecraftSessionServiceMixin", "YggdrasilServicesKeyInfoMixin", "accessor.BeaconBlockEntityRendererInvoker", "accessor.FrustumInvoker", |