diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-05-04 19:14:06 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-05-04 19:14:06 -0400 |
commit | 4a4234d7c9d4f038d4fa418fb15ef24ce3fcc501 (patch) | |
tree | 6e87c6b67aabeb82dbe075d68c16b5492ff92c9b /src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java | |
parent | ed0489539902d77595625aaa3bca4e328e1f7e88 (diff) | |
parent | f7b13895a4605e1d22e2c00e7b62c7365902d1aa (diff) | |
download | Skyblocker-4a4234d7c9d4f038d4fa418fb15ef24ce3fcc501.tar.gz Skyblocker-4a4234d7c9d4f038d4fa418fb15ef24ce3fcc501.tar.bz2 Skyblocker-4a4234d7c9d4f038d4fa418fb15ef24ce3fcc501.zip |
Merge pull request #669 from SkyblockerMod/1.20.5
1.20.5 & 1.20.6
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java')
-rw-r--r-- | src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java b/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java new file mode 100644 index 00000000..f9e2c8cd --- /dev/null +++ b/src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java @@ -0,0 +1,40 @@ +package de.hysky.skyblocker.mixins; + +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.CallbackInfoReturnable; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; + +import de.hysky.skyblocker.config.SkyblockerConfigManager; +import de.hysky.skyblocker.skyblock.item.PlayerHeadHashCache; +import de.hysky.skyblocker.utils.Utils; +import net.minecraft.client.texture.NativeImage; +import net.minecraft.client.texture.PlayerSkinTexture; + +@Mixin(PlayerSkinTexture.class) +public class PlayerSkinTextureMixin { + @Shadow + @Final + private String url; + + @Unique + private boolean isSkyblockSkinTexture; + + @Inject(method = "remapTexture", at = @At("HEAD")) + private void skyblocker$determineSkinSource(CallbackInfoReturnable<NativeImage> cir) { + if (Utils.isOnSkyblock()) { + int skinHash = PlayerHeadHashCache.getSkinHash(this.url).hashCode(); + this.isSkyblockSkinTexture = PlayerHeadHashCache.contains(skinHash); + } + } + + @WrapWithCondition(method = "remapTexture", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/texture/PlayerSkinTexture;stripAlpha(Lnet/minecraft/client/texture/NativeImage;IIII)V")) + private boolean skyblocker$dontStripAlphaValues(NativeImage image, int x1, int y1, int x2, int y2) { + return !(SkyblockerConfigManager.get().general.dontStripSkinAlphaValues && this.isSkyblockSkinTexture); + } +} |