From 9a792014e113ade46639b3a41753a62da27af95d Mon Sep 17 00:00:00 2001 From: Michael Viamari Date: Fri, 26 Dec 2025 18:01:06 -0800 Subject: [PATCH 1/4] feat: partial 1.21.11 support - straightforward API changes - Update Minecraft version to 1.21.11 in gradle.properties - Update dependencies: Fabric API 0.140.2, NeoForge 21.11.13-beta, Fabric Loader 0.18.4 - Update Architectury Loom to 1.13-SNAPSHOT (required for 1.21.11) - Bump mod version to 17.0.0 - Add changelog for 17.0.0 Minecraft 1.21.11 API changes (straightforward fixes): - Replace ResourceLocation with Identifier (class renamed in 1.21.11) - Update Util import from net.minecraft.Util to net.minecraft.util.Util - Replace Options.graphicsMode() with graphicsPreset() - Replace ResourceKey.location() with identifier() - Update access widener to use Identifier instead of ResourceLocation Remaining work: - DebugScreenEntryList API changes (toggleF3Visible, isF3Visible, setF3Visible) - Level.getMoonBrightness() replacement --- build.gradle | 2 +- .../config/gui/modules/ModuleListWidget.java | 10 +++++----- .../me/cominixo/betterf3/mixin/DebugMixin.java | 10 +++++----- .../betterf3/modules/GraphicsModule.java | 6 +++--- .../betterf3/modules/LocationModule.java | 2 +- .../java/me/cominixo/betterf3/utils/Utils.java | 2 +- .../src/main/resources/betterf3.accesswidener | 2 +- docs/changelogs/17.0.0.md | 4 ++++ gradle.properties | 18 +++++++++--------- 9 files changed, 30 insertions(+), 26 deletions(-) create mode 100644 docs/changelogs/17.0.0.md diff --git a/build.gradle b/build.gradle index 2b7a9988..592ea90d 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ import java.text.SimpleDateFormat plugins { id "architectury-plugin" version "3.4-SNAPSHOT" // Uses Architectury plugin https://github.com/architectury/architectury-plugin - id "dev.architectury.loom" version "1.11-SNAPSHOT" apply false // Uses Architectury Loom + id "dev.architectury.loom" version "1.13-SNAPSHOT" apply false // Uses Architectury Loom // (fork of Fabric Loom) https://github.com/architectury/architectury-loom - does not apply to root project id "net.kyori.indra" version "3.2.0" // Uses Indra plugin id "net.kyori.indra.git" version "3.2.0" // Uses Indra Git plugin diff --git a/common/src/main/java/me/cominixo/betterf3/config/gui/modules/ModuleListWidget.java b/common/src/main/java/me/cominixo/betterf3/config/gui/modules/ModuleListWidget.java index 0c3740d8..3861d780 100644 --- a/common/src/main/java/me/cominixo/betterf3/config/gui/modules/ModuleListWidget.java +++ b/common/src/main/java/me/cominixo/betterf3/config/gui/modules/ModuleListWidget.java @@ -12,7 +12,7 @@ import net.minecraft.client.input.MouseButtonEvent; import net.minecraft.client.renderer.RenderPipelines; import net.minecraft.network.chat.Component; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.jetbrains.annotations.NotNull; /** @@ -220,17 +220,17 @@ public void renderContent(final @NotNull GuiGraphics context, final int mouseX, if (index > 0) { if (v < 16 && w < 16) { - context.blitSprite(RenderPipelines.GUI_TEXTURED, ResourceLocation.parse("server_list/move_up_highlighted"), x, y, 32, 32); + context.blitSprite(RenderPipelines.GUI_TEXTURED, Identifier.parse("server_list/move_up_highlighted"), x, y, 32, 32); } else { - context.blitSprite(RenderPipelines.GUI_TEXTURED, ResourceLocation.parse("server_list/move_up"), x, y, 32, 32); + context.blitSprite(RenderPipelines.GUI_TEXTURED, Identifier.parse("server_list/move_up"), x, y, 32, 32); } } if (index < ModuleListWidget.this.moduleEntries.size() - 1) { if (v < 16 && w > 16) { - context.blitSprite(RenderPipelines.GUI_TEXTURED, ResourceLocation.parse("server_list/move_down_highlighted"), x, y, 32, 32); + context.blitSprite(RenderPipelines.GUI_TEXTURED, Identifier.parse("server_list/move_down_highlighted"), x, y, 32, 32); } else { - context.blitSprite(RenderPipelines.GUI_TEXTURED, ResourceLocation.parse("server_list/move_down"), x, y, 32, 32); + context.blitSprite(RenderPipelines.GUI_TEXTURED, Identifier.parse("server_list/move_down"), x, y, 32, 32); } } } diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java index 901ab5f9..5e0e5d92 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java @@ -3,14 +3,14 @@ import java.util.Collection; import java.util.List; import me.cominixo.betterf3.config.GeneralOptions; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.DebugScreenOverlay; import net.minecraft.client.gui.components.debug.DebugEntryNoop; import net.minecraft.client.gui.components.debug.DebugScreenEntries; import net.minecraft.client.gui.components.debug.DebugScreenEntryList; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -38,10 +38,10 @@ public abstract class DebugMixin { @Shadow private Minecraft minecraft; @Unique - private static final ResourceLocation BETTERF3_RESOURCE = DebugScreenEntries.register("betterf3", new DebugEntryNoop()); + private static final Identifier BETTERF3_RESOURCE = DebugScreenEntries.register("betterf3", new DebugEntryNoop()); @Unique - private static final List BETTERF3_LIST = List.of(BETTERF3_RESOURCE); + private static final List BETTERF3_LIST = List.of(BETTERF3_RESOURCE); /** * Ensures that the TPS graph works. @@ -58,7 +58,7 @@ public void renderBefore(final GuiGraphics context, final CallbackInfo ci) { } @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;getCurrentlyEnabled()Ljava/util/Collection;")) - private Collection currentlyEnabled(final DebugScreenEntryList instance) { + private Collection currentlyEnabled(final DebugScreenEntryList instance) { if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isF3Visible()) { return BETTERF3_LIST; } diff --git a/common/src/main/java/me/cominixo/betterf3/modules/GraphicsModule.java b/common/src/main/java/me/cominixo/betterf3/modules/GraphicsModule.java index 81a6d424..e762f955 100644 --- a/common/src/main/java/me/cominixo/betterf3/modules/GraphicsModule.java +++ b/common/src/main/java/me/cominixo/betterf3/modules/GraphicsModule.java @@ -6,7 +6,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.resources.language.I18n; import net.minecraft.network.chat.TextColor; -import net.minecraft.resources.ResourceLocation; +import net.minecraft.resources.Identifier; import org.apache.commons.lang3.StringUtils; /** @@ -47,14 +47,14 @@ public void update(final Minecraft client) { // Render Distance lines.get(0).value(client.levelRenderer.lastViewDistance); // Graphics - lines.get(1).value(StringUtils.capitalize(client.options.graphicsMode().get().toString())); + lines.get(1).value(StringUtils.capitalize(client.options.graphicsPreset().get().toString())); // Clouds lines.get(2).value(cloudString); // Biome Blend Radius lines.get(3).value(client.options.biomeBlendRadius().get()); // Shader - final ResourceLocation shaderEffect = client.gameRenderer.currentPostEffect(); + final Identifier shaderEffect = client.gameRenderer.currentPostEffect(); if (shaderEffect != null) { lines.get(4).value(String.valueOf(shaderEffect)); } else { diff --git a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java index f01486da..dbc81a66 100644 --- a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java +++ b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java @@ -173,7 +173,7 @@ public void update(final Minecraft client) { } // Dimension - lines.getFirst().value(client.level.dimension().location()); + lines.getFirst().value(client.level.dimension().identifier()); final Direction facing = cameraEntity.getDirection(); diff --git a/common/src/main/java/me/cominixo/betterf3/utils/Utils.java b/common/src/main/java/me/cominixo/betterf3/utils/Utils.java index 17283f32..58dca5e6 100644 --- a/common/src/main/java/me/cominixo/betterf3/utils/Utils.java +++ b/common/src/main/java/me/cominixo/betterf3/utils/Utils.java @@ -3,7 +3,7 @@ import java.util.Arrays; import java.util.Map; import net.minecraft.ChatFormatting; -import net.minecraft.Util; +import net.minecraft.util.Util; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; diff --git a/common/src/main/resources/betterf3.accesswidener b/common/src/main/resources/betterf3.accesswidener index 25cdd42e..1025e42b 100644 --- a/common/src/main/resources/betterf3.accesswidener +++ b/common/src/main/resources/betterf3.accesswidener @@ -6,4 +6,4 @@ accessible field net/minecraft/client/renderer/LevelRenderer viewArea Lnet/minec accessible field net/minecraft/client/gui/components/debug/DebugEntryHeightmap HEIGHTMAP_NAMES Ljava/util/Map; accessible field net/minecraft/client/gui/components/DebugScreenOverlay renderFpsCharts Z accessible field net/minecraft/client/gui/components/DebugScreenOverlay renderProfilerChart Z -accessible method net/minecraft/client/gui/components/debug/DebugScreenEntries register (Ljava/lang/String;Lnet/minecraft/client/gui/components/debug/DebugScreenEntry;)Lnet/minecraft/resources/ResourceLocation; \ No newline at end of file +accessible method net/minecraft/client/gui/components/debug/DebugScreenEntries register (Ljava/lang/String;Lnet/minecraft/client/gui/components/debug/DebugScreenEntry;)Lnet/minecraft/resources/Identifier; \ No newline at end of file diff --git a/docs/changelogs/17.0.0.md b/docs/changelogs/17.0.0.md new file mode 100644 index 00000000..12981e41 --- /dev/null +++ b/docs/changelogs/17.0.0.md @@ -0,0 +1,4 @@ +! last_version=16.0.3 +! +### Added +- 1.21.11 support diff --git a/gradle.properties b/gradle.properties index 321b255d..5cdd6516 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,23 +4,23 @@ org.gradle.daemon=false archives_base_name=BetterF3 -minecraft_version=1.21.10 -supported_minecraft_versions=1.21.9/1.21.10 -supported_minecraft_versions_list=1.21.9,1.21.10 +minecraft_version=1.21.11 +supported_minecraft_versions=1.21.10/1.21.11 +supported_minecraft_versions_list=1.21.10,1.21.11 -mod_version=16.0.3 +mod_version=17.0.0 releaseType=release maven_group=me.treyruffy.betterf3 platforms=fabric,neoforge -fabric_loader_version=0.17.3 -fabric_api_version=0.136.0+1.21.10 +fabric_loader_version=0.18.4 +fabric_api_version=0.140.2+1.21.11 -cloth_version=20.0.148 -modmenu_version=16.0.0-rc.1 +cloth_version=21.11.153 +modmenu_version=17.0.0-beta.1 -neoforge_version=21.10.38-beta +neoforge_version=21.11.13-beta modrinth_id=8shC1gFX curseforge_id=401648 From ad91612f54dfec787e560cfe08912958c531f0b4 Mon Sep 17 00:00:00 2001 From: Michael Viamari Date: Sat, 27 Dec 2025 12:08:43 -0800 Subject: [PATCH 2/4] feat: complete 1.21.11 support - complex API changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix all remaining Minecraft 1.21.11 API changes to complete mod compatibility. DebugScreenEntryList method renames (9 files): - toggleF3Visible() → toggleDebugOverlay() - isF3Visible() → isOverlayVisible() - setF3Visible() → setOverlayVisible() Files updated: - common/ModConfigScreen.java - common/DebugMixin.java - common/KeyboardMixin.java - common/DebugOptionMixin.java - common/ScoreboardMixin.java - fabric/FabricDebugMixin.java - neoforge/NeoForgeDebugMixin.java Environment Attributes system (LocationModule.java): - Replaced Level.getMoonBrightness() with new Environment Attributes API - Added imports: EnvironmentAttributes, MoonPhase, DimensionType - Moon brightness now calculated via MoonPhase and MOON_BRIGHTNESS_PER_PHASE array Checkstyle compliance: - Fixed import ordering in DebugMixin.java, Utils.java, LocationModule.java - Made moonPhase variable final Build status: ✅ SUCCESS (all modules compile and pass checkstyle) --- .../betterf3/config/gui/ModConfigScreen.java | 2 +- .../me/cominixo/betterf3/mixin/DebugMixin.java | 16 ++++++++-------- .../cominixo/betterf3/mixin/KeyboardMixin.java | 8 ++++---- .../betterf3/mixin/autof3/DebugOptionMixin.java | 6 +++--- .../mixin/scoreboard/ScoreboardMixin.java | 2 +- .../betterf3/modules/LocationModule.java | 6 +++++- .../java/me/cominixo/betterf3/utils/Utils.java | 2 +- .../betterf3/mixin/FabricDebugMixin.java | 2 +- .../betterf3/mixin/NeoForgeDebugMixin.java | 2 +- 9 files changed, 25 insertions(+), 21 deletions(-) diff --git a/common/src/main/java/me/cominixo/betterf3/config/gui/ModConfigScreen.java b/common/src/main/java/me/cominixo/betterf3/config/gui/ModConfigScreen.java index 7058926b..c27aa6bb 100644 --- a/common/src/main/java/me/cominixo/betterf3/config/gui/ModConfigScreen.java +++ b/common/src/main/java/me/cominixo/betterf3/config/gui/ModConfigScreen.java @@ -49,7 +49,7 @@ public void init() { this.addRenderableWidget(doneButton); if (minecraft != null && minecraft.level != null && !minecraft.getDebugOverlay().showDebugScreen()) { - minecraft.debugEntries.toggleF3Visible(); + minecraft.debugEntries.toggleDebugOverlay(); } } diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java index 5e0e5d92..2103af0a 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java @@ -3,7 +3,6 @@ import java.util.Collection; import java.util.List; import me.cominixo.betterf3.config.GeneralOptions; -import net.minecraft.util.Util; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.gui.components.DebugScreenOverlay; @@ -11,6 +10,7 @@ import net.minecraft.client.gui.components.debug.DebugScreenEntries; import net.minecraft.client.gui.components.debug.DebugScreenEntryList; import net.minecraft.resources.Identifier; +import net.minecraft.util.Util; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -51,7 +51,7 @@ public abstract class DebugMixin { */ @Inject(method = "render", at = @At(value = "HEAD")) public void renderBefore(final GuiGraphics context, final CallbackInfo ci) { - if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isF3Visible()) { + if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isOverlayVisible()) { return; } context.pose().pushMatrix(); @@ -59,18 +59,18 @@ public void renderBefore(final GuiGraphics context, final CallbackInfo ci) { @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;getCurrentlyEnabled()Ljava/util/Collection;")) private Collection currentlyEnabled(final DebugScreenEntryList instance) { - if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isF3Visible()) { + if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isOverlayVisible()) { return BETTERF3_LIST; } return instance.getCurrentlyEnabled(); } - @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;isF3Visible()Z")) + @Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;isOverlayVisible()Z")) private boolean isF3Visible(final DebugScreenEntryList instance) { - if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isF3Visible()) { + if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isOverlayVisible()) { return false; } - return instance.isF3Visible(); + return instance.isOverlayVisible(); } /** @@ -81,7 +81,7 @@ private boolean isF3Visible(final DebugScreenEntryList instance) { */ @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;getCurrentlyEnabled()Ljava/util/Collection;", shift = At.Shift.AFTER)) public void renderFontScaleBefore(final GuiGraphics context, final CallbackInfo ci) { - if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isF3Visible()) { + if (!GeneralOptions.disableMod && this.minecraft.debugEntries.isOverlayVisible()) { context.pose().scale((float) GeneralOptions.fontScale, (float) GeneralOptions.fontScale); } } @@ -122,7 +122,7 @@ public synchronized void renderAnimation(final GuiGraphics context, final Callba xPos = (int) (xPos * GeneralOptions.animationSpeed); if (xPos >= 300) { - this.minecraft.debugEntries.setF3Visible(false); + this.minecraft.debugEntries.setOverlayVisible(false); closingAnimation = false; } diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java index e0252fc2..575f300d 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java @@ -71,22 +71,22 @@ public void processF3Messages(final KeyEvent keyEvent, final CallbackInfoReturna } } - @Inject(method = "keyPress", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;toggleF3Visible()V", opcode = Opcodes.PUTFIELD, ordinal = 0), cancellable = true) + @Inject(method = "keyPress", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/debug/DebugScreenEntryList;toggleDebugOverlay()V", opcode = Opcodes.PUTFIELD, ordinal = 0), cancellable = true) private synchronized void animationAndAlwaysEnableProfiler(final long l, final int i, final KeyEvent keyEvent, final CallbackInfo ci) { if (GeneralOptions.disableMod) { return; } if (GeneralOptions.enableAnimations) { - if (this.minecraft.debugEntries.isF3Visible()) { + if (this.minecraft.debugEntries.isOverlayVisible()) { closingAnimation = true; ci.cancel(); } else { closingAnimation = false; xPos = START_X_POS; - this.minecraft.debugEntries.setF3Visible(true); + this.minecraft.debugEntries.setOverlayVisible(true); } } else { - this.minecraft.debugEntries.toggleF3Visible(); + this.minecraft.debugEntries.toggleDebugOverlay(); } if (GeneralOptions.alwaysEnableProfiler) { this.minecraft.getDebugOverlay().renderProfilerChart = this.minecraft.getDebugOverlay().showDebugScreen(); diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/autof3/DebugOptionMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/autof3/DebugOptionMixin.java index 52f22ad1..d79ecbd6 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/autof3/DebugOptionMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/autof3/DebugOptionMixin.java @@ -38,7 +38,7 @@ public abstract class DebugOptionMixin { @Inject(method = "", at = @At("RETURN")) public void addAutomaticDebugOption(final Minecraft minecraft, final CallbackInfo ci) { if (!GeneralOptions.disableMod && GeneralOptions.autoF3) { - this.minecraft.debugEntries.setF3Visible(true); + this.minecraft.debugEntries.setOverlayVisible(true); if (GeneralOptions.alwaysEnableProfiler) this.renderProfilerChart = true; if (GeneralOptions.alwaysEnableTPS) this.renderFpsCharts = true; if (GeneralOptions.alwaysEnablePing) this.toggleNetworkCharts(); @@ -48,7 +48,7 @@ public void addAutomaticDebugOption(final Minecraft minecraft, final CallbackInf @Inject(method = "reset", at = @At("RETURN")) private void automaticF3(final CallbackInfo ci) { if (!GeneralOptions.disableMod && GeneralOptions.autoF3) { - this.minecraft.debugEntries.setF3Visible(true); + this.minecraft.debugEntries.setOverlayVisible(true); if (GeneralOptions.alwaysEnableProfiler) this.renderProfilerChart = true; if (GeneralOptions.alwaysEnableTPS) this.renderFpsCharts = true; if (GeneralOptions.alwaysEnablePing) this.toggleNetworkCharts(); @@ -57,7 +57,7 @@ private void automaticF3(final CallbackInfo ci) { @Inject(method = "showDebugScreen", at = @At("HEAD"), cancellable = true) private void shouldRenderDebug(final CallbackInfoReturnable cir) { - if (!GeneralOptions.disableMod && GeneralOptions.autoF3 && this.minecraft.debugEntries.isF3Visible() && !this.minecraft.options.hideGui) { + if (!GeneralOptions.disableMod && GeneralOptions.autoF3 && this.minecraft.debugEntries.isOverlayVisible() && !this.minecraft.options.hideGui) { cir.setReturnValue(this.minecraft.level != null); } } diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/scoreboard/ScoreboardMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/scoreboard/ScoreboardMixin.java index f40e0c32..09e2466d 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/scoreboard/ScoreboardMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/scoreboard/ScoreboardMixin.java @@ -25,7 +25,7 @@ public class ScoreboardMixin { */ @Inject(at = @At("HEAD"), method = "displayScoreboardSidebar", cancellable = true) public void init(final CallbackInfo info) { - if (!GeneralOptions.disableMod && GeneralOptions.hideSidebar && this.minecraft.debugEntries.isF3Visible()) { + if (!GeneralOptions.disableMod && GeneralOptions.hideSidebar && this.minecraft.debugEntries.isOverlayVisible()) { info.cancel(); } } diff --git a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java index dbc81a66..03c1bcff 100644 --- a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java +++ b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java @@ -17,13 +17,16 @@ import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.world.DifficultyInstance; +import net.minecraft.world.attribute.EnvironmentAttributes; import net.minecraft.world.entity.Entity; import net.minecraft.world.level.ChunkPos; import net.minecraft.world.level.Level; import net.minecraft.world.level.LightLayer; +import net.minecraft.world.level.MoonPhase; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.level.chunk.status.ChunkStatus; +import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.WorldgenRandom; import net.minecraft.world.level.lighting.LevelLightEngine; @@ -156,7 +159,8 @@ public void update(final Minecraft client) { final float moonSize; final long inhabitedTime; - moonSize = serverWorld.getMoonBrightness(); + final MoonPhase moonPhase = serverWorld.environmentAttributes().getDimensionValue(EnvironmentAttributes.MOON_PHASE); + moonSize = DimensionType.MOON_BRIGHTNESS_PER_PHASE[moonPhase.index()]; inhabitedTime = Objects.requireNonNullElse(serverChunk, clientChunk).getInhabitedTime(); diff --git a/common/src/main/java/me/cominixo/betterf3/utils/Utils.java b/common/src/main/java/me/cominixo/betterf3/utils/Utils.java index 58dca5e6..7d0c559f 100644 --- a/common/src/main/java/me/cominixo/betterf3/utils/Utils.java +++ b/common/src/main/java/me/cominixo/betterf3/utils/Utils.java @@ -3,12 +3,12 @@ import java.util.Arrays; import java.util.Map; import net.minecraft.ChatFormatting; -import net.minecraft.util.Util; import net.minecraft.client.resources.language.I18n; import net.minecraft.core.Direction; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextColor; +import net.minecraft.util.Util; import net.minecraft.world.level.block.state.properties.Property; import org.apache.commons.lang3.StringUtils; diff --git a/fabric/src/main/java/me/cominixo/betterf3/mixin/FabricDebugMixin.java b/fabric/src/main/java/me/cominixo/betterf3/mixin/FabricDebugMixin.java index a5bce0dd..06c77172 100644 --- a/fabric/src/main/java/me/cominixo/betterf3/mixin/FabricDebugMixin.java +++ b/fabric/src/main/java/me/cominixo/betterf3/mixin/FabricDebugMixin.java @@ -40,7 +40,7 @@ public abstract class FabricDebugMixin { @Inject(method = "renderLines", at = @At("HEAD"), cancellable = true) public void drawText(final GuiGraphics guiGraphics, final List list, final boolean bl, final CallbackInfo ci) { - if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isF3Visible()) { + if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isOverlayVisible()) { return; } diff --git a/neoforge/src/main/java/me/treyruffy/betterf3/mixin/NeoForgeDebugMixin.java b/neoforge/src/main/java/me/treyruffy/betterf3/mixin/NeoForgeDebugMixin.java index f7fc04be..921d21b6 100644 --- a/neoforge/src/main/java/me/treyruffy/betterf3/mixin/NeoForgeDebugMixin.java +++ b/neoforge/src/main/java/me/treyruffy/betterf3/mixin/NeoForgeDebugMixin.java @@ -40,7 +40,7 @@ public abstract class NeoForgeDebugMixin { @Inject(method = "renderLines", at = @At(value = "HEAD"), cancellable = true, order = 2000) public void drawText(final GuiGraphics guiGraphics, final List list, final boolean bl, final CallbackInfo ci) { - if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isF3Visible()) { + if (GeneralOptions.disableMod || !this.minecraft.debugEntries.isOverlayVisible()) { return; } From 073d20dd4adc0959079f9de56f394bbb89c7234c Mon Sep 17 00:00:00 2001 From: Trey Date: Mon, 5 Jan 2026 22:07:43 -0700 Subject: [PATCH 3/4] feat: Add additional fixes for 1.21.11 --- README.md | 6 +++--- .../java/me/cominixo/betterf3/modules/LocationModule.java | 2 +- fabric/build.gradle | 6 +++++- fabric/src/main/resources/fabric.mod.json | 7 ++++--- forge/src/main/resources/META-INF/mods.toml | 2 +- neoforge/src/main/resources/META-INF/neoforge.mods.toml | 4 ++-- 6 files changed, 16 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index dbebec5e..49c2984f 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@

BetterF3


-[![Version](https://img.shields.io/badge/dynamic/json?color=ed37aa&label=Version&query=%24%5B%27promos%27%5D%5B%271.21.3-latest%27%5D&url=https%3A%2F%2Fapi.modrinth.com%2Fupdates%2Fbetterf3%2Fforge%5Fupdates.json?cacheSeconds=2592000)](https://modrinth.com/mod/betterf3) -[![Minecraft Versions](https://img.shields.io/badge/Minecraft-1.16.2--1.21.3+-9450cc)](http://files.minecraftforge.net/) -[![License: MIT](https://img.shields.io/badge/License-MIT-2230f2.svg)](https://github.com/TreyRuffy/BetterF3/blob/architectury/1.21.3/LICENSE.txt) +[![Version](https://img.shields.io/badge/dynamic/json?color=ed37aa&label=Version&query=%24%5B%27promos%27%5D%5B%271.21.11-latest%27%5D&url=https%3A%2F%2Fapi.modrinth.com%2Fupdates%2Fbetterf3%2Fforge%5Fupdates.json?cacheSeconds=2592000)](https://modrinth.com/mod/betterf3) +[![Minecraft Versions](https://img.shields.io/badge/Minecraft-1.16.2--1.21.11+-9450cc)](http://files.minecraftforge.net/) +[![License: MIT](https://img.shields.io/badge/License-MIT-2230f2.svg)](https://github.com/TreyRuffy/BetterF3/blob/architectury/1.21.11/LICENSE.txt)
[![Twitter: TreyRuffy](https://img.shields.io/twitter/follow/TreyRuffy.svg?style=social)](https://twitter.com/TreyRuffy) diff --git a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java index 03c1bcff..69e000dd 100644 --- a/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java +++ b/common/src/main/java/me/cominixo/betterf3/modules/LocationModule.java @@ -155,7 +155,7 @@ public void update(final Minecraft client) { } // Local Difficulty - if (blockPos.getY() >= 0 && blockPos.getY() < 256) { + if (serverWorld.isInsideBuildHeight(blockPos.getY())) { final float moonSize; final long inhabitedTime; diff --git a/fabric/build.gradle b/fabric/build.gradle index cd0ed21b..08a7301f 100644 --- a/fabric/build.gradle +++ b/fabric/build.gradle @@ -45,7 +45,7 @@ dependencies { } // Tells Gradle to use fabric resource loader in order to use language files - include(modImplementation(fabricApi.module("fabric-resource-loader-v0", project.fabric_api_version))) + modImplementation(fabricApi.module("fabric-resource-loader-v1", project.fabric_api_version)) // Tells Gradle to use night config implementation 'com.electronwill.night-config:json:3.6.6' @@ -115,6 +115,10 @@ unifiedPublishing { curseforge.set "cloth-config" modrinth.set "cloth-config" } + depends { + curseforge.set "fabric-api" + modrinth.set "fabric-api" + } optional { curseforge.set "modmenu" modrinth.set "modmenu" diff --git a/fabric/src/main/resources/fabric.mod.json b/fabric/src/main/resources/fabric.mod.json index db380cc6..be3c5f44 100644 --- a/fabric/src/main/resources/fabric.mod.json +++ b/fabric/src/main/resources/fabric.mod.json @@ -25,11 +25,12 @@ ] }, "depends": { - "fabricloader": ">=0.17.0", - "minecraft": ">=1.21.9" + "fabricloader": ">=0.18.0", + "minecraft": ">=1.21.11", + "fabric": "*" }, "recommends": { - "modmenu": ">=15.0.0" + "modmenu": ">=17.0.0" }, "accessWidener" : "betterf3.accesswidener", "mixins": ["betterf3.mixins.json", "betterf3.fabric.mixins.json"] diff --git a/forge/src/main/resources/META-INF/mods.toml b/forge/src/main/resources/META-INF/mods.toml index 121a9202..a0f5cdaa 100644 --- a/forge/src/main/resources/META-INF/mods.toml +++ b/forge/src/main/resources/META-INF/mods.toml @@ -31,7 +31,7 @@ side = "CLIENT" [[dependencies.betterf3]] modId = "minecraft" mandatory = true -versionRange = "[1.21.4,)" +versionRange = "[1.21.11,)" ordering = "NONE" side = "BOTH" diff --git a/neoforge/src/main/resources/META-INF/neoforge.mods.toml b/neoforge/src/main/resources/META-INF/neoforge.mods.toml index f4beaccd..aac52319 100644 --- a/neoforge/src/main/resources/META-INF/neoforge.mods.toml +++ b/neoforge/src/main/resources/META-INF/neoforge.mods.toml @@ -33,11 +33,11 @@ config = "betterf3.mixins.json" [[dependencies.betterf3]] modId = "minecraft" mandatory = true -versionRange = "[1.21.9,)" +versionRange = "[1.21.11,)" ordering = "NONE" side = "BOTH" [[dependencies.betterf3]] modId = "cloth_config" -versionRange = "[20.0.0,)" +versionRange = "[21.11.0,)" mandatory = true From 841cec2affce0054aee51a6f60c72ee577c7b259 Mon Sep 17 00:00:00 2001 From: Trey Date: Thu, 8 Jan 2026 23:12:20 -0700 Subject: [PATCH 4/4] fix: Update 1.21.11 debug modifier logic --- .../cominixo/betterf3/mixin/DebugMixin.java | 3 +- .../mixin/DebugScreenEntryListMixin.java | 50 +++++++++++++++++++ .../betterf3/mixin/KeyboardMixin.java | 37 -------------- .../src/main/resources/betterf3.accesswidener | 3 +- .../src/main/resources/betterf3.mixins.json | 1 + 5 files changed, 55 insertions(+), 39 deletions(-) create mode 100644 common/src/main/java/me/cominixo/betterf3/mixin/DebugScreenEntryListMixin.java diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java index 2103af0a..b64ab5ae 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/DebugMixin.java @@ -122,8 +122,9 @@ public synchronized void renderAnimation(final GuiGraphics context, final Callba xPos = (int) (xPos * GeneralOptions.animationSpeed); if (xPos >= 300) { - this.minecraft.debugEntries.setOverlayVisible(false); closingAnimation = false; + this.minecraft.debugEntries.isOverlayVisible = false; + this.minecraft.debugEntries.rebuildCurrentList(); } } diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/DebugScreenEntryListMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/DebugScreenEntryListMixin.java new file mode 100644 index 00000000..56d7e9ae --- /dev/null +++ b/common/src/main/java/me/cominixo/betterf3/mixin/DebugScreenEntryListMixin.java @@ -0,0 +1,50 @@ +package me.cominixo.betterf3.mixin; + +import me.cominixo.betterf3.config.GeneralOptions; +import net.minecraft.client.gui.components.debug.DebugScreenEntryList; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import static me.cominixo.betterf3.utils.Utils.START_X_POS; +import static me.cominixo.betterf3.utils.Utils.closingAnimation; +import static me.cominixo.betterf3.utils.Utils.xPos; + +/** + * Mixin for DebugScreenEntryList. + */ +@Mixin(DebugScreenEntryList.class) +public abstract class DebugScreenEntryListMixin { + + @Shadow + public boolean isOverlayVisible; + + /** + * Rebuilds the current list. + */ + @Shadow + public abstract void rebuildCurrentList(); + + @Inject(method = "setOverlayVisible", at = @At("HEAD"), cancellable = true) + private synchronized void onSetOverlayVisible(final boolean visible, final CallbackInfo ci) { + if (GeneralOptions.disableMod) { + return; + } + if (GeneralOptions.enableAnimations) { + if (this.isOverlayVisible && !visible && !closingAnimation) { + closingAnimation = true; + } else if (!this.isOverlayVisible && visible) { + closingAnimation = false; + xPos = START_X_POS; + this.isOverlayVisible = true; + this.rebuildCurrentList(); + } + } else { + this.isOverlayVisible = visible; + this.rebuildCurrentList(); + } + ci.cancel(); + } +} diff --git a/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java b/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java index 3b886d31..426f5112 100644 --- a/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java +++ b/common/src/main/java/me/cominixo/betterf3/mixin/KeyboardMixin.java @@ -1,25 +1,18 @@ package me.cominixo.betterf3.mixin; -import me.cominixo.betterf3.config.GeneralOptions; import me.cominixo.betterf3.config.gui.ModConfigScreen; import net.minecraft.client.KeyboardHandler; import net.minecraft.client.Minecraft; import net.minecraft.client.input.KeyEvent; import net.minecraft.network.chat.Component; import net.minecraft.util.Mth; -import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import static me.cominixo.betterf3.utils.Utils.START_X_POS; -import static me.cominixo.betterf3.utils.Utils.closingAnimation; -import static me.cominixo.betterf3.utils.Utils.xPos; - /** * Modifies the debug keys (f3 / f3 + m). */ @@ -55,34 +48,4 @@ public void processF3(final KeyEvent keyEvent, final CallbackInfoReturnable