[BUG] Fix NeoForge Dedicated Server Crash
This commit is contained in:
@@ -1,32 +1,20 @@
|
|||||||
package com.hypherionmc.craterlib;
|
package com.hypherionmc.craterlib;
|
||||||
|
|
||||||
import com.hypherionmc.craterlib.api.events.client.LateInitEvent;
|
import com.hypherionmc.craterlib.client.NeoForgeClientHelper;
|
||||||
import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen;
|
|
||||||
import com.hypherionmc.craterlib.common.NeoForgeServerEvents;
|
import com.hypherionmc.craterlib.common.NeoForgeServerEvents;
|
||||||
import com.hypherionmc.craterlib.compat.Vanish;
|
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.CraterPacketNetwork;
|
||||||
import com.hypherionmc.craterlib.core.networking.PacketRegistry;
|
import com.hypherionmc.craterlib.core.networking.PacketRegistry;
|
||||||
import com.hypherionmc.craterlib.core.networking.data.PacketSide;
|
import com.hypherionmc.craterlib.core.networking.data.PacketSide;
|
||||||
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
|
import com.hypherionmc.craterlib.core.platform.ModloaderEnvironment;
|
||||||
import com.hypherionmc.craterlib.network.CraterNeoForgeNetworkHandler;
|
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.bus.api.IEventBus;
|
||||||
import net.neoforged.fml.ModList;
|
|
||||||
import net.neoforged.fml.common.Mod;
|
import net.neoforged.fml.common.Mod;
|
||||||
|
import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent;
|
||||||
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent;
|
||||||
import net.neoforged.fml.loading.FMLEnvironment;
|
|
||||||
import net.neoforged.fml.loading.FMLLoader;
|
import net.neoforged.fml.loading.FMLLoader;
|
||||||
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
|
||||||
import net.neoforged.neoforge.common.NeoForge;
|
import net.neoforged.neoforge.common.NeoForge;
|
||||||
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
@Mod(CraterConstants.MOD_ID)
|
@Mod(CraterConstants.MOD_ID)
|
||||||
public class CraterLib {
|
public class CraterLib {
|
||||||
|
|
||||||
@@ -35,6 +23,7 @@ public class CraterLib {
|
|||||||
public CraterLib(IEventBus eventBus) {
|
public CraterLib(IEventBus eventBus) {
|
||||||
NeoForge.EVENT_BUS.register(new NeoForgeServerEvents());
|
NeoForge.EVENT_BUS.register(new NeoForgeServerEvents());
|
||||||
eventBus.addListener(this::commonSetup);
|
eventBus.addListener(this::commonSetup);
|
||||||
|
eventBus.addListener(this::clientSetup);
|
||||||
handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER);
|
handler = new CraterNeoForgeNetworkHandler(FMLLoader.getDist().isClient() ? PacketSide.CLIENT : PacketSide.SERVER);
|
||||||
|
|
||||||
if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) {
|
if (ModloaderEnvironment.INSTANCE.isModLoaded("vmod")) {
|
||||||
@@ -44,16 +33,9 @@ public class CraterLib {
|
|||||||
|
|
||||||
public void commonSetup(FMLCommonSetupEvent evt) {
|
public void commonSetup(FMLCommonSetupEvent evt) {
|
||||||
new CraterPacketNetwork(handler);
|
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) -> {
|
public void clientSetup(FMLClientSetupEvent evt) {
|
||||||
if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) {
|
NeoForgeClientHelper.registerClient();
|
||||||
ModuleConfig config = (ModuleConfig) conf;
|
|
||||||
ModList.get().getModContainerById(config.getModId()).ifPresent(c -> c.registerExtensionPoint(IConfigScreenFactory.class, ((minecraft, screen) -> new CraterConfigScreen(config, screen))));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,11 +1,20 @@
|
|||||||
package com.hypherionmc.craterlib.client;
|
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.core.platform.ClientPlatform;
|
||||||
import com.hypherionmc.craterlib.nojang.client.BridgedMinecraft;
|
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.client.multiplayer.BridgedClientLevel;
|
||||||
import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
|
import com.hypherionmc.craterlib.nojang.world.entity.player.BridgedPlayer;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.network.Connection;
|
import net.minecraft.network.Connection;
|
||||||
|
import net.neoforged.fml.ModList;
|
||||||
|
import net.neoforged.neoforge.client.gui.IConfigScreenFactory;
|
||||||
|
|
||||||
import java.util.Objects;
|
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!");
|
Objects.requireNonNull(Minecraft.getInstance().getConnection(), "Cannot send packets when not in game!");
|
||||||
return Minecraft.getInstance().getConnection().getConnection();
|
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))));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
@@ -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))));
|
||||||
|
+ }
|
||||||
|
+ });
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user