diff --git a/README.md b/README.md index ed904ff..44d3cfe 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ This is a Minecraft mod that overlays a timer on the Vanilla status effect HUD icons. -This mod requires Minecraft 1.16.5-1.19 and the Fabric loader. +This mod requires Minecraft 1.16.5-1.19.4 and the Fabric loader. This mod overlays the number of seconds left of the status effect, or the number of minutes (followed by "m") if it is more than 60 seconds, on the vanilla status effect indicator. If the effect has an amplifier (as in "Haste II"), the amplifier is also overlaid. That's it. This is a very minimalistic mod. No settings are required nor provided. @@ -25,7 +25,7 @@ This is what it looks like when you are using the mod. The latest version is 1.2.0. -Direct download links for Minecraft 1.19: +Direct download links for Minecraft 1.19.4: * Download from GitHub: [statuseffecttimer-1.2.0+1.19.jar](https://github.com/magicus/statuseffecttimer/releases/download/v1.2.0%2B1.19/statuseffecttimer-1.2.0+1.19.jar) * Download from Modrinth: [statuseffecttimer-1.2.0+1.19.jar](https://cdn.modrinth.com/data/T9FDHbY5/versions/uJH5bLJ1/statuseffecttimer-1.2.0%2B1.19.jar) diff --git a/gradle.properties b/gradle.properties index 778298d..f7d5c99 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,16 +3,16 @@ org.gradle.jvmargs=-Xmx1G # Fabric Properties # check these on https://fabricmc.net/develop -minecraft_version=1.19 -yarn_mappings=1.19+build.2 -loader_version=0.14.11 +minecraft_version=1.19.4 +yarn_mappings=1.19.4+build.2 +loader_version=0.15.6 # Mod Properties -mod_version = 1.2.0+1.19 +mod_version = 1.2.0+1.19.4 maven_group = se.icus.mag archives_base_name = statuseffecttimer # Dependencies # Fabric api -fabric_version=0.56.0+1.19 +fabric_version=0.87.2+1.19.4 mixinextras_version=0.2.2 \ No newline at end of file diff --git a/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java b/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java index 4afedf0..ee66872 100644 --- a/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java +++ b/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java @@ -22,7 +22,7 @@ // Set priority to 500, to load before default at 1000. This is to better cooperate with HUDTweaks. @Environment(EnvType.CLIENT) @Mixin(value = InGameHud.class, priority = 500) -public abstract class StatusEffectTimerMixin extends DrawableHelper { +public abstract class StatusEffectTimerMixin { @Shadow @Final private MinecraftClient client; @@ -39,25 +39,28 @@ private void appendOverlayDrawing(MatrixStack matrices, CallbackInfo c, private void drawStatusEffectOverlay(MatrixStack matrices, StatusEffectInstance statusEffectInstance, int x, int y) { String duration = getDurationAsString(statusEffectInstance); int durationLength = client.textRenderer.getWidth(duration); - drawStringWithShadow(matrices, client.textRenderer, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF); + DrawableHelper.drawTextWithShadow(matrices, client.textRenderer, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF); int amplifier = statusEffectInstance.getAmplifier(); if (amplifier > 0) { - // Most langages has "translations" for amplifier 1-5, converting to roman numerals - String amplifierString = (amplifier < 6) ? I18n.translate("potion.potency." + amplifier) : "**"; - int amplifierLength = client.textRenderer.getWidth(amplifierString); - drawStringWithShadow(matrices, client.textRenderer, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF); + // Convert to roman numerals if possible + String amplifierString = (amplifier < 10) ? I18n.translate("enchantment.level." + (amplifier + 1)) : "**"; + int amplifierLength = client.textRenderer.getWidth(amplifierString); + DrawableHelper.drawTextWithShadow(matrices, client.textRenderer, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF); } } private String getDurationAsString(StatusEffectInstance statusEffectInstance) { + if (statusEffectInstance.isInfinite()) { + return I18n.translate("effect.duration.infinite"); + } + int ticks = MathHelper.floor((float) statusEffectInstance.getDuration()); int seconds = ticks / 20; - if (ticks > 32147) { - // Vanilla considers everything above this to be infinite - return "**"; - } else if (seconds > 60) { + if (seconds >= 3600) { + return seconds / 3600 + "h"; + } else if (seconds >= 60) { return seconds / 60 + "m"; } else { return String.valueOf(seconds); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index a9621a0..5c055b8 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -25,6 +25,6 @@ "depends": { "fabricloader": ">=0.7.4", - "minecraft": "~1.19" + "minecraft": "1.19.4" } }