From c49d9133219c6b43a29ca45d57993e2ca63f5cde Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:31:05 +0300 Subject: [PATCH 01/12] Update mod and Minecraft versions in gradle.properties --- gradle.properties | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 02e3e07..dc1a3d9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,11 @@ # Mod version -mod_version=2.0.0 +mod_version=3.0.0 # Minecraft/Java version # Also hardcoded in fabric.mod.json and *.mixin.json -minecraft_version=1.21.6 -java_version=21 +minecraft_version=26.1 +java_version=25 # Fabric versions -- check these on https://fabricmc.net/develop # Also hardcoded in fabric.mod.json -yarn_mappings=1.21.6+build.1 -loader_version=0.16.14 +loader_version=0.19.0 From b17ffea0e40c145ba983d03cc303cd743ed2c3c1 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:31:21 +0300 Subject: [PATCH 02/12] Update fabric-loom plugin version and dependencies --- build.gradle | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.gradle b/build.gradle index a13029f..6764dc5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,12 +1,11 @@ plugins { id 'java' - id 'fabric-loom' version '1.11.4' + id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' } dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" - modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + implementation "net.fabricmc:fabric-loader:${project.loader_version}" } version = "${project.mod_version}+${project.minecraft_version}" From a8fcd8b499f69934ed38fed12536311d10b206ee Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:31:53 +0300 Subject: [PATCH 03/12] Update Minecraft and Fabric Loader dependencies --- src/main/resources/fabric.mod.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 0ca5eec..3bf9883 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,7 +24,7 @@ ], "depends": { - "minecraft": ">=1.21.6", - "fabricloader": ">=0.16.14" + "minecraft": ">=26.1", + "fabricloader": ">=0.19.0" } } From 948e76d638a93d228d2ccfc527592910f7423be1 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:32:05 +0300 Subject: [PATCH 04/12] Update compatibility level to JAVA_25 --- src/main/resources/statuseffecttimer.mixins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/statuseffecttimer.mixins.json b/src/main/resources/statuseffecttimer.mixins.json index d36caec..d2966f9 100644 --- a/src/main/resources/statuseffecttimer.mixins.json +++ b/src/main/resources/statuseffecttimer.mixins.json @@ -1,7 +1,7 @@ { "required": true, "package": "se.icus.mag.statuseffecttimer.mixin", - "compatibilityLevel": "JAVA_17", + "compatibilityLevel": "JAVA_25", "client": [ "StatusEffectTimerMixin" ], From 446e4488eb51918e2d60411094430704ee1d22ca Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:32:35 +0300 Subject: [PATCH 05/12] Refactor StatusEffectTimerMixin to use Gui class --- .../mixin/StatusEffectTimerMixin.java | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) 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 7f9880e..42c4a4c 100644 --- a/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java +++ b/src/main/java/se/icus/mag/statuseffecttimer/mixin/StatusEffectTimerMixin.java @@ -3,11 +3,11 @@ import com.llamalad7.mixinextras.sugar.Local; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.gui.hud.InGameHud; -import net.minecraft.client.render.RenderTickCounter; -import net.minecraft.entity.effect.StatusEffectInstance; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.gui.Gui; +import net.minecraft.client.DeltaTracker; +import net.minecraft.world.effect.MobEffectInstance; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -19,21 +19,21 @@ // 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) +@Mixin(value = Gui.class, priority = 500) public abstract class StatusEffectTimerMixin { @Unique private StatusEffectTimerRenderer renderer = new StatusEffectTimerRenderer(); @Shadow @Final - private MinecraftClient client; + private Minecraft minecraft; - @Inject(method = "renderStatusEffectOverlay", + @Inject(method = "extractEffects", at = @At(value = "INVOKE", - target = "Lnet/minecraft/client/gui/DrawContext;drawGuiTexture(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/util/Identifier;IIIII)V", + target = "Lnet/minecraft/client/gui/GuiGraphicsExtractor;blitSprite(Lcom/mojang/blaze3d/pipeline/RenderPipeline;Lnet/minecraft/resources/Identifier;IIIII)V", shift = At.Shift.AFTER)) - private void appendOverlayDrawing(DrawContext context, RenderTickCounter tickCounter, CallbackInfo c, - @Local StatusEffectInstance statusEffectInstance, - @Local(ordinal = 2) int x, @Local(ordinal = 3) int y) { - renderer.drawStatusEffectOverlay(client, context, statusEffectInstance, x, y); + private void onExtractEffects(GuiGraphicsExtractor graphics, DeltaTracker deltaTracker, CallbackInfo c, + @Local MobEffectInstance statusEffectInstance, + @Local(ordinal = 2) int x, @Local(ordinal = 3) int y) { + renderer.drawStatusEffectOverlay(minecraft, graphics, statusEffectInstance, x, y); } } From f4a9cedd46b0ef19ff3a9848a239b890aff563da Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:32:51 +0300 Subject: [PATCH 06/12] Refactor StatusEffectTimerRenderer for new API --- .../StatusEffectTimerRenderer.java | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/main/java/se/icus/mag/statuseffecttimer/StatusEffectTimerRenderer.java b/src/main/java/se/icus/mag/statuseffecttimer/StatusEffectTimerRenderer.java index 0eae279..f928ea3 100644 --- a/src/main/java/se/icus/mag/statuseffecttimer/StatusEffectTimerRenderer.java +++ b/src/main/java/se/icus/mag/statuseffecttimer/StatusEffectTimerRenderer.java @@ -1,32 +1,32 @@ package se.icus.mag.statuseffecttimer; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawContext; -import net.minecraft.client.resource.language.I18n; -import net.minecraft.entity.effect.StatusEffectInstance; -import net.minecraft.util.math.MathHelper; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphicsExtractor; +import net.minecraft.client.resources.language.I18n; +import net.minecraft.world.effect.MobEffectInstance; +import net.minecraft.util.Mth; public class StatusEffectTimerRenderer { - public void drawStatusEffectOverlay(MinecraftClient client, DrawContext context, StatusEffectInstance statusEffectInstance, int x, int y) { + public void drawStatusEffectOverlay(Minecraft client, GuiGraphicsExtractor context, MobEffectInstance statusEffectInstance, int x, int y) { String duration = getDurationAsString(statusEffectInstance); - int durationLength = client.textRenderer.getWidth(duration); - context.drawTextWithShadow(client.textRenderer, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF); + int durationLength = client.font.width(duration); + context.text(client.font, duration, x + 13 - (durationLength / 2), y + 14, 0x99FFFFFF); int amplifier = statusEffectInstance.getAmplifier(); if (amplifier > 0) { // Convert to roman numerals if possible - String amplifierString = (amplifier < 10) ? I18n.translate("enchantment.level." + (amplifier + 1)) : "**"; - int amplifierLength = client.textRenderer.getWidth(amplifierString); - context.drawTextWithShadow(client.textRenderer, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF); + String amplifierString = (amplifier < 10) ? I18n.get("enchantment.level." + (amplifier + 1)) : "**"; + int amplifierLength = client.font.width(amplifierString); + context.text(client.font, amplifierString, x + 22 - amplifierLength, y + 3, 0x99FFFFFF); } } - private String getDurationAsString(StatusEffectInstance statusEffectInstance) { - if (statusEffectInstance.isInfinite()) { - return I18n.translate("effect.duration.infinite"); + private String getDurationAsString(MobEffectInstance statusEffectInstance) { + if (statusEffectInstance.isInfiniteDuration()) { + return I18n.get("effect.duration.infinite"); } - int ticks = MathHelper.floor((float) statusEffectInstance.getDuration()); + int ticks = Mth.floor((float) statusEffectInstance.getDuration()); int seconds = ticks / 20; if (seconds >= 3600) { From e7d171a9f91e14bd035354771355181b09a2fdeb Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 17 Apr 2026 18:33:18 +0300 Subject: [PATCH 07/12] Update Gradle distribution URL to version 9.4.1 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ca025c8..c61a118 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.14-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 5062c43e92a37c3cc26801ae610b09af97f2fc28 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Wed, 22 Apr 2026 18:15:32 +0300 Subject: [PATCH 08/12] Update fabric-loom plugin version to 1.16-SNAPSHOT --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 6764dc5..2fef450 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'net.fabricmc.fabric-loom' version '1.15-SNAPSHOT' + id 'net.fabricmc.fabric-loom' version '1.16-SNAPSHOT' } dependencies { From bf6fd8ac78b89e3d2ef8f7c350d1441dabd94270 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:15:59 +0300 Subject: [PATCH 09/12] Update mod version and clean up gradle.properties --- gradle.properties | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/gradle.properties b/gradle.properties index dc1a3d9..6da5b95 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,8 @@ -# Mod version -mod_version=3.0.0 - -# Minecraft/Java version -# Also hardcoded in fabric.mod.json and *.mixin.json +# Fabric Properties minecraft_version=26.1 +loader_version=0.19.0 +loom_version=1.16-SNAPSHOT java_version=25 -# Fabric versions -- check these on https://fabricmc.net/develop -# Also hardcoded in fabric.mod.json -loader_version=0.19.0 +# Mod Properties +mod_version=2.0.0 From b9d4d63cc1a853cd141289c362b97121ca0d0bd4 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:16:29 +0300 Subject: [PATCH 10/12] Update fabric-loom version to use variable --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 2fef450..72cb1bb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,6 +1,6 @@ plugins { id 'java' - id 'net.fabricmc.fabric-loom' version '1.16-SNAPSHOT' + id 'net.fabricmc.fabric-loom' version "${loom_version}" } dependencies { From 8000a814ab6ea9c70680ae9c7629489bce5f998c Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:24:32 +0300 Subject: [PATCH 11/12] Use variables for Minecraft and Fabric Loader versions --- src/main/resources/fabric.mod.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 3bf9883..93bbe80 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -24,7 +24,7 @@ ], "depends": { - "minecraft": ">=26.1", - "fabricloader": ">=0.19.0" + "minecraft": ">=${minecraft_version}", + "fabricloader": ">=${loader_version}" } } From 43967b23873e06895a8bb93a3f78943a05f27ba7 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Fri, 24 Apr 2026 15:25:02 +0300 Subject: [PATCH 12/12] Expand mod_version, minecraft_version, and loader_version --- build.gradle | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 72cb1bb..95e4d28 100644 --- a/build.gradle +++ b/build.gradle @@ -14,8 +14,12 @@ processResources { inputs.property "version", project.version filesMatching("fabric.mod.json") { - expand "mod_version": project.version - } + expand( + "mod_version": project.version, + "minecraft_version": project.minecraft_version, + "loader_version": project.loader_version + ) +} filesMatching("*.mixins.json") { expand "java_version": project.java_version