From c91631809e77befd67673aa3ac18e706c32d7d9e Mon Sep 17 00:00:00 2001 From: James Seibel Date: Wed, 11 Feb 2026 07:09:33 -0600 Subject: [PATCH] re-add chat warning if G1GC is used --- .../distanthorizons/core/Initializer.java | 31 ++++++++++++++----- .../distanthorizons/core/config/Config.java | 11 ++++++- .../assets/distanthorizons/lang/en_us.json | 2 ++ 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java index d063c5055..5e6d20bf2 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/Initializer.java @@ -21,9 +21,11 @@ package com.seibel.distanthorizons.core; import com.github.luben.zstd.ZstdOutputStream; import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiBeforeRenderEvent; +import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.config.eventHandlers.IgnoredDimensionCsvHandler; import com.seibel.distanthorizons.core.dependencyInjection.SingletonInjector; +import com.seibel.distanthorizons.core.enums.MinecraftTextFormat; import com.seibel.distanthorizons.core.logging.DhLoggerBuilder; import com.seibel.distanthorizons.core.render.renderer.generic.GenericRenderObjectFactory; import com.seibel.distanthorizons.core.sql.DatabaseUpdater; @@ -160,16 +162,31 @@ public class Initializer LOGGER.info("Garbage collectors: ["+garbageCollectorNames+"]"); - if (g1GcInUse - && Config.Common.Logging.Warning.logGarbageCollectorWarning.get()) + if (g1GcInUse) { - LOGGER.warn( - "Distant Horizons: G1 Garbage collector detected. \n" + - "This garbage collector can cause FPS stuttering. \n" + + String warningMessageHeader = "Distant Horizons: G1 Garbage collector detected."; + String warningMessageBody = + "This can cause FPS stuttering. \n" + "It's recommended to use a concurrent garbage collector \n" + - "like ZGC (Java 21+) or Shenandoah (Java 8 through 17) for a smoother experience. \n" + - ""); + "like ZGC (Java 21+) or Shenandoah (Java 8 through 17) \n" + + "for a smoother experience." + ; + if (Config.Common.Logging.Warning.logGarbageCollectorWarning.get()) + { + LOGGER.warn( + warningMessageHeader + "\n" + + warningMessageBody + + ""); + } + + if (Config.Common.Logging.Warning.showGarbageCollectorWarning.get()) + { + ClientApi.INSTANCE.showChatMessageNextFrame( + MinecraftTextFormat.ORANGE + warningMessageHeader + MinecraftTextFormat.CLEAR_FORMATTING + "\n" + + warningMessageBody + + ""); + } } } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java index b76e4fee0..0c413a863 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/config/Config.java @@ -1646,7 +1646,16 @@ public class Config .comment("" + "If enabled, a message will be logged if the garbage \n" + "collector Java is currently using is known \n" - + "to cause stutters and/or issues. \n" + + "to cause frame stuttering and/or other issues. \n" + + "") + .build(); + + public static ConfigEntry showGarbageCollectorWarning = new ConfigEntry.Builder() + .set(true) + .comment("" + + "If enabled, a chat message will be displayed if the garbage \n" + + "collector Java is currently using is known \n" + + "to cause frame stuttering and/or other issues. \n" + "") .build(); diff --git a/core/src/main/resources/assets/distanthorizons/lang/en_us.json b/core/src/main/resources/assets/distanthorizons/lang/en_us.json index 9017ea90a..9ec5075d0 100644 --- a/core/src/main/resources/assets/distanthorizons/lang/en_us.json +++ b/core/src/main/resources/assets/distanthorizons/lang/en_us.json @@ -748,6 +748,8 @@ "Show Slow World Gen Warnings", "distanthorizons.config.common.logging.warning.showModCompatibilityWarningsOnStartup": "Show Mod Compatibility Warnings", + "distanthorizons.config.common.logging.warning.showGarbageCollectorWarning": + "Show Garbage Collector Warning", "distanthorizons.config.common.logging.warning.logGarbageCollectorWarning": "Log Garbage Collector Warning",