From 083c31e691198363c7d52772f3ce75ba9f362c58 Mon Sep 17 00:00:00 2001 From: Andreas Date: Sat, 1 Aug 2026 19:18:02 -0700 Subject: [PATCH 1/2] Upgrade to 26.2 Signed-off-by: Andreas --- settings.gradle.kts | 4 +- .../java/sh/ndy/ToggleNametagsClient.java | 5 ++- src/main/java/sh/ndy/config/Options.java | 9 ++++ .../MixinNametagsBackgroundOpacity.java | 42 ++++++++++++++++--- .../mixin/client/MixinNametagsTextShadow.java | 17 ++++++-- .../java/sh/ndy/screens/ConfigScreen.java | 23 +++++++++- .../togglenametags.client.mixins.json | 6 +-- stonecutter.gradle.kts | 2 +- versions/26.2/gradle.properties | 11 +++++ 9 files changed, 100 insertions(+), 19 deletions(-) create mode 100644 versions/26.2/gradle.properties diff --git a/settings.gradle.kts b/settings.gradle.kts index 73f0b00..fa47d35 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -15,8 +15,8 @@ plugins { stonecutter { create(rootProject) { // See https://stonecutter.kikugie.dev/wiki/start/#choosing-minecraft-versions - versions("26.1", "26.1.1", "26.1.2") - vcsVersion = "26.1.2" + versions("26.1", "26.1.1", "26.1.2", "26.2") + vcsVersion = "26.2" } } diff --git a/src/main/java/sh/ndy/ToggleNametagsClient.java b/src/main/java/sh/ndy/ToggleNametagsClient.java index c5857e7..24db879 100644 --- a/src/main/java/sh/ndy/ToggleNametagsClient.java +++ b/src/main/java/sh/ndy/ToggleNametagsClient.java @@ -55,7 +55,10 @@ public void onInitializeClient() { // TODO: prettify ClientCommandRegistrationCallback.EVENT.register((dispatcher, registryAccess) -> { dispatcher.register(ClientCommands.literal("ntconfig").executes(context -> { - context.getSource().getClient().schedule(() -> c.setScreen(new ConfigScreen(null, null))); + //? if < 26.2 { + // context.getSource().getClient().schedule(() -> c.setScreen(new ConfigScreen(null, null))); + //?} else + context.getSource().getClient().schedule(() -> c.setScreenAndShow(new ConfigScreen(null, null))); return 1; })); diff --git a/src/main/java/sh/ndy/config/Options.java b/src/main/java/sh/ndy/config/Options.java index 0a3fd02..617a94b 100644 --- a/src/main/java/sh/ndy/config/Options.java +++ b/src/main/java/sh/ndy/config/Options.java @@ -8,6 +8,7 @@ public class Options { public boolean renderSelfNametag = false; public boolean renderBossbar = true; private double nametagOpacity = 1 * Constants.NAMETAG_OPACITY_MULTIPLIER; + private boolean nametagBackgroundEnabled = true; private boolean renderNametagTextShadow = false; public boolean getRenderNametags() { @@ -43,6 +44,14 @@ public void setNametagOpacity(float newOpacity) { this.nametagOpacity = (Math.floor(newOpacity * 100.0) / 100.0) * Constants.NAMETAG_OPACITY_MULTIPLIER; } + public boolean getNametagBackgroundEnabled() { + return this.nametagBackgroundEnabled; + } + + public void setNametagBackgroundEnabled(boolean enabled) { + this.nametagBackgroundEnabled = enabled; + } + public boolean getRenderNametagTextShadow() { return this.renderNametagTextShadow; } diff --git a/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java b/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java index 98ad21e..4732e96 100644 --- a/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java +++ b/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java @@ -1,17 +1,47 @@ package sh.ndy.mixin.client; -import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import net.minecraft.client.renderer.feature.NameTagFeatureRenderer; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; import sh.ndy.config.Config; -@Mixin(NameTagFeatureRenderer.Storage.class) +@Mixin(NameTagFeatureRenderer.class) public class MixinNametagsBackgroundOpacity { - @ModifyExpressionValue(method = "add", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/state/OptionsRenderState;getBackgroundOpacity(F)F")) - private float submitLabel(float original) { + //? if < 26.2 { + /* @Unique private static final String TARGET = "Lnet/minecraft/client/renderer/state/OptionsRenderState;getBackgroundOpacity(F)F"; */ + //?} else + @Unique private static final String TARGET = "Lnet/minecraft/client/gui/Font;prepareText(Lnet/minecraft/util/FormattedCharSequence;FFIZZI)Lnet/minecraft/client/gui/Font$PreparedText;"; + + + //? if < 26.2 { + /* @ModifyExpressionValue( + method = "add", + at = @At( + value = "INVOKE", + target = TARGET + ) + ) + private float changeOpacity(float original) { return (float) Config.getOptions().getNametagOpacity(); } -} + *///? else { + @ModifyArg( + method = "prepareText", + at = @At( + value = "INVOKE", + target = TARGET + ), + index = 6 + ) + + private static int disableNametag(int originalColor) { + if (!Config.getOptions().getNametagBackgroundEnabled()) { + return 0; + } + + return originalColor; + } +} \ No newline at end of file diff --git a/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java b/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java index 3a95e37..dd83112 100644 --- a/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java +++ b/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java @@ -9,13 +9,22 @@ @Mixin(NameTagFeatureRenderer.class) public class MixinNametagsTextShadow { - @Unique - private final String TEXT_RENDERER_TARGET = + //? if < 26.2 { + /* @Unique private static final String TEXT_RENDERER_TARGET = "Lnet/minecraft/client/gui/Font;drawInBatch(Lnet/minecraft/network/chat/Component;FFIZLorg/joml/Matrix4fc;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/client/gui/Font$DisplayMode;II)V"; + *///?} else + @Unique private static final String TEXT_RENDERER_TARGET = + "Lnet/minecraft/client/gui/Font;prepareText(Lnet/minecraft/util/FormattedCharSequence;FFIZZI)Lnet/minecraft/client/gui/Font$PreparedText;"; + private static final NametagsTextShadowListener listener = new NametagsTextShadowListener(); - @ModifyArg(method = "renderTranslucent", at = @At(value = "INVOKE", target = TEXT_RENDERER_TARGET)) - private boolean render(boolean original) { + @ModifyArg(method = "prepareText", + at = @At(value = "INVOKE", target = TEXT_RENDERER_TARGET), + //? if >=26.2 { + index = 4 + //?} + ) + private static boolean render(boolean drawShadow) { return listener.handleMixin(); } } diff --git a/src/main/java/sh/ndy/screens/ConfigScreen.java b/src/main/java/sh/ndy/screens/ConfigScreen.java index 754559d..953a257 100644 --- a/src/main/java/sh/ndy/screens/ConfigScreen.java +++ b/src/main/java/sh/ndy/screens/ConfigScreen.java @@ -54,6 +54,10 @@ private Component getRenderNametagShadowText() { "Show nametag text shadow: " + (Config.getOptions().getRenderNametagTextShadow() ? "§aYes" : "§cNo")); } + private Component getEnableNametagBackground() { + return Component.nullToEmpty("Show nametag background: " + (Config.getOptions().getNametagBackgroundEnabled() ? "§aYes" : "§cNo")); + } + protected void init() { GridLayout grid = new GridLayout(); grid.defaultCellSetting().padding(4, 4, 4, 2); @@ -104,6 +108,13 @@ protected void applyValue() { } }; + Button renderNametagBackground = Button.builder(getEnableNametagBackground(), (btn) -> { + Config.getOptions().setNametagBackgroundEnabled(!Config.getOptions().getNametagBackgroundEnabled()); + Config.saveConfig(); + btn.setFocused(false); + btn.setMessage(getEnableNametagBackground()); + }).width(STANDARD_BTN_WIDTH).build(); + // TODO: Find a way to remove Essential's padding around the nametags, so we don't have to disable // this option when Essential is loaded. if (ToggleNametagsClient.isEssentialModLoaded) { @@ -115,7 +126,12 @@ protected void applyValue() { adder.addChild(renderNametagsBtnWidget); adder.addChild(renderSelfNametagsBtnWidget); adder.addChild(renderNametagShadowBtnWidget); - adder.addChild(nametagOpacitySlider); + + //? if < 26.2 { + /* adder.addChild(nametagOpacitySlider); */ + //?} else { + adder.addChild(renderNametagBackground); + adder.addChild(renderBossbarBtnWidget, 2); grid.arrangeElements(); @@ -135,6 +151,9 @@ public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mo @Override public void onClose() { - this.minecraft.setScreen(parent); + //? if < 26.2 { + // this.minecraft.setScreen(parent); + //?} else + this.minecraft.setScreenAndShow(parent); } } diff --git a/src/main/resources/togglenametags.client.mixins.json b/src/main/resources/togglenametags.client.mixins.json index 3083379..8b0ca77 100644 --- a/src/main/resources/togglenametags.client.mixins.json +++ b/src/main/resources/togglenametags.client.mixins.json @@ -3,11 +3,11 @@ "package": "sh.ndy.mixin.client", "compatibilityLevel": "JAVA_17", "client": [ + "MixinNametagsBackgroundOpacity", + "MixinNametagsTextShadow", "MixinRenderBossBar", "MixinRenderNameTag", - "MixinRenderSelfNameTag", - "MixinNametagsTextShadow", - "MixinNametagsBackgroundOpacity" + "MixinRenderSelfNameTag" ], "injectors": { "defaultRequire": 1 diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts index 2d0fcb2..8de5a9b 100644 --- a/stonecutter.gradle.kts +++ b/stonecutter.gradle.kts @@ -4,7 +4,7 @@ plugins { // id("me.modmuss50.mod-publish-plugin") version "1.0.+" apply false } -stonecutter active "26.1.1" +stonecutter active "26.2" // Make newer versions be published last stonecutter tasks { diff --git a/versions/26.2/gradle.properties b/versions/26.2/gradle.properties new file mode 100644 index 0000000..ef8aefb --- /dev/null +++ b/versions/26.2/gradle.properties @@ -0,0 +1,11 @@ +deps.fabric_api=0.156.0+26.2 +deps.modmenu=20.0.1 + +# Minecraft dependency for fabric.mod.json +mod.mc_dep=>=26.2 + +# Release title for Modrinth and Curseforge +mod.mc_title=26.2 + +# Space-separated compatible versions for publishing +mod.mc_targets=26.2 \ No newline at end of file From b4f897ae3d0b0c2aed3828bf08c0168d1e493d0c Mon Sep 17 00:00:00 2001 From: Andreas Date: Sat, 1 Aug 2026 19:33:15 -0700 Subject: [PATCH 2/2] fix closing statements Signed-off-by: Andreas --- .../MixinNametagsBackgroundOpacity.java | 14 ++++++++----- .../mixin/client/MixinNametagsTextShadow.java | 21 +++++++++++++------ .../java/sh/ndy/screens/ConfigScreen.java | 2 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java b/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java index 4732e96..a2a7995 100644 --- a/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java +++ b/src/main/java/sh/ndy/mixin/client/MixinNametagsBackgroundOpacity.java @@ -1,5 +1,8 @@ package sh.ndy.mixin.client; +//? if < 26.2 { +/* import com.llamalad7.mixinextras.injector.ModifyExpressionValue; */ +//?} import net.minecraft.client.renderer.feature.NameTagFeatureRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; @@ -7,15 +10,17 @@ import org.spongepowered.asm.mixin.injection.ModifyArg; import sh.ndy.config.Config; - +//? if < 26.2 { +/* @Mixin(NameTagFeatureRenderer.Storage.class) */ +//?} else { @Mixin(NameTagFeatureRenderer.class) +//?} public class MixinNametagsBackgroundOpacity { //? if < 26.2 { /* @Unique private static final String TARGET = "Lnet/minecraft/client/renderer/state/OptionsRenderState;getBackgroundOpacity(F)F"; */ //?} else @Unique private static final String TARGET = "Lnet/minecraft/client/gui/Font;prepareText(Lnet/minecraft/util/FormattedCharSequence;FFIZZI)Lnet/minecraft/client/gui/Font$PreparedText;"; - //? if < 26.2 { /* @ModifyExpressionValue( method = "add", @@ -27,7 +32,7 @@ public class MixinNametagsBackgroundOpacity { private float changeOpacity(float original) { return (float) Config.getOptions().getNametagOpacity(); } - *///? else { + *///?} else { @ModifyArg( method = "prepareText", at = @At( @@ -36,12 +41,11 @@ private float changeOpacity(float original) { ), index = 6 ) - private static int disableNametag(int originalColor) { if (!Config.getOptions().getNametagBackgroundEnabled()) { return 0; } - return originalColor; } + //?} } \ No newline at end of file diff --git a/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java b/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java index dd83112..a2f0e4a 100644 --- a/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java +++ b/src/main/java/sh/ndy/mixin/client/MixinNametagsTextShadow.java @@ -10,21 +10,30 @@ @Mixin(NameTagFeatureRenderer.class) public class MixinNametagsTextShadow { //? if < 26.2 { - /* @Unique private static final String TEXT_RENDERER_TARGET = + /* @Unique private static final String TARGET = "Lnet/minecraft/client/gui/Font;drawInBatch(Lnet/minecraft/network/chat/Component;FFIZLorg/joml/Matrix4fc;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/client/gui/Font$DisplayMode;II)V"; - *///?} else - @Unique private static final String TEXT_RENDERER_TARGET = + *///?} else { + @Unique private static final String TARGET = "Lnet/minecraft/client/gui/Font;prepareText(Lnet/minecraft/util/FormattedCharSequence;FFIZZI)Lnet/minecraft/client/gui/Font$PreparedText;"; + //?} private static final NametagsTextShadowListener listener = new NametagsTextShadowListener(); + //? if < 26.2 { + /* + @ModifyArg(method = "renderTranslucent", at = @At(value = "INVOKE", target = TARGET)) + private boolean render(boolean original) { + return listener.handleMixin(); + } + */ + //?} else { @ModifyArg(method = "prepareText", - at = @At(value = "INVOKE", target = TEXT_RENDERER_TARGET), - //? if >=26.2 { + at = @At(value = "INVOKE", target = TARGET), index = 4 - //?} ) private static boolean render(boolean drawShadow) { return listener.handleMixin(); } + //?} + } diff --git a/src/main/java/sh/ndy/screens/ConfigScreen.java b/src/main/java/sh/ndy/screens/ConfigScreen.java index 953a257..61f9e60 100644 --- a/src/main/java/sh/ndy/screens/ConfigScreen.java +++ b/src/main/java/sh/ndy/screens/ConfigScreen.java @@ -129,7 +129,7 @@ protected void applyValue() { //? if < 26.2 { /* adder.addChild(nametagOpacitySlider); */ - //?} else { + //?} else adder.addChild(renderNametagBackground); adder.addChild(renderBossbarBtnWidget, 2);