Skip to content

Commit b4346be

Browse files
committed
Fix server crashing if mod throws exception during initialisation
1 parent fea324d commit b4346be

4 files changed

Lines changed: 32 additions & 6 deletions

File tree

bukkit/src/main/java/com/cssbham/cssminecraft/bukkit/CSSMinecraftLoader.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.cssbham.cssminecraft.bukkit;
22

3+
import org.bukkit.Bukkit;
34
import org.bukkit.plugin.java.JavaPlugin;
45

56
/**
@@ -15,7 +16,12 @@ public CSSMinecraftLoader() {
1516

1617
@Override
1718
public void onEnable() {
18-
plugin.enable();
19+
try {
20+
plugin.enable();
21+
} catch (Exception e) {
22+
plugin.getLogger().severe("Plugin initialisation failed - disabling");
23+
Bukkit.getPluginManager().disablePlugin(this);
24+
}
1925
}
2026

2127
@Override

common/src/main/java/com/cssbham/cssminecraft/common/AbstractCSSMinecraftPlugin.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,12 @@ public void enable() {
4747
this.eventBus = new SimpleEventBus(logger);
4848

4949
this.discordClientService = new DiscordClientService(configService, eventBus, logger);
50-
discordClientService.initialiseClients();
50+
try {
51+
discordClientService.initialiseClients();
52+
} catch (Exception e) {
53+
logger.severe(String.format("Failed to initialise Discord clients: %s", e.getMessage()));
54+
throw e;
55+
}
5156

5257
eventBus.subscribe(ServerMessageEvent.class, new ServerMessageEventHandler(discordClientService));
5358
eventBus.subscribe(PlayerJoinEvent.class, new PlayerJoinEventHandler(discordClientService));

fabric/src/main/java/com/cssbham/cssminecraft/fabric/CSSMinecraftLoader.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,12 @@ public void onInitializeServer() {
2323

2424
private void onStart(MinecraftServer server) {
2525
this.plugin.setServer(server);
26-
this.plugin.enable();
26+
try {
27+
this.plugin.enable();
28+
} catch (Exception e) {
29+
this.plugin.getLogger().severe("Mod initialisation failed - disabling");
30+
this.plugin.disable();
31+
}
2732
}
2833

2934
private void onStop(MinecraftServer server) {

forge/src/main/java/com/cssbham/cssminecraft/forge/CSSMinecraftLoader.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package com.cssbham.cssminecraft.forge;
22

33
import net.minecraftforge.common.MinecraftForge;
4-
import net.minecraftforge.event.server.ServerStartedEvent;
4+
import net.minecraftforge.event.server.ServerStartingEvent;
5+
import net.minecraftforge.event.server.ServerStoppingEvent;
56
import net.minecraftforge.fml.common.Mod;
67

78
/**
@@ -17,9 +18,18 @@ public CSSMinecraftLoader() {
1718
MinecraftForge.EVENT_BUS.addListener(this::onServerStarted);
1819
}
1920

20-
public void onServerStarted(ServerStartedEvent event) {
21+
public void onServerStarted(ServerStartingEvent event) {
2122
this.plugin.setServer(event.getServer());
22-
this.plugin.enable();
23+
try {
24+
this.plugin.enable();
25+
} catch (Exception e) {
26+
this.plugin.getLogger().severe("Mod initialisation failed - disabling");
27+
this.plugin.disable();
28+
}
29+
}
30+
31+
public void onServerStopping(ServerStoppingEvent event) {
32+
this.plugin.disable();
2333
}
2434

2535
}

0 commit comments

Comments
 (0)