diff --git a/README.md b/README.md index 4367c0f6..4dd449c9 100644 --- a/README.md +++ b/README.md @@ -62,6 +62,7 @@ All changes are toggleable via config files. * **Particle Spawning:** Fixes various particle types not showing up on the client * **Piston Progress:** Properly saves the last state of pistons to tags * **Portal Traveling Dupe:** Fixes duplication issues that can occur when entities travel through portals +* **Potion Amplifier Visibility:** Fixes potion effects not displaying their level when it is above 'IV' * **Shear Mooshroom Dupe:** Fixes a duplication exploit connected to shearing mooshrooms * **Skeleton Aim:** Fixes skeletons not looking at their targets when strafing * **Sleep Resets Weather:** Fixes sleeping always resetting rain and thunder times diff --git a/src/main/java/mod/acgaming/universaltweaks/bugfixes/misc/potionamplifier/UTPotionAmplifierMixin.java b/src/main/java/mod/acgaming/universaltweaks/bugfixes/misc/potionamplifier/UTPotionAmplifierMixin.java new file mode 100644 index 00000000..fbb11fae --- /dev/null +++ b/src/main/java/mod/acgaming/universaltweaks/bugfixes/misc/potionamplifier/UTPotionAmplifierMixin.java @@ -0,0 +1,46 @@ +package mod.acgaming.universaltweaks.bugfixes.misc.potionamplifier.mixin; + +import java.util.Collection; +import java.util.Iterator; + +import net.minecraft.client.renderer.InventoryEffectRenderer; +import net.minecraft.client.resources.I18n; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.LocalCapture; + +import mod.acgaming.universaltweaks.config.UTConfigBugfixes; +import mod.acgaming.universaltweaks.config.UTConfigTweaks; + +// MC-130847 +// https://bugs.mojang.com/browse/MC-130847 +// Courtesy of fonnymunkey +@Mixin(InventoryEffectRenderer.class) +public class UTPotionAmplifierMixin +{ + private int amplifier = 0; + + @Inject( + method = "drawActivePotionEffects", + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;getTextureManager()Lnet/minecraft/client/renderer/texture/TextureManager;"), + locals = LocalCapture.CAPTURE_FAILHARD + ) + public void rlmixins_vanillaInventoryEffectRenderer_drawActivePotionEffects_Inject(CallbackInfo ci, int i, int j, int k, Collection collection, int l, Iterator var6, PotionEffect potioneffect, Potion potion) + { + this.amplifier = potioneffect.getAmplifier(); + } + + @ModifyArg(method = "drawActivePotionEffects", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/FontRenderer;drawStringWithShadow(Ljava/lang/String;FFI)I", ordinal = 0)) + public String rlmixins_vanillaInventoryEffectRenderer_drawActivePotionEffects_Modify(String text) + { + if (this.amplifier > 3 && this.amplifier < 10) text += " " + I18n.format("enchantment.level." + (this.amplifier + 1)); + if (this.amplifier >= 10 && this.amplifier < 128) text += " " + (this.amplifier + 1); + this.amplifier = 0; + return text; + } +} \ No newline at end of file diff --git a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigBugfixes.java b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigBugfixes.java index 3e25a1d9..d13c2cd7 100644 --- a/src/main/java/mod/acgaming/universaltweaks/config/UTConfigBugfixes.java +++ b/src/main/java/mod/acgaming/universaltweaks/config/UTConfigBugfixes.java @@ -312,6 +312,11 @@ public static class MiscCategory @Config.Name("Particle Spawning") @Config.Comment("Fixes various particle types not showing up on the client") public boolean utParticleSpawningToggle = true; + + @Config.RequiresMcRestart + @Config.Name("Potion Amplifier Visibility") + @Config.Comment("Fixes potion effects not displaying their level when it is above 'IV'") + public boolean utPotionAmplifierVisibilityToggle = true; @Config.RequiresMcRestart @Config.Name("Packet Size") diff --git a/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java b/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java index be2d9bcd..7603d5b3 100644 --- a/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java +++ b/src/main/java/mod/acgaming/universaltweaks/core/UTLoadingPlugin.java @@ -112,6 +112,7 @@ public List getMixinConfigs() configs.add("mixins.bugfixes.entities.villagermantle.json"); configs.add("mixins.bugfixes.misc.depthmask.json"); configs.add("mixins.bugfixes.misc.modelgap.json"); + configs.add("mixins.bugfixes.misc.potionamplifier.json"); configs.add("mixins.bugfixes.misc.smoothlighting.json"); configs.add("mixins.bugfixes.misc.startup.json"); configs.add("mixins.bugfixes.world.frustumculling.json"); @@ -260,6 +261,8 @@ public boolean shouldMixinConfigQueue(String mixinConfig) return UTConfigBugfixes.MISC.utDepthMaskToggle; case "mixins.bugfixes.misc.modelgap.json": return UTConfigBugfixes.MISC.MODEL_GAP.utModelGapToggle; + case "mixins.bugfixes.misc.potionamplifier.json": + return UTConfigBugfixes.MISC.utPotionAmplifierVisibilityToggle; case "mixins.bugfixes.misc.smoothlighting.json": return UTConfigBugfixes.MISC.utAccurateSmoothLighting; case "mixins.bugfixes.misc.startup.json": diff --git a/src/main/resources/mixins.bugfixes.misc.potionamplifier.json b/src/main/resources/mixins.bugfixes.misc.potionamplifier.json new file mode 100644 index 00000000..fb5741b7 --- /dev/null +++ b/src/main/resources/mixins.bugfixes.misc.potionamplifier.json @@ -0,0 +1,7 @@ +{ + "package": "mod.acgaming.universaltweaks.bugfixes.misc.potionamplifier.mixin", + "refmap": "universaltweaks.refmap.json", + "minVersion": "0.8", + "compatibilityLevel": "JAVA_8", + "client": ["UTPotionAmplifierMixin"] +} \ No newline at end of file