From 46a7b761b567ad37db591075541f44e11c7b0f20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Wed, 24 Jun 2026 06:13:13 +0300 Subject: [PATCH 01/22] Initial port to 26.2 compiles but not tested --- README.md | 4 ++-- gradle.properties | 2 +- gradle/libs.versions.toml | 4 ++-- src/main/java/gg/darkutils/DarkUtils.java | 4 ++-- .../feat/dungeons/AlignmentTaskSolver.java | 23 +++++++++++-------- .../darkutils/feat/dungeons/DungeonTimer.java | 5 +++- .../feat/dungeons/ReplaceDiorite.java | 21 +---------------- .../feat/farming/EnforceZorrosCape.java | 2 +- .../feat/foraging/TreeGiftConfirmation.java | 6 ++--- .../feat/mining/WillOWispDisplay.java | 4 ++-- .../gg/darkutils/feat/qol/AutoFishingRod.java | 2 +- .../feat/qol/LaggyServerDetector.java | 4 ++-- .../gg/darkutils/feat/qol/VanillaMode.java | 2 +- .../mixin/misc/ClientPacketListenerMixin.java | 2 +- .../darkutils/mixin/misc/GlBackendMixin.java | 2 +- .../visuals/FlameFeatureRendererMixin.java | 11 ++++----- .../visuals/ScreenEffectRendererMixin.java | 6 ++--- src/main/java/gg/darkutils/utils/Helpers.java | 10 ++++---- .../gg/darkutils/utils/LocationUtils.java | 2 +- .../java/gg/darkutils/utils/TabListUtil.java | 2 +- .../gg/darkutils/utils/chat/ChatUtils.java | 2 +- .../gg/darkutils/utils/chat/SimpleColor.java | 3 ++- src/main/resources/fabric.mod.json | 6 ++--- 23 files changed, 58 insertions(+), 71 deletions(-) diff --git a/README.md b/README.md index f54bcee..070b13b 100644 --- a/README.md +++ b/README.md @@ -18,10 +18,10 @@ compatibility is often the case so latest versions are recommended. Required Dependencies: -- Minecraft 26.1.2 or later. +- Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. - Fabric API 0.153.0 or later. -- Cloth Config API 26.1.154 or later. +- Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. Optional Dependencies: diff --git a/gradle.properties b/gradle.properties index c607c8f..c8e6cda 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,6 +17,6 @@ org.gradle.configureondemand=true fabric.loom.dropNonIntermediateRootMethods=true # Mod Properties -mod_version=1.4.0+26.1.2 +mod_version=1.5.0+26.2 maven_group=gg.darkutils archives_base_name=darkutils diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index bf5a2ea..3b3ef3b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] loom = "1.17.12" java = "25" -minecraft = "26.1.2" +minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.153.0+26.1.2" +fabric-api = "0.153.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" diff --git a/src/main/java/gg/darkutils/DarkUtils.java b/src/main/java/gg/darkutils/DarkUtils.java index 828ae81..038bc1c 100644 --- a/src/main/java/gg/darkutils/DarkUtils.java +++ b/src/main/java/gg/darkutils/DarkUtils.java @@ -254,7 +254,7 @@ public static final void debug(@NotNull final Supplier message) { public static final void toast(@NotNull final Component title, @NotNull final Component message) { final var mc = Minecraft.getInstance(); - mc.getToastManager().addToast(SystemToast.multiline(mc, SystemToast.SystemToastId.PERIODIC_NOTIFICATION, title, message)); + mc.gui.toastManager().addToast(new SystemToast(SystemToast.SystemToastId.PERIODIC_NOTIFICATION, title, message)); } public static final void user(@NotNull final String message, @NotNull final DarkUtils.UserMessageLevel level) { @@ -561,7 +561,7 @@ private static final void registerCommandWithAliases(@NotNull final String comma private static final void openConfig() { final var mc = Minecraft.getInstance(); - mc.schedule(() -> mc.setScreen(DarkUtilsConfigScreen.create(null))); + mc.schedule(() -> mc.gui.setScreen(DarkUtilsConfigScreen.create(null))); } public static final @NotNull String getVersion() { diff --git a/src/main/java/gg/darkutils/feat/dungeons/AlignmentTaskSolver.java b/src/main/java/gg/darkutils/feat/dungeons/AlignmentTaskSolver.java index 3ecf53a..4cc91a9 100644 --- a/src/main/java/gg/darkutils/feat/dungeons/AlignmentTaskSolver.java +++ b/src/main/java/gg/darkutils/feat/dungeons/AlignmentTaskSolver.java @@ -22,9 +22,11 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Style; import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket; -import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.decoration.ItemFrame; +import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; +import net.minecraft.world.item.DyeColor; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.phys.AABB; import org.jetbrains.annotations.NotNull; @@ -47,7 +49,10 @@ public final class AlignmentTaskSolver { private static final @NotNull Object2IntOpenHashMap clicks = new Object2IntOpenHashMap<>(); private static final @NotNull Object2IntOpenHashMap pendingClicks = new Object2IntOpenHashMap<>(); - private static final @NotNull List<@NotNull Direction> directions = List.copyOf(AlignmentTaskSolver.getDirections()); + private static final @NotNull List<@NotNull Direction> directions = AlignmentTaskSolver.getDirections(); + + private static final @NotNull Item RED_WOOL = Items.WOOL.pick(DyeColor.RED); + private static final @NotNull Item LIME_WOOL = Items.WOOL.pick(DyeColor.LIME); static { // Sort the box @@ -201,13 +206,13 @@ private static final ObjectArrayList collectRelevantItemFrames() { return frames; } - for (final var frame : world.getEntities(EntityType.ITEM_FRAME, AlignmentTaskSolver.boxAABB, ignored -> true)) { + for (final var frame : world.getEntities(EntityTypes.ITEM_FRAME, AlignmentTaskSolver.boxAABB, ignored -> true)) { if (!AlignmentTaskSolver.boxSet.contains(frame.blockPosition())) { continue; } final var held = frame.getItem(); - if (held.is(Items.ARROW) || held.is(Items.RED_WOOL) || held.is(Items.LIME_WOOL)) { + if (held.is(Items.ARROW) || held.is(AlignmentTaskSolver.RED_WOOL) || held.is(AlignmentTaskSolver.LIME_WOOL)) { frames.add(frame); } } @@ -257,10 +262,10 @@ private static final void computeDirections() { if (held.is(Items.ARROW)) { return AlignmentTaskSolver.SpaceType.PATH; } - if (held.is(Items.RED_WOOL)) { + if (held.is(AlignmentTaskSolver.RED_WOOL)) { return AlignmentTaskSolver.SpaceType.END; } - return held.is(Items.LIME_WOOL) ? AlignmentTaskSolver.SpaceType.STARTER : AlignmentTaskSolver.SpaceType.EMPTY; + return held.is(AlignmentTaskSolver.LIME_WOOL) ? AlignmentTaskSolver.SpaceType.STARTER : AlignmentTaskSolver.SpaceType.EMPTY; } return AlignmentTaskSolver.SpaceType.EMPTY; } @@ -277,7 +282,7 @@ private static final void computeTurns() { continue; } ItemFrame frame = null; - for (final var frameEntity : world.getEntities(EntityType.ITEM_FRAME, frameBox, ignored -> true)) { + for (final var frameEntity : world.getEntities(EntityTypes.ITEM_FRAME, frameBox, ignored -> true)) { if (framePos.equals(frameEntity.blockPosition())) { frame = frameEntity; break; @@ -335,7 +340,7 @@ private static final void showNametagAtFrame(final @NotNull BlockPos pos, final } ItemFrame entity = null; - for (final var frame : world.getEntities(EntityType.ITEM_FRAME, box, ignored -> true)) { + for (final var frame : world.getEntities(EntityTypes.ITEM_FRAME, box, ignored -> true)) { if (pos.equals(frame.blockPosition())) { entity = frame; break; @@ -527,7 +532,7 @@ private static final int[][] getLayout() { dirs.add(direction); } } - return dirs.reversed(); + return List.copyOf(dirs.reversed()); } private static final @NotNull List solve(final int[][] grid, final @NotNull AlignmentTaskSolver.Point start, final @NotNull AlignmentTaskSolver.Point end) { diff --git a/src/main/java/gg/darkutils/feat/dungeons/DungeonTimer.java b/src/main/java/gg/darkutils/feat/dungeons/DungeonTimer.java index a29aebc..4f22938 100644 --- a/src/main/java/gg/darkutils/feat/dungeons/DungeonTimer.java +++ b/src/main/java/gg/darkutils/feat/dungeons/DungeonTimer.java @@ -22,6 +22,7 @@ import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.Item; import net.minecraft.world.item.Items; +import net.minecraft.world.item.DyeColor; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -124,6 +125,8 @@ public final class DungeonTimer { Map.entry("[BOSS] Wither King: Incredible. You did what I couldn't do myself.", DungeonTimer.PHASE_5_FINISH), Map.entry("[BOSS] Wither King: Thank you for coming all the way here.", DungeonTimer.PHASE_5_FINISH) ); + @NotNull + private static final Item BROWN_TERRACOTTA = Items.DYED_TERRACOTTA.pick(DyeColor.BROWN); private DungeonTimer() { super(); @@ -467,7 +470,7 @@ private static final void updateLines() { // Floor 6 if (6 == floor.floor) { - DungeonTimer.line(DungeonTimer.DungeonPhase.BOSS_ENTRY, DungeonTimer.DungeonPhase.TERRAS_CLEAR, "Terracottas", ChatFormatting.GOLD, Items.BROWN_TERRACOTTA); + DungeonTimer.line(DungeonTimer.DungeonPhase.BOSS_ENTRY, DungeonTimer.DungeonPhase.TERRAS_CLEAR, "Terracottas", ChatFormatting.GOLD, DungeonTimer.BROWN_TERRACOTTA); DungeonTimer.line(DungeonTimer.DungeonPhase.TERRAS_CLEAR, DungeonTimer.DungeonPhase.GIANTS_CLEAR, "Giants", ChatFormatting.AQUA, Items.DIAMOND_SWORD); } diff --git a/src/main/java/gg/darkutils/feat/dungeons/ReplaceDiorite.java b/src/main/java/gg/darkutils/feat/dungeons/ReplaceDiorite.java index 91436dc..4e43b62 100644 --- a/src/main/java/gg/darkutils/feat/dungeons/ReplaceDiorite.java +++ b/src/main/java/gg/darkutils/feat/dungeons/ReplaceDiorite.java @@ -44,26 +44,7 @@ private static final BlockState[] getGlassStates() { final var glassStates = new BlockState[16]; for (final var color : DyeColor.values()) { - final var state = (switch (color) { - case WHITE -> Blocks.WHITE_STAINED_GLASS; - case ORANGE -> Blocks.ORANGE_STAINED_GLASS; - case MAGENTA -> Blocks.MAGENTA_STAINED_GLASS; - case LIGHT_BLUE -> Blocks.LIGHT_BLUE_STAINED_GLASS; - case YELLOW -> Blocks.YELLOW_STAINED_GLASS; - case LIME -> Blocks.LIME_STAINED_GLASS; - case PINK -> Blocks.PINK_STAINED_GLASS; - case GRAY -> Blocks.GRAY_STAINED_GLASS; - case LIGHT_GRAY -> Blocks.LIGHT_GRAY_STAINED_GLASS; - case CYAN -> Blocks.CYAN_STAINED_GLASS; - case PURPLE -> Blocks.PURPLE_STAINED_GLASS; - case BLUE -> Blocks.BLUE_STAINED_GLASS; - case BROWN -> Blocks.BROWN_STAINED_GLASS; - case GREEN -> Blocks.GREEN_STAINED_GLASS; - case RED -> Blocks.RED_STAINED_GLASS; - case BLACK -> Blocks.BLACK_STAINED_GLASS; - }).defaultBlockState(); - - glassStates[color.ordinal()] = state; + glassStates[color.ordinal()] = Blocks.STAINED_GLASS.pick(color).defaultBlockState(); } return glassStates; diff --git a/src/main/java/gg/darkutils/feat/farming/EnforceZorrosCape.java b/src/main/java/gg/darkutils/feat/farming/EnforceZorrosCape.java index ef15bde..ab1f105 100644 --- a/src/main/java/gg/darkutils/feat/farming/EnforceZorrosCape.java +++ b/src/main/java/gg/darkutils/feat/farming/EnforceZorrosCape.java @@ -41,7 +41,7 @@ private static final void onTick() { // No config check, still need to track Zorro's cape equip status in case user enables/disables the feature to not desync the state from the real state. final AbstractContainerMenu screenHandler; - if (!(Minecraft.getInstance().screen instanceof final ContainerScreen container) || MenuType.GENERIC_9x6 != (screenHandler = container.getMenu()).menuType || !"Your Equipment and Stats".equals(ChatUtils.removeControlCodes(container.getTitle().getString()))) { + if (!(Minecraft.getInstance().gui.screen() instanceof final ContainerScreen container) || MenuType.GENERIC_9x6 != (screenHandler = container.getMenu()).menuType || !"Your Equipment and Stats".equals(ChatUtils.removeControlCodes(container.getTitle().getString()))) { return; } diff --git a/src/main/java/gg/darkutils/feat/foraging/TreeGiftConfirmation.java b/src/main/java/gg/darkutils/feat/foraging/TreeGiftConfirmation.java index 517e170..11e714f 100644 --- a/src/main/java/gg/darkutils/feat/foraging/TreeGiftConfirmation.java +++ b/src/main/java/gg/darkutils/feat/foraging/TreeGiftConfirmation.java @@ -33,7 +33,7 @@ private static final void onTreeGift(@NotNull final ObtainTreeGiftEvent event) { client.player.playSound(SoundEvents.NOTE_BLOCK_PLING.value(), 1.0F, 1.0F); // Show title/subtitle - client.gui.setTitle(Component.nullToEmpty("§2Tree Gift!")); + client.gui.hud.setTitle(Component.nullToEmpty("§2Tree Gift!")); var subtitle = "§7You received the rewards!"; final var mobSpawned = event.treeMobSpawned(); @@ -45,8 +45,8 @@ private static final void onTreeGift(@NotNull final ObtainTreeGiftEvent event) { subtitle = "§7A §d" + prettyName + " §7has spawned!"; } - client.gui.setSubtitle(Component.nullToEmpty(subtitle)); - client.gui.setTimes(10, 70, 20); + client.gui.hud.setSubtitle(Component.nullToEmpty(subtitle)); + client.gui.hud.setTimes(10, 70, 20); } } } diff --git a/src/main/java/gg/darkutils/feat/mining/WillOWispDisplay.java b/src/main/java/gg/darkutils/feat/mining/WillOWispDisplay.java index da6944c..07635ee 100644 --- a/src/main/java/gg/darkutils/feat/mining/WillOWispDisplay.java +++ b/src/main/java/gg/darkutils/feat/mining/WillOWispDisplay.java @@ -11,7 +11,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.resources.Identifier; -import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EntityTypes; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.item.Items; import org.jetbrains.annotations.NotNull; @@ -60,7 +60,7 @@ private static final void update() { } } else { // 30 block range - for (final var stand : world.getEntities(EntityType.ARMOR_STAND, player.getBoundingBox().inflate(30.0D), ignored -> true)) { + for (final var stand : world.getEntities(EntityTypes.ARMOR_STAND, player.getBoundingBox().inflate(30.0D), ignored -> true)) { WillOWispDisplay.processPossibleWillOWispTag(stand); } } diff --git a/src/main/java/gg/darkutils/feat/qol/AutoFishingRod.java b/src/main/java/gg/darkutils/feat/qol/AutoFishingRod.java index 7004e2b..6527b52 100644 --- a/src/main/java/gg/darkutils/feat/qol/AutoFishingRod.java +++ b/src/main/java/gg/darkutils/feat/qol/AutoFishingRod.java @@ -200,7 +200,7 @@ private static final void useRod(@NotNull final Runnable continuation, final boo : min; TickUtils.queueTickTask(() -> { - if (!mc.player.isUsingItem() && !mc.options.keyAttack.isDown() && !mc.options.keyUse.isDown() && (DarkUtilsConfig.INSTANCE.autoFishingWorkThroughMenus || null == mc.screen)) { + if (!mc.player.isUsingItem() && !mc.options.keyAttack.isDown() && !mc.options.keyUse.isDown() && (DarkUtilsConfig.INSTANCE.autoFishingWorkThroughMenus || null == mc.gui.screen())) { mc.startUseItem(); continuation.run(); diff --git a/src/main/java/gg/darkutils/feat/qol/LaggyServerDetector.java b/src/main/java/gg/darkutils/feat/qol/LaggyServerDetector.java index e33c404..0bc0421 100644 --- a/src/main/java/gg/darkutils/feat/qol/LaggyServerDetector.java +++ b/src/main/java/gg/darkutils/feat/qol/LaggyServerDetector.java @@ -76,8 +76,8 @@ private static final void onTPSUpdate(final int tps) { final var tpsStatus = LaggyServerDetector.getTpsStatus(tpsAverageOver30Seconds); final var client = Minecraft.getInstance(); - client.gui.setTitle(Component.nullToEmpty("§d30s TPS AVG: " + tpsStatus.color() + tpsAverageOver30SecondsFormatted + tpsStatus.comment())); - client.gui.setTimes(10, 70, 20); + client.gui.hud.setTitle(Component.nullToEmpty("§d30s TPS AVG: " + tpsStatus.color() + tpsAverageOver30SecondsFormatted + tpsStatus.comment())); + client.gui.hud.setTimes(10, 70, 20); } } diff --git a/src/main/java/gg/darkutils/feat/qol/VanillaMode.java b/src/main/java/gg/darkutils/feat/qol/VanillaMode.java index 8b3351f..4dd96b8 100644 --- a/src/main/java/gg/darkutils/feat/qol/VanillaMode.java +++ b/src/main/java/gg/darkutils/feat/qol/VanillaMode.java @@ -91,7 +91,7 @@ private static final void onConfigScreenOpen(@NotNull final ConfigScreenOpenEven } private static final boolean isNoScreenOpen() { - return null == Minecraft.getInstance().screen; + return null == Minecraft.getInstance().gui.screen(); } private static final void onJoinSingleplayer() { diff --git a/src/main/java/gg/darkutils/mixin/misc/ClientPacketListenerMixin.java b/src/main/java/gg/darkutils/mixin/misc/ClientPacketListenerMixin.java index 86abc93..07218c4 100644 --- a/src/main/java/gg/darkutils/mixin/misc/ClientPacketListenerMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/ClientPacketListenerMixin.java @@ -64,7 +64,7 @@ private final void openCommandSendConfirmationWindow(@NotNull final String comma private final void darkutils$openConfirmCommandScreen$disableIfEnabled(@NotNull final ClientPacketListener handler, @NotNull final String command, @NotNull final String message, @NotNull final Screen afterActionScreen) { if (DarkUtilsConfig.INSTANCE.disableCommandConfirmation && message.contains("parse_errors")) { handler.send(new ServerboundChatCommandPacket(command)); - Minecraft.getInstance().setScreen(afterActionScreen); + Minecraft.getInstance().gui.setScreen(afterActionScreen); } else { this.openCommandSendConfirmationWindow(command, message, afterActionScreen); } diff --git a/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java b/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java index fb39cd6..49cced7 100644 --- a/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java @@ -28,7 +28,7 @@ private GlBackendMixin() { @ModifyArgs(method = "createDevice(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;)Lcom/mojang/blaze3d/systems/GpuDevice;", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/GlDevice;(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;)V")) private static final void darkutils$disableGlDebugIfEnabled(@NotNull final Args args) { if (DarkUtilsConfig.INSTANCE.disableGlDebug) { - args.set(2, new GpuDebugOptions(0, false, false)); + args.set(2, new GpuDebugOptions(0, false, false, false)); } } } diff --git a/src/main/java/gg/darkutils/mixin/visuals/FlameFeatureRendererMixin.java b/src/main/java/gg/darkutils/mixin/visuals/FlameFeatureRendererMixin.java index 07a60e3..d283bad 100644 --- a/src/main/java/gg/darkutils/mixin/visuals/FlameFeatureRendererMixin.java +++ b/src/main/java/gg/darkutils/mixin/visuals/FlameFeatureRendererMixin.java @@ -1,17 +1,14 @@ package gg.darkutils.mixin.visuals; -import com.mojang.blaze3d.vertex.PoseStack; import gg.darkutils.config.DarkUtilsConfig; -import net.minecraft.client.renderer.MultiBufferSource; -import net.minecraft.client.renderer.entity.state.EntityRenderState; +import net.minecraft.client.renderer.feature.FeatureFrameContext; import net.minecraft.client.renderer.feature.FlameFeatureRenderer; -import net.minecraft.client.resources.model.sprite.AtlasManager; import org.jetbrains.annotations.NotNull; -import org.joml.Quaternionf; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import java.util.List; @Mixin(FlameFeatureRenderer.class) final class FlameFeatureRendererMixin { @@ -21,8 +18,8 @@ private FlameFeatureRendererMixin() { throw new UnsupportedOperationException("mixin class"); } - @Inject(method = "renderFlame(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lnet/minecraft/client/renderer/MultiBufferSource;Lnet/minecraft/client/renderer/entity/state/EntityRenderState;Lorg/joml/Quaternionf;Lnet/minecraft/client/resources/model/sprite/AtlasManager;)V", at = @At("HEAD"), cancellable = true) - private final void darkutils$skipRenderFireOnEntitiesIfEnabled(@NotNull final PoseStack.Pose matricesEntry, @NotNull final MultiBufferSource vertexConsumers, @NotNull final EntityRenderState renderState, @NotNull final Quaternionf rotation, @NotNull final AtlasManager atlasManager, @NotNull final CallbackInfo ci) { + @Inject(method = "buildGroup", at = @At("HEAD"), cancellable = true) + private final void darkutils$skipRenderFireOnEntitiesIfEnabled(@NotNull final FeatureFrameContext context, @NotNull final List submits, @NotNull final CallbackInfo ci) { if (DarkUtilsConfig.INSTANCE.noBurningEntities) { ci.cancel(); } diff --git a/src/main/java/gg/darkutils/mixin/visuals/ScreenEffectRendererMixin.java b/src/main/java/gg/darkutils/mixin/visuals/ScreenEffectRendererMixin.java index 369c371..1a68c80 100644 --- a/src/main/java/gg/darkutils/mixin/visuals/ScreenEffectRendererMixin.java +++ b/src/main/java/gg/darkutils/mixin/visuals/ScreenEffectRendererMixin.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.vertex.PoseStack; import gg.darkutils.config.DarkUtilsConfig; -import net.minecraft.client.renderer.MultiBufferSource; +import net.minecraft.client.renderer.SubmitNodeCollector; import net.minecraft.client.renderer.ScreenEffectRenderer; import net.minecraft.client.renderer.texture.TextureAtlasSprite; import org.jetbrains.annotations.NotNull; @@ -19,8 +19,8 @@ private ScreenEffectRendererMixin() { throw new UnsupportedOperationException("mixin class"); } - @Inject(method = "renderFire", at = @At("HEAD"), cancellable = true) - private static final void darkutils$skipRenderingFireOverlayIfEnabled(@NotNull final PoseStack matrices, @NotNull final MultiBufferSource vertexConsumers, @NotNull final TextureAtlasSprite sprite, @NotNull final CallbackInfo ci) { + @Inject(method = "submitFire", at = @At("HEAD"), cancellable = true) + private static final void darkutils$skipRenderingFireOverlayIfEnabled(@NotNull final PoseStack matrices, @NotNull final SubmitNodeCollector vertexConsumers, @NotNull final TextureAtlasSprite sprite, @NotNull final CallbackInfo ci) { if (DarkUtilsConfig.INSTANCE.hideFireOverlay) { ci.cancel(); } diff --git a/src/main/java/gg/darkutils/utils/Helpers.java b/src/main/java/gg/darkutils/utils/Helpers.java index ce568e0..9aae59f 100644 --- a/src/main/java/gg/darkutils/utils/Helpers.java +++ b/src/main/java/gg/darkutils/utils/Helpers.java @@ -330,8 +330,8 @@ public static final void notify(@NotNull final SoundEvent sound, @NotNull final final var client = Minecraft.getInstance(); Helpers.playSound(sound, 1.0F, 1.0F); - client.gui.setTitle(Component.nullToEmpty(text)); - client.gui.setTimes(0, ticks, 0); + client.gui.hud.setTitle(Component.nullToEmpty(text)); + client.gui.hud.setTimes(0, ticks, 0); } public static final void notifyForServerTicks(@NotNull final SoundEvent sound, @NotNull final String text, final int serverTicks) { @@ -343,10 +343,10 @@ private static final void notifyForServerTicks(@NotNull final SoundEvent sound, final var client = Minecraft.getInstance(); Helpers.playSound(sound, 1.0F, 1.0F); - client.gui.setTitle(Component.nullToEmpty(text)); + client.gui.hud.setTitle(Component.nullToEmpty(text)); // Hacky way to simulate server tick dismissal of the title - client.gui.setTimes(0, Integer.MAX_VALUE, 0); + client.gui.hud.setTimes(0, Integer.MAX_VALUE, 0); TickUtils.queueServerTickTask(() -> { Helpers.clearTitle(); afterDismissHook.run(); @@ -354,7 +354,7 @@ private static final void notifyForServerTicks(@NotNull final SoundEvent sound, } private static final void clearTitle() { - Minecraft.getInstance().gui.clearTitles(); + Minecraft.getInstance().gui.hud.clearTitles(); } private static final void playSound(@NotNull final SoundEvent sound, final float volume, final float pitch) { diff --git a/src/main/java/gg/darkutils/utils/LocationUtils.java b/src/main/java/gg/darkutils/utils/LocationUtils.java index 24479bd..7b2291e 100644 --- a/src/main/java/gg/darkutils/utils/LocationUtils.java +++ b/src/main/java/gg/darkutils/utils/LocationUtils.java @@ -69,7 +69,7 @@ public static final boolean isInHypixel() { } public static final boolean isInSingleplayer() { - return Minecraft.getInstance().isSingleplayer(); + return null != Minecraft.getInstance().getSingleplayerServer(); } private enum SkyblockIsland { diff --git a/src/main/java/gg/darkutils/utils/TabListUtil.java b/src/main/java/gg/darkutils/utils/TabListUtil.java index 6b4ce60..c8bd7cb 100644 --- a/src/main/java/gg/darkutils/utils/TabListUtil.java +++ b/src/main/java/gg/darkutils/utils/TabListUtil.java @@ -22,7 +22,7 @@ private TabListUtil() { public static final @NotNull Iterator tabListLinesIterator() { final var mc = Minecraft.getInstance(); - return null == mc.player || null == mc.level ? Collections.emptyIterator() : new TabListUtil.TabListIterator(mc.gui.getTabList()); + return null == mc.player || null == mc.level ? Collections.emptyIterator() : new TabListUtil.TabListIterator(mc.gui.hud.getTabList()); } public static final @NotNull Iterable tabListLines() { diff --git a/src/main/java/gg/darkutils/utils/chat/ChatUtils.java b/src/main/java/gg/darkutils/utils/chat/ChatUtils.java index ab87ac2..4f4785b 100644 --- a/src/main/java/gg/darkutils/utils/chat/ChatUtils.java +++ b/src/main/java/gg/darkutils/utils/chat/ChatUtils.java @@ -90,7 +90,7 @@ public static final void addToSendMessageQueue(@NotNull final String message) { public static final void sendMessageToLocalPlayer(@NotNull final Component text) { // Ensure player is available and no lost messages // The awaitLocalPlayer method ensures correct threading behavior internally. - TickUtils.awaitLocalPlayer(player -> Minecraft.getInstance().gui.getChat().addClientSystemMessage(text)); + TickUtils.awaitLocalPlayer(player -> Minecraft.getInstance().gui.hud.getChat().addClientSystemMessage(text)); } public static final boolean hasFormatting(@NotNull final Component text, @NotNull final SimpleColor color) { diff --git a/src/main/java/gg/darkutils/utils/chat/SimpleColor.java b/src/main/java/gg/darkutils/utils/chat/SimpleColor.java index c915822..4711700 100644 --- a/src/main/java/gg/darkutils/utils/chat/SimpleColor.java +++ b/src/main/java/gg/darkutils/utils/chat/SimpleColor.java @@ -1,6 +1,7 @@ package gg.darkutils.utils.chat; import net.minecraft.ChatFormatting; +import net.minecraft.network.chat.TextColor; import org.jetbrains.annotations.NotNull; import java.util.Objects; @@ -29,7 +30,7 @@ public enum SimpleColor { private SimpleColor(@NotNull final ChatFormatting formatting) { this.formatting = Objects.requireNonNull(formatting, "SimpleColor formatting value"); - this.rgb = Objects.requireNonNull(this.formatting.getColor(), "SimpleColor formatting color value"); + this.rgb = Objects.requireNonNull(TextColor.fromLegacyFormat(this.formatting).getValue(), "SimpleColor formatting color value"); } @NotNull diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index bc768dc..aa27c06 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -32,10 +32,10 @@ "accessWidener": "darkutils.classtweaker", "depends": { "fabricloader": ">=0.19.3", - "minecraft": ">=26.1.2", + "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.153.0+26.1.2", - "cloth-config": ">=26.1.154", + "fabric-api": ">=0.153.0+26.2", + "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } } From a450e56343e7e480c9615a1be64224287bc57931 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Wed, 1 Jul 2026 17:41:13 +0300 Subject: [PATCH 02/22] Update fabric-api version Updated fabric-api version to 0.154.0+26.2. Signed-off-by: Mustafa --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3b3ef3b..fb315e8 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.12" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.153.0+26.2" +fabric-api = "0.154.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" From a187da424f42964c9a573831e3e5574dc70236e2 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 7 Jul 2026 09:36:51 +0300 Subject: [PATCH 03/22] Update Fabric API version in README Signed-off-by: Mustafa --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 070b13b..e37c252 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Required Dependencies: - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.153.0 or later. +- Fabric API 0.154.1 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. From 302e70deaf4f4bc8934fe75c4a7df34b11b18912 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 7 Jul 2026 09:37:05 +0300 Subject: [PATCH 04/22] Update fabric-api dependency version Signed-off-by: Mustafa --- src/main/resources/fabric.mod.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index aa27c06..e7abb97 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.153.0+26.2", + "fabric-api": ">=0.154.1+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 543c024c1a0baa7e595b9b033b6385abacd0a73d Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 7 Jul 2026 09:37:40 +0300 Subject: [PATCH 05/22] Update fabric-api version Updated fabric-api version from 0.154.0+26.2 to 0.154.1+26.2. Signed-off-by: Mustafa --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 8cd2413..e4c9176 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.12" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.154.0+26.2" +fabric-api = "0.154.1+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" From 54a9eeb6c70e449d44d3be29da0fad2f870b63cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Tue, 7 Jul 2026 11:54:13 +0300 Subject: [PATCH 06/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e37c252..e14810d 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Required Dependencies: - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.154.1 or later. +- Fabric API 0.154.2 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index e4c9176..5633fcc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.12" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.154.1+26.2" +fabric-api = "0.154.2+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e7abb97..97d9e3b 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.154.1+26.2", + "fabric-api": ">=0.154.2+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 712a957962b57e53bf963a2f2fc2afb380963001 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Thu, 16 Jul 2026 16:56:16 +0300 Subject: [PATCH 07/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index e14810d..231da8f 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Required Dependencies: - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.154.2 or later. +- Fabric API 0.155.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5633fcc..a4433e3 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.12" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.154.2+26.2" +fabric-api = "0.155.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 97d9e3b..e272ee3 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.154.2+26.2", + "fabric-api": ">=0.155.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 584a670ee568671bac6b942b1bbd166d16ab40e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Fri, 17 Jul 2026 22:20:13 +0300 Subject: [PATCH 08/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 231da8f..97248ee 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Required Dependencies: - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.155.0 or later. +- Fabric API 0.155.2 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a4433e3..6c71f2b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.12" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.155.0+26.2" +fabric-api = "0.155.2+26.2" cloth-config = "26.2.155" mod-menu = "20.0.0-beta.4" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e272ee3..e31e2dd 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.155.0+26.2", + "fabric-api": ">=0.155.2+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From d44b90e28fe54700cdfd7c87bc5277eaf79b234f Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 05:59:23 +0300 Subject: [PATCH 09/22] Rename method from 'destroy' to 'exitWorldAndClose' Signed-off-by: Mustafa --- src/main/java/gg/darkutils/mixin/misc/MinecraftMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gg/darkutils/mixin/misc/MinecraftMixin.java b/src/main/java/gg/darkutils/mixin/misc/MinecraftMixin.java index d3cb899..6ee5753 100644 --- a/src/main/java/gg/darkutils/mixin/misc/MinecraftMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/MinecraftMixin.java @@ -76,7 +76,7 @@ private MinecraftMixin() { } } - @Inject(method = "destroy", at = @At("HEAD")) + @Inject(method = "exitWorldAndClose", at = @At("HEAD")) private final void darkutils$onQuitGame(@NotNull final CallbackInfo ci) { PersistentData.saveAtomicIfDirtyThreadSafeBlocking(); } From 6fd197ef982da12f296cc9cde87c4a5c995673a6 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 17:37:39 +0300 Subject: [PATCH 10/22] Implement Wayland game icon fix in WindowMixin Added injection to fix game icon on Wayland when enabled, including error handling for desktop file generation. Signed-off-by: Mustafa --- .../gg/darkutils/mixin/misc/WindowMixin.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java b/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java index ca8096f..a10f4bd 100644 --- a/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java @@ -6,6 +6,7 @@ import gg.darkutils.config.DarkUtilsConfig; import gg.darkutils.feat.bugfixes.WaylandGameIconFix; import gg.darkutils.feat.performance.OpenGLVersionOverride; +import gg.darkutils.feat.bugfixes.WaylandGameIconFix; import net.minecraft.client.Minecraft; import net.minecraft.server.packs.PackResources; import org.jetbrains.annotations.NotNull; @@ -17,6 +18,7 @@ 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 java.io.IOException; @@ -68,6 +70,22 @@ private WindowMixin() { Minecraft.getInstance().resizeGui(); } + @Inject(method = "createGlfwWindow", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/systems/GpuBackend;setWindowHints()V", shift = At.Shift.AFTER)) + private static final void darkutils$afterDefaultWindowHints$fixGameIconOnWaylandIfEnabled(final int width, final int height, @NotNull final String title, final long monitor, @NotNull final GpuBackend backend, @NotNull final CallbackInfoReturnable cir) { + if (DarkUtilsConfig.INSTANCE.preferWayland && DarkUtilsConfig.INSTANCE.fixGameIconOnWayland && DarkUtils.shouldPreferWayland() && DarkUtils.isWindowPlatformWayland()) { + try { + WaylandGameIconFix.generateDesktopFile(); + } catch (final IOException ioe) { + WaylandGameIconFix.desktopFileFailure = true; + DarkUtils.error("@fileName@", "Error generating desktop file to filesystem for use with wayland icon fix, fall backing to vanilla logic", ioe); + + return; + } + + GLFW.glfwWindowHintString(GLFW.GLFW_WAYLAND_APP_ID, WaylandGameIconFix.WAYLAND_APP_ID); + } + } + @Inject(method = "setIcon", at = @At("HEAD"), cancellable = true) private final void darkutils$onSetGameIcon$fixGameIconOnWaylandIfEnabled(@NotNull final PackResources packResources, @NotNull final IconSet iconSet, @NotNull final CallbackInfo ci) { if (DarkUtilsConfig.INSTANCE.preferWayland && DarkUtilsConfig.INSTANCE.fixGameIconOnWayland && DarkUtils.shouldPreferWayland() && DarkUtils.isWindowPlatformWayland() && !WaylandGameIconFix.desktopFileFailure) { From 47f18412f6b9c77e93dd1841b2461530edde4b41 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 17:37:46 +0300 Subject: [PATCH 11/22] Remove Wayland game icon fix method Removed Wayland game icon fix injection from GLXMixin. Signed-off-by: Mustafa --- .../darkutils/mixin/performance/GLXMixin.java | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/main/java/gg/darkutils/mixin/performance/GLXMixin.java b/src/main/java/gg/darkutils/mixin/performance/GLXMixin.java index d8856cd..fde7543 100644 --- a/src/main/java/gg/darkutils/mixin/performance/GLXMixin.java +++ b/src/main/java/gg/darkutils/mixin/performance/GLXMixin.java @@ -3,14 +3,12 @@ import com.mojang.blaze3d.platform.GLX; import gg.darkutils.DarkUtils; import gg.darkutils.config.DarkUtilsConfig; -import gg.darkutils.feat.bugfixes.WaylandGameIconFix; import org.jetbrains.annotations.NotNull; import org.lwjgl.glfw.GLFW; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.util.function.LongSupplier; @@ -36,21 +34,5 @@ private GLXMixin() { GLFW.glfwInitHint(hint, value); } - - @Inject(method = "_initGlfw", at = @At(value = "INVOKE", target = "Lorg/lwjgl/glfw/GLFW;glfwDefaultWindowHints()V", shift = At.Shift.AFTER)) - private static final void darkutils$afterDefaultWindowHints$fixGameIconOnWaylandIfEnabled(@NotNull final CallbackInfoReturnable ci) { - if (DarkUtilsConfig.INSTANCE.preferWayland && DarkUtilsConfig.INSTANCE.fixGameIconOnWayland && DarkUtils.shouldPreferWayland() && DarkUtils.isWindowPlatformWayland()) { - try { - WaylandGameIconFix.generateDesktopFile(); - } catch (final IOException ioe) { - WaylandGameIconFix.desktopFileFailure = true; - DarkUtils.error("@fileName@", "Error generating desktop file to filesystem for use with wayland icon fix, fall backing to vanilla logic", ioe); - - return; - } - - GLFW.glfwWindowHintString(GLFW.GLFW_WAYLAND_APP_ID, WaylandGameIconFix.WAYLAND_APP_ID); - } - } } From 305f3ae6c65810f5cf9dd9c1749fdf4afa81dea5 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 17:40:12 +0300 Subject: [PATCH 12/22] Add GpuBackend import to WindowMixin Signed-off-by: Mustafa --- src/main/java/gg/darkutils/mixin/misc/WindowMixin.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java b/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java index a10f4bd..c838097 100644 --- a/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/WindowMixin.java @@ -2,6 +2,7 @@ import com.mojang.blaze3d.platform.IconSet; import com.mojang.blaze3d.platform.Window; +import com.mojang.blaze3d.systems.GpuBackend; import gg.darkutils.DarkUtils; import gg.darkutils.config.DarkUtilsConfig; import gg.darkutils.feat.bugfixes.WaylandGameIconFix; From a85c7d7d687cc6fb0036554dc7585f90be591a3d Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 18:08:35 +0300 Subject: [PATCH 13/22] Update method signature for createDevice modification Signed-off-by: Mustafa --- src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java b/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java index 49cced7..deabf2d 100644 --- a/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/GlBackendMixin.java @@ -25,7 +25,7 @@ private GlBackendMixin() { GLFW.glfwWindowHint(hint, GLFW.GLFW_CONTEXT_VERSION_MAJOR == hint ? OpenGLVersionOverride.getGLMajorVersion(value) : GLFW.GLFW_CONTEXT_VERSION_MINOR == hint ? OpenGLVersionOverride.getGLMinorVersion(value) : value); } - @ModifyArgs(method = "createDevice(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;)Lcom/mojang/blaze3d/systems/GpuDevice;", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/GlDevice;(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;)V")) + @ModifyArgs(method = "createDevice(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;Ljava/lang/Runnable;)Lcom/mojang/blaze3d/systems/GpuDevice;", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/GlDevice;(JLcom/mojang/blaze3d/shaders/ShaderSource;Lcom/mojang/blaze3d/shaders/GpuDebugOptions;)V")) private static final void darkutils$disableGlDebugIfEnabled(@NotNull final Args args) { if (DarkUtilsConfig.INSTANCE.disableGlDebug) { args.set(2, new GpuDebugOptions(0, false, false, false)); From 41038c5b8d0cbc087c0e1e5d8d543dcdbb28f56e Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 18:22:30 +0300 Subject: [PATCH 14/22] Rename method for night vision scale override Signed-off-by: Mustafa --- src/main/java/gg/darkutils/mixin/misc/GameRendererMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gg/darkutils/mixin/misc/GameRendererMixin.java b/src/main/java/gg/darkutils/mixin/misc/GameRendererMixin.java index 95a2894..4456508 100644 --- a/src/main/java/gg/darkutils/mixin/misc/GameRendererMixin.java +++ b/src/main/java/gg/darkutils/mixin/misc/GameRendererMixin.java @@ -20,7 +20,7 @@ private GameRendererMixin() { throw new UnsupportedOperationException("mixin class"); } - @Inject(method = "getNightVisionScale", at = @At("HEAD"), cancellable = true) + @Inject(method = "nightVisionScale", at = @At("HEAD"), cancellable = true) private static final void darkutils$overrideNightVisionIfEnabled(@NotNull final LivingEntity entity, final float tickProgress, @NotNull final CallbackInfoReturnable cir) { if (DarkUtilsConfig.INSTANCE.nightVision) { cir.setReturnValue(0.9F); From f5c2ab2476861b138b01253b656ac7346e1e3049 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 18:39:08 +0300 Subject: [PATCH 15/22] Rename GuiMixin to HudMixin and update Mixin target Signed-off-by: Mustafa --- .../mixin/visuals/{GuiMixin.java => HudMixin.java} | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) rename src/main/java/gg/darkutils/mixin/visuals/{GuiMixin.java => HudMixin.java} (96%) diff --git a/src/main/java/gg/darkutils/mixin/visuals/GuiMixin.java b/src/main/java/gg/darkutils/mixin/visuals/HudMixin.java similarity index 96% rename from src/main/java/gg/darkutils/mixin/visuals/GuiMixin.java rename to src/main/java/gg/darkutils/mixin/visuals/HudMixin.java index 29c3ffa..3be876c 100644 --- a/src/main/java/gg/darkutils/mixin/visuals/GuiMixin.java +++ b/src/main/java/gg/darkutils/mixin/visuals/HudMixin.java @@ -6,7 +6,7 @@ import gg.darkutils.utils.LocationUtils; import net.minecraft.client.KeyMapping; import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.Gui; +import net.minecraft.client.gui.Hud; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.world.entity.player.Player; import org.jetbrains.annotations.NotNull; @@ -16,9 +16,9 @@ import org.spongepowered.asm.mixin.injection.Redirect; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; -@Mixin(Gui.class) -final class GuiMixin { - private GuiMixin() { +@Mixin(Hud.class) +final class HudMixin { + private HudMixin() { super(); throw new UnsupportedOperationException("mixin class"); From abb28ec801a86b26596b7192c58f4abf29366db9 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Tue, 21 Jul 2026 18:39:31 +0300 Subject: [PATCH 16/22] Replace GuiMixin with HudMixin in darkutils.mixins.json Signed-off-by: Mustafa --- src/main/resources/darkutils.mixins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/darkutils.mixins.json b/src/main/resources/darkutils.mixins.json index 59ba996..d2443c1 100644 --- a/src/main/resources/darkutils.mixins.json +++ b/src/main/resources/darkutils.mixins.json @@ -40,7 +40,7 @@ "visuals.FlameFeatureRendererMixin", "visuals.FogRendererMixin", "visuals.HeartTypeMixin", - "visuals.GuiMixin", + "visuals.HudMixin", "visuals.ScreenEffectRendererMixin", "visuals.LightmapRenderStateExtractorMixin", "visuals.LightningBoltRendererMixin", From d97fd31dcf7c3d9b31d5d0ba9d1fca08a8f3130f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Tue, 28 Jul 2026 14:30:47 +0300 Subject: [PATCH 17/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 2524b50..ec1c21d 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Note: A release might target both these, and an older MC version. In addition, o - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.155.2 or later. +- Fabric API 0.156.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f5df1d1..fec0be7 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.16" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.155.2+26.2" +fabric-api = "0.156.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.1" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index e31e2dd..331b62a 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.155.2+26.2", + "fabric-api": ">=0.156.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 15d18ccc76fce146d74e91a91b53d71b41e3c411 Mon Sep 17 00:00:00 2001 From: Mustafa Date: Sun, 2 Aug 2026 12:12:16 +0300 Subject: [PATCH 18/22] Update HeartTypeMixin to target Hud$HeartType Redirects the hasStatusEffect call in HeartType.forPlayer to modify behavior for WITHER effect based on config. Signed-off-by: Mustafa --- src/main/java/gg/darkutils/mixin/visuals/HeartTypeMixin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gg/darkutils/mixin/visuals/HeartTypeMixin.java b/src/main/java/gg/darkutils/mixin/visuals/HeartTypeMixin.java index 97581d1..7cdd968 100644 --- a/src/main/java/gg/darkutils/mixin/visuals/HeartTypeMixin.java +++ b/src/main/java/gg/darkutils/mixin/visuals/HeartTypeMixin.java @@ -10,7 +10,7 @@ import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(targets = "net.minecraft.client.gui.Gui$HeartType") +@Mixin(targets = "net.minecraft.client.gui.Hud$HeartType") final class HeartTypeMixin { private HeartTypeMixin() { super(); @@ -19,7 +19,7 @@ private HeartTypeMixin() { } /** - * Redirects the hasStatusEffect call inside HeartType.fromPlayerState. + * Redirects the hasStatusEffect call inside HeartType.forPlayer. * Returns false when the effect being checked is WITHER and the config option is enabled, otherwise * passes the original call through unchanged. */ From 30b089262cc9e8cbe599d673ebc07ecd2acd152b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Mon, 10 Aug 2026 21:59:20 +0300 Subject: [PATCH 19/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index ec1c21d..fe37f73 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Note: A release might target both these, and an older MC version. In addition, o - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.156.0 or later. +- Fabric API 0.157.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index fec0be7..08395e0 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.16" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.156.0+26.2" +fabric-api = "0.157.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.1" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 331b62a..c56ae2f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.156.0+26.2", + "fabric-api": ">=0.157.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 91be7f5f05a04ced1daeecb3be587fd1d08b2346 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Tue, 18 Aug 2026 18:24:28 +0300 Subject: [PATCH 20/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index fe37f73..911ecb3 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Note: A release might target both these, and an older MC version. In addition, o - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.157.0 or later. +- Fabric API 0.158.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6904c73..07bec5c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.19" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.157.0+26.2" +fabric-api = "0.158.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.1" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index c56ae2f..5fece05 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.157.0+26.2", + "fabric-api": ">=0.158.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From c80f5c09b5ae21a3f2e2649248e50c035381caa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Tue, 1 Sep 2026 15:41:04 +0300 Subject: [PATCH 21/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 911ecb3..bb8bdcc 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Note: A release might target both these, and an older MC version. In addition, o - Minecraft 26.2 or later. - Fabric Loader 0.19.3 or later. -- Fabric API 0.158.0 or later. +- Fabric API 0.159.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 07bec5c..f1a8e7d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.19" java = "25" minecraft = "26.2" fabric-loader = "0.19.3" -fabric-api = "0.158.0+26.2" +fabric-api = "0.159.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.1" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 5fece05..e13f259 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.3", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.158.0+26.2", + "fabric-api": ">=0.159.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" } From 8133fd8d16b903be2cf3c1e6210d23fc276868bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mustafa=20=C3=96NCEL?= Date: Tue, 8 Sep 2026 05:20:27 +0300 Subject: [PATCH 22/22] Bump Fabric API --- README.md | 2 +- gradle/libs.versions.toml | 2 +- src/main/resources/fabric.mod.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7d5482e..3a03045 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Note: A release might target both these, and an older MC version. In addition, o - Minecraft 26.2 or later. - Fabric Loader 0.19.5 or later. -- Fabric API 0.159.0 or later. +- Fabric API 0.160.0 or later. - Cloth Config API 26.2.155 or later. - Hypixel Mod API 1.0.2 or later. diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6f1b9de..f49d766 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,7 @@ loom = "1.17.20" java = "25" minecraft = "26.2" fabric-loader = "0.19.5" -fabric-api = "0.159.0+26.2" +fabric-api = "0.160.0+26.2" cloth-config = "26.2.155" mod-menu = "20.0.1" hypixel-mod-api = "1.0.2" diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index f94739d..d889058 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -34,7 +34,7 @@ "fabricloader": ">=0.19.5", "minecraft": ">=26.2", "java": ">=25", - "fabric-api": ">=0.159.0+26.2", + "fabric-api": ">=0.160.0+26.2", "cloth-config": ">=26.2.155", "hypixel-mod-api": ">=1.0.2" }