From 0bd9917fc00d912d404b7a2e834c275e90dda88d Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Sat, 2 May 2026 20:31:01 +0300 Subject: [PATCH 1/2] Migrate to official mappings and Update to 26.1 --- build.gradle | 5 ++-- gradle.properties | 24 ++++++++------- gradle/wrapper/gradle-wrapper.properties | 2 +- .../StatusEffectTimerRenderer.java | 30 +++++++++---------- .../mixin/StatusEffectTimerMixin.java | 26 ++++++++-------- 5 files changed, 45 insertions(+), 42 deletions(-) diff --git a/build.gradle b/build.gradle index a13029f..72cb1bb 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 "${loom_version}" } 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}" diff --git a/gradle.properties b/gradle.properties index 02e3e07..bca732d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,12 +1,16 @@ -# Mod version -mod_version=2.0.0 +# Done to increase the memory available to gradle. +org.gradle.jvmargs=-Xmx1G +org.gradle.parallel=true -# Minecraft/Java version -# Also hardcoded in fabric.mod.json and *.mixin.json -minecraft_version=1.21.6 -java_version=21 +# IntelliJ IDEA is not yet fully compatible with configuration cache, see: https://github.com/FabricMC/fabric-loom/issues/1349 +org.gradle.configuration-cache=false -# 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 +# Fabric Properties +# check these on https://fabricmc.net/develop +minecraft_version=26.1 +java_version=25 +loader_version=0.19.0 +loom_version=1.16-SNAPSHOT + +# Mod Properties +mod_version=2.0.0 \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ca025c8..1a70468 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.5.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME 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) { 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..c802eaf 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 context, DeltaTracker deltaTracker, CallbackInfo c, + @Local MobEffectInstance statusEffectInstance, + @Local(ordinal = 2) int x, @Local(ordinal = 3) int y) { + renderer.drawStatusEffectOverlay(minecraft, context, statusEffectInstance, x, y); } } From 009b31578b5bfea4bf08c219ed010bfb0e597ff4 Mon Sep 17 00:00:00 2001 From: rh4htr <276647324+rh4htr@users.noreply.github.com> Date: Sun, 3 May 2026 19:45:09 +0300 Subject: [PATCH 2/2] Update Minecraft and Fabric Loader version 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..2c89cc4 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" } }