diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 20:00:18 -0400 |
---|---|---|
committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-04-26 20:00:18 -0400 |
commit | d24bac4d728d8ea9264e08934fb863771bcca5e2 (patch) | |
tree | 3157ed007409e99d70605157d47e9b0193a4d28a /src/main/java/de/hysky/skyblocker/mixins/PlayerSkinTextureMixin.java | |
parent | 74f40f7704cd935552a27d9ebc2ae6a3c76e3566 (diff) | |
download | Skyblocker-d24bac4d728d8ea9264e08934fb863771bcca5e2.tar.gz Skyblocker-d24bac4d728d8ea9264e08934fb863771bcca5e2.tar.bz2 Skyblocker-d24bac4d728d8ea9264e08934fb863771bcca5e2.zip |
Pluralize the mixin and accessor packages
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); + } +} |