Move mod compat warnings into AbstractModInit and add WWOO to the list
This commit is contained in:
@@ -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.DependencySetup;
|
||||||
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper;
|
import com.seibel.distanthorizons.common.wrappers.minecraft.MinecraftServerWrapper;
|
||||||
import com.seibel.distanthorizons.common.wrappers.misc.ServerPlayerWrapper;
|
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.api.internal.SharedApi;
|
||||||
import com.seibel.distanthorizons.core.config.Config;
|
import com.seibel.distanthorizons.core.config.Config;
|
||||||
import com.seibel.distanthorizons.core.config.ConfigBase;
|
import com.seibel.distanthorizons.core.config.ConfigBase;
|
||||||
@@ -89,7 +90,7 @@ public abstract class AbstractModInitializer
|
|||||||
{
|
{
|
||||||
DependencySetup.createClientBindings();
|
DependencySetup.createClientBindings();
|
||||||
|
|
||||||
LOGGER.info("Initializing " + ModInfo.READABLE_NAME);
|
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " client.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
||||||
|
|
||||||
this.startup();
|
this.startup();
|
||||||
@@ -100,7 +101,7 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
this.initializeModCompat();
|
this.initializeModCompat();
|
||||||
|
|
||||||
LOGGER.info(ModInfo.READABLE_NAME + " Initialized");
|
LOGGER.info(ModInfo.READABLE_NAME + " client Initialized.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
||||||
|
|
||||||
// Client uses config for auto-updater, so it's initialized here instead of post-init stage
|
// 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();
|
DependencySetup.createServerBindings();
|
||||||
|
|
||||||
LOGGER.info("Initializing " + ModInfo.READABLE_NAME);
|
LOGGER.info("Initializing " + ModInfo.READABLE_NAME + " server.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiBeforeDhInitEvent.class, null);
|
||||||
|
|
||||||
this.startup();
|
this.startup();
|
||||||
@@ -128,7 +129,7 @@ public abstract class AbstractModInitializer
|
|||||||
|
|
||||||
this.initializeModCompat();
|
this.initializeModCompat();
|
||||||
|
|
||||||
LOGGER.info(ModInfo.READABLE_NAME + " Initialized");
|
LOGGER.info(ModInfo.READABLE_NAME + " server Initialized.");
|
||||||
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
ApiEventInjector.INSTANCE.fireAllEvents(DhApiAfterDhInitEvent.class, null);
|
||||||
|
|
||||||
this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandDispatcher = dispatcher; });
|
this.subscribeRegisterCommandsEvent(dispatcher -> { this.commandDispatcher = dispatcher; });
|
||||||
@@ -156,6 +157,7 @@ public abstract class AbstractModInitializer
|
|||||||
DependencySetup.createSharedBindings();
|
DependencySetup.createSharedBindings();
|
||||||
SharedApi.init();
|
SharedApi.init();
|
||||||
this.createInitialBindings();
|
this.createInitialBindings();
|
||||||
|
logModIncompatibilityWarnings();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logBuildInfo()
|
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 //
|
// helper classes //
|
||||||
//================//
|
//================//
|
||||||
|
|||||||
@@ -114,19 +114,6 @@ public class ForgeMain extends AbstractModInitializer
|
|||||||
() -> new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> GetConfigScreen.getScreen(parent)));
|
() -> new ConfigScreenHandler.ConfigScreenFactory((client, parent) -> GetConfigScreen.getScreen(parent)));
|
||||||
#endif
|
#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
|
@Override
|
||||||
|
|||||||
@@ -113,19 +113,6 @@ public class NeoforgeMain extends AbstractModInitializer
|
|||||||
() -> (client, parent) -> GetConfigScreen.getScreen(parent));
|
() -> (client, parent) -> GetConfigScreen.getScreen(parent));
|
||||||
#endif
|
#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
|
@Override
|
||||||
|
|||||||
Reference in New Issue
Block a user