diff --git a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java index 900cdf1..7e2c82f 100644 --- a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +++ b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java @@ -1,32 +1,20 @@ package com.hypherionmc.craterlib; -import com.hypherionmc.craterlib.api.events.client.LateInitEvent; -import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.client.NeoForgeClientHelper; import com.hypherionmc.craterlib.common.NeoForgeServerEvents; import com.hypherionmc.craterlib.compat.Vanish; -import com.hypherionmc.craterlib.core.config.ConfigController; -import com.hypherionmc.craterlib.core.config.ModuleConfig; -import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; -import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; import com.hypherionmc.craterlib.core.networking.PacketRegistry; import com.hypherionmc.craterlib.core.networking.data.PacketSide; import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; import com.hypherionmc.craterlib.network.CraterNeoForgeNetworkHandler; -import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; -import com.hypherionmc.craterlib.nojang.client.BridgedOptions; -import net.minecraft.client.Minecraft; import net.neoforged.bus.api.IEventBus; -import net.neoforged.fml.ModList; import net.neoforged.fml.common.Mod; +import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; -import net.neoforged.fml.loading.FMLEnvironment; import net.neoforged.fml.loading.FMLLoader; -import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import net.neoforged.neoforge.common.NeoForge; -import java.util.Optional; - @Mod(CraterConstants.MOD_ID) public class CraterLib { @@ -35,6 +23,7 @@ public class CraterLib { public CraterLib(IEventBus eventBus) { NeoForge.EVENT_BUS.register(new NeoForgeServerEvents()); eventBus.addListener(this::commonSetup); + eventBus.addListener(this::clientSetup); handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER); if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { @@ -44,16 +33,9 @@ public class CraterLib { public void commonSetup(FMLCommonSetupEvent evt) { new CraterPacketNetwork(handler); - if (FMLEnvironment.dist.isClient()) { - LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options)); - CraterEventBus.INSTANCE.postEvent(event); + } - ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> { - if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) { - ModuleConfig config = (ModuleConfig) conf; - ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen)))); - } - }); - } + public void clientSetup(FMLClientSetupEvent evt) { + NeoForgeClientHelper.registerClient(); } } diff --git a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java index d6c2ef7..5aeb1fd 100644 --- a/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java +++ b/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java @@ -1,11 +1,20 @@ package com.hypherionmc.craterlib.client; +import com.hypherionmc.craterlib.api.events.client.LateInitEvent; +import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.config.ConfigController; +import com.hypherionmc.craterlib.core.config.ModuleConfig; +import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; +import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.platform.ClientPlatform; import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; +import com.hypherionmc.craterlib.nojang.client.BridgedOptions; import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; import net.minecraft.client.Minecraft; import net.minecraft.network.Connection; +import net.neoforged.fml.ModList; +import net.neoforged.neoforge.client.gui.IConfigScreenFactory; import java.util.Objects; @@ -37,4 +46,16 @@ public class NeoForgeClientHelper implements ClientPlatform { Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!"); return Minecraft.getInstance().getConnection().getConnection(); } + + public static void registerClient() { + LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options)); + CraterEventBus.INSTANCE.postEvent(event); + + ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> { + if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) { + ModuleConfig config = (ModuleConfig) conf; + ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen)))); + } + }); + } } diff --git a/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch b/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch new file mode 100644 index 0000000..8e97015 --- /dev/null +++ b/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java.patch @@ -0,0 +1,65 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java ++++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/CraterLib.java +@@ -1,32 +1,20 @@ + package com.hypherionmc.craterlib; + +-import com.hypherionmc.craterlib.api.events.client.LateInitEvent; +-import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; ++import com.hypherionmc.craterlib.client.NeoForgeClientHelper; + import com.hypherionmc.craterlib.common.NeoForgeServerEvents; + import com.hypherionmc.craterlib.compat.Vanish; +-import com.hypherionmc.craterlib.core.config.ConfigController; +-import com.hypherionmc.craterlib.core.config.ModuleConfig; +-import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; +-import com.hypherionmc.craterlib.core.event.CraterEventBus; + import com.hypherionmc.craterlib.core.networking.CraterPacketNetwork; + import com.hypherionmc.craterlib.core.networking.PacketRegistry; + import com.hypherionmc.craterlib.core.networking.data.PacketSide; + import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment; + import com.hypherionmc.craterlib.network.CraterNeoForgeNetworkHandler; +-import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; +-import com.hypherionmc.craterlib.nojang.client.BridgedOptions; +-import net.minecraft.client.Minecraft; + import net.neoforged.bus.api.IEventBus; +-import net.neoforged.fml.ModList; + import net.neoforged.fml.common.Mod; ++import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent; + import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent; +-import net.neoforged.fml.loading.FMLEnvironment; + import net.neoforged.fml.loading.FMLLoader; +-import net.neoforged.neoforge.client.gui.IConfigScreenFactory; + import net.neoforged.neoforge.common.NeoForge; + +-import java.util.Optional; +- + @Mod(CraterConstants.MOD_ID) + public class CraterLib { + +@@ -35,6 +23,7 @@ + public CraterLib(IEventBus eventBus) { + NeoForge.EVENT_BUS.register(new NeoForgeServerEvents()); + eventBus.addListener(this::commonSetup); ++ eventBus.addListener(this::clientSetup); + handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER); + + if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) { +@@ -44,16 +33,9 @@ + + public void commonSetup(FMLCommonSetupEvent evt) { + new CraterPacketNetwork(handler); +- if (FMLEnvironment.dist.isClient()) { +- LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options)); +- CraterEventBus.INSTANCE.postEvent(event); ++ } + +- ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> { +- if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) { +- ModuleConfig config = (ModuleConfig) conf; +- ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen)))); +- } +- }); +- } ++ public void clientSetup(FMLClientSetupEvent evt) { ++ NeoForgeClientHelper.registerClient(); + } + } diff --git a/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java.patch b/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java.patch new file mode 100644 index 0000000..3cee827 --- /dev/null +++ b/patches/1.21/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java.patch @@ -0,0 +1,41 @@ +--- a/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java ++++ b/NeoForge/src/main/java/com/hypherionmc/craterlib/client/NeoForgeClientHelper.java +@@ -1,11 +1,20 @@ + package com.hypherionmc.craterlib.client; + ++import com.hypherionmc.craterlib.api.events.client.LateInitEvent; ++import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; ++import com.hypherionmc.craterlib.core.config.ConfigController; ++import com.hypherionmc.craterlib.core.config.ModuleConfig; ++import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; ++import com.hypherionmc.craterlib.core.event.CraterEventBus; + import com.hypherionmc.craterlib.core.platform.ClientPlatform; + import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft; ++import com.hypherionmc.craterlib.nojang.client.BridgedOptions; + import com.hypherionmc.craterlib.nojang.client.multiplayer.BridgedClientLevel; + import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer; + import net.minecraft.client.Minecraft; + import net.minecraft.network.Connection; ++import net.neoforged.fml.ModList; ++import net.neoforged.neoforge.client.gui.IConfigScreenFactory; + + import java.util.Objects; + +@@ -36,5 +45,17 @@ + public Connection getClientConnection() { + Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!"); + return Minecraft.getInstance().getConnection().getConnection(); ++ } ++ ++ public static void registerClient() { ++ LateInitEvent event = new LateInitEvent(new BridgedMinecraft(), BridgedOptions.of(Minecraft.getInstance().options)); ++ CraterEventBus.INSTANCE.postEvent(event); ++ ++ ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> { ++ if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) { ++ ModuleConfig config = (ModuleConfig) conf; ++ ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen)))); ++ } ++ }); + } + }