From 3d604166e856f0ffa102d327a354f459fee747a9 Mon Sep 17 00:00:00 2001 From: CraftBukkit/Spigot Date: Thu, 18 Apr 2013 17:50:05 -0700 Subject: [PATCH] Wrap plugin.getDefaultWorldGenerator in try-catch. Fixes BUKKIT-4116 If a plugin generates an exception when returning a world generator, the server will crash. This change adds a try-catch block to keep the server from crashing on plugin defined world generators. By: riking --- .../main/java/org/bukkit/craftbukkit/CraftServer.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 51afd2564..df2efe2c3 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1014,9 +1014,13 @@ public final class CraftServer implements Server { } else if (!plugin.isEnabled()) { getLogger().severe("Could not set generator for default world '" + world + "': Plugin '" + plugin.getDescription().getFullName() + "' is not enabled yet (is it load:STARTUP?)"); } else { - result = plugin.getDefaultWorldGenerator(world, id); - if (result == null) { - getLogger().severe("Could not set generator for default world '" + world + "': Plugin '" + plugin.getDescription().getFullName() + "' lacks a default world generator"); + try { + result = plugin.getDefaultWorldGenerator(world, id); + if (result == null) { + getLogger().severe("Could not set generator for default world '" + world + "': Plugin '" + plugin.getDescription().getFullName() + "' lacks a default world generator"); + } + } catch (Throwable t) { + plugin.getLogger().log(Level.SEVERE, "Could not set generator for default world '" + world + "': Plugin '" + plugin.getDescription().getFullName(), t); } } }