From 8b514b07dc52d08d741ca64c38cfa591e4fda415 Mon Sep 17 00:00:00 2001 From: James Seibel Date: Sun, 22 Sep 2024 08:09:31 -0500 Subject: [PATCH] Move mod compat warnings into AbstractModInit and add WWOO to the list --- .../common/AbstractModInitializer.java | 74 ++++++++++++++++++- .../distanthorizons/forge/ForgeMain.java | 13 ---- .../neoforge/NeoforgeMain.java | 13 ---- 3 files changed, 70 insertions(+), 30 deletions(-) diff --git a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java index 029ee46b7..65f5850e3 100644 --- a/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java +++ b/common/src/main/java/com/seibel/distanthorizons/common/AbstractModInitializer.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.api.methods.events.abstractEvents.DhApiBeforeD import com.seibel.distanthorizons.common.wrappers.DependencySetup; import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper; import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper; +import com.seibel.distanthorizons.core.api.internal.ClientApi; import com.seibel.distanthorizons.core.api.internal.SharedApi; import com.seibel.distanthorizons.core.config.Config; import com.seibel.distanthorizons.core.config.ConfigBase; @@ -89,7 +90,7 @@ public abstract class AbstractModInitializer { DependencySetup.createClientBindings(); - LOGGER.info("Initializing " + ModInfo.READABLE_NAME); + LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " client."); ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null); this.startup(); @@ -100,7 +101,7 @@ public abstract class AbstractModInitializer this.initializeModCompat(); - LOGGER.info(ModInfo.READABLE_NAME + " Initialized"); + LOGGER.info(ModInfo.READABLE_NAME + " client Initialized."); ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null); // Client uses config for auto-updater, so it's initialized here instead of post-init stage @@ -113,7 +114,7 @@ public abstract class AbstractModInitializer { DependencySetup.createServerBindings(); - LOGGER.info("Initializing " + ModInfo.READABLE_NAME); + LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " server."); ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null); this.startup(); @@ -128,7 +129,7 @@ public abstract class AbstractModInitializer this.initializeModCompat(); - LOGGER.info(ModInfo.READABLE_NAME + " Initialized"); + LOGGER.info(ModInfo.READABLE_NAME + " server Initialized."); ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null); this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandDispatcher = dispatcher; }); @@ -156,6 +157,7 @@ public abstract class AbstractModInitializer DependencySetup.createSharedBindings(); SharedApi.init(); this.createInitialBindings(); + logModIncompatibilityWarnings(); } private void logBuildInfo() @@ -327,6 +329,70 @@ public abstract class AbstractModInitializer + //==================================// + // mod partial compatibility checks // + //==================================// + + /** + * Some mods will work with a few tweaks + * or will partially work but have some known issues we can't solve. + * This method will log (and display to chat if enabled) + * these warnings and potential fixes. + */ + private static void logModIncompatibilityWarnings() + { + boolean showChatWarnings = Config.Client.Advanced.Logging.showModCompatibilityWarningsOnStartup.get(); + IModChecker modChecker = SingletonInjector.INSTANCE.get(IModChecker.class); + + String startingString = "Partially Incompatible Distant Horizons mod detected: "; + + + + // Alex's caves + if (modChecker.isModLoaded("alexscaves")) + { + // There've been a few reports about this mod breaking DH at a few different points in time + // the fixes for said breakage changes depending on the version so unfortunately + // all we can do is log a warning so the user can handle it. + + if (showChatWarnings) + { + String message = + // orange text + "\u00A76" + "Distant Horizons: Alex's Cave detected." + "\u00A7r\n" + + "You may have to change Alex's config for DH to render. "; + ClientApi.INSTANCE.showChatMessageNextFrame(message); + } + + LOGGER.warn(startingString + "[Alex's Caves] may require some config changes in order to render Distant Horizons correctly."); + } + + // William Wythers' Overhauled Overworld (WWOO) + if (modChecker.isModLoaded("wwoo")) + { + // WWOO has a bug with it's world gen that can't be fixed by DH or WWOO + // (at least that is what James learned after talking with WWOO) + // WWOO will cause grid lines to appear in the world when DH generates the chunks + // this might be due to how WWOO uses features for everything when generating + // and said features don't always get to the edge of said chunks. + + String wwooWarning = "LODs generated by DH may have grid lines between sections. Disabling either WWOO or DH's distant generator will fix the problem."; + + if (showChatWarnings) + { + String message = + // orange text + "\u00A76" + "Distant Horizons: WWOO detected." + "\u00A7r\n" + + wwooWarning; + ClientApi.INSTANCE.showChatMessageNextFrame(message); + } + + LOGGER.warn(startingString + "[WWOO] "+ wwooWarning); + } + } + + + //================// // helper classes // //================// diff --git a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java index 64f8a7348..5590e662c 100644 --- a/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java +++ b/forge/src/main/java/com/seibel/distanthorizons/forge/ForgeMain.java @@ -114,19 +114,6 @@ public class ForgeMain extends AbstractModInitializer () -> new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> GetConfigScreen.getScreen(parent))); #endif - - if (Config.Client.Advanced.Logging.showModCompatibilityWarningsOnStartup.get()) - { - IModChecker modChecker = SingletonInjector.INSTANCE.get(IModChecker.class); - if (modChecker.isModLoaded("alexscaves")) - { - String message = - // orange text - "\u00A76" + "Distant Horizons: Alex's Cave detected." + "\u00A7r\n" + - "You may have to change Alex's config for DH to render. "; - ClientApi.INSTANCE.showChatMessageNextFrame(message); - } - } } @Override diff --git a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java index 272e63cc7..f303d8c34 100644 --- a/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java +++ b/neoforge/src/main/java/com/seibel/distanthorizons/neoforge/NeoforgeMain.java @@ -113,19 +113,6 @@ public class NeoforgeMain extends AbstractModInitializer () -> (client, parent) -> GetConfigScreen.getScreen(parent)); #endif - - if (Config.Client.Advanced.Logging.showModCompatibilityWarningsOnStartup.get()) - { - IModChecker modChecker = SingletonInjector.INSTANCE.get(IModChecker.class); - if (modChecker.isModLoaded("alexscaves")) - { - String message = - // orange text - "\u00A76" + "Distant Horizons: Alex's Cave detected." + "\u00A7r\n" + - "You may have to change Alex's config for DH to render. "; - ClientApi.INSTANCE.showChatMessageNextFrame(message); - } - } } @Override