Skip to content

Commit

Permalink
Support for 1.19.4 (infinite durability)
Browse files Browse the repository at this point in the history
  • Loading branch information
magicus committed Jan 19, 2024
1 parent c4bdde4 commit ad35b8a
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 18 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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)
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -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);
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,6 @@

"depends": {
"fabricloader": ">=0.7.4",
"minecraft": "~1.19"
"minecraft": "1.19.4"
}
}

0 comments on commit ad35b8a

Please sign in to comment.