diff options
author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2023-08-30 21:26:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-08-30 21:26:21 -0400 |
commit | 44819b6eda32ec3dee637396c94f62bf0bcb0adc (patch) | |
tree | e3d1295c9cab1bd1b18abf1f1737c7155720fc4b /src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java | |
parent | b20a3ed531d40ed7963f9eb3cbe4a0202e01e5c6 (diff) | |
download | Skyblocker-44819b6eda32ec3dee637396c94f62bf0bcb0adc.tar.gz Skyblocker-44819b6eda32ec3dee637396c94f62bf0bcb0adc.tar.bz2 Skyblocker-44819b6eda32ec3dee637396c94f62bf0bcb0adc.zip |
Starred Mob Glow (#260)
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java new file mode 100644 index 00000000..3b796c38 --- /dev/null +++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/WorldRendererMixin.java @@ -0,0 +1,33 @@ +package me.xmrvizzy.skyblocker.mixin; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyVariable; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import com.llamalad7.mixinextras.sugar.Share; +import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; + +import me.xmrvizzy.skyblocker.config.SkyblockerConfig; +import me.xmrvizzy.skyblocker.skyblock.dungeon.StarredMobGlow; +import net.minecraft.client.render.WorldRenderer; +import net.minecraft.entity.Entity; + +@Mixin(WorldRenderer.class) +public class WorldRendererMixin { + + @ModifyExpressionValue(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;hasOutline(Lnet/minecraft/entity/Entity;)Z")) + private boolean skyblocker$shouldStarredMobGlow(boolean original, @Local Entity entity, @Share("isGlowingStarredMob") LocalBooleanRef isGlowingStarredMob) { + boolean isAStarredMobThatShouldGlow = SkyblockerConfig.get().locations.dungeons.starredMobGlow && StarredMobGlow.shouldMobGlow(entity); + + isGlowingStarredMob.set(isAStarredMobThatShouldGlow); + + return original || isAStarredMobThatShouldGlow; + } + + @ModifyVariable(method = "render", at = @At("STORE"), ordinal = 0) + private int skyblocker$modifyGlowColor(int color, @Local Entity entity, @Share("isGlowingStarredMob") LocalBooleanRef isGlowingStarredMob) { + return isGlowingStarredMob.get() ? StarredMobGlow.getGlowColor(entity) : color; + } +} |