diff --git a/CraftBukkit-Patches/0087-Add-Late-Bind-Option.patch b/CraftBukkit-Patches/0087-Add-Late-Bind-Option.patch new file mode 100644 index 0000000000..58adba4e40 --- /dev/null +++ b/CraftBukkit-Patches/0087-Add-Late-Bind-Option.patch @@ -0,0 +1,74 @@ +From 8be2e6bb5953a4b90a6226546775e9746a65516e Mon Sep 17 00:00:00 2001 +From: slide23 +Date: Fri, 20 Dec 2013 20:15:33 -0600 +Subject: [PATCH] Add Late Bind Option + +Add late-bind config option to delay binding until loading is done. + +diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java +old mode 100644 +new mode 100755 +index c9bb3a6..8ec6474 +--- a/src/main/java/net/minecraft/server/DedicatedServer.java ++++ b/src/main/java/net/minecraft/server/DedicatedServer.java +@@ -119,13 +119,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + this.a(MinecraftEncryption.b()); + h.info("Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.J()); + +- try { +- this.ag().a(inetaddress, this.J()); +- } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable +- h.warn("**** FAILED TO BIND TO PORT!"); +- h.warn("The exception was: {}", new Object[] { ioexception.toString()}); +- h.warn("Perhaps a server is already running on that port?"); +- return false; ++ if (!org.spigotmc.SpigotConfig.lateBind) { ++ try { ++ this.ag().a(inetaddress, this.J()); ++ } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable ++ h.warn("**** FAILED TO BIND TO PORT!"); ++ h.warn("The exception was: {}", new Object[] { ioexception.toString()}); ++ h.warn("Perhaps a server is already running on that port?"); ++ return false; ++ } + } + + // Spigot Start - Move DedicatedPlayerList up and bring plugin loading from CraftServer to here +@@ -186,6 +188,18 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer + String s3 = String.format("%.3fs", new Object[] { Double.valueOf((double) i1 / 1.0E9D)}); + + h.info("Done (" + s3 + ")! For help, type \"help\" or \"?\""); ++ ++ if (org.spigotmc.SpigotConfig.lateBind) { ++ try { ++ this.ag().a(inetaddress, this.J()); ++ } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable ++ h.warn("**** FAILED TO BIND TO PORT!"); ++ h.warn("The exception was: {}", new Object[] { ioexception.toString()}); ++ h.warn("Perhaps a server is already running on that port?"); ++ return false; ++ } ++ } ++ + if (this.propertyManager.getBoolean("enable-query", false)) { + h.info("Starting GS4 status listener"); + this.j = new RemoteStatusListener(this); +diff --git a/src/main/java/org/spigotmc/SpigotConfig.java b/src/main/java/org/spigotmc/SpigotConfig.java +old mode 100644 +new mode 100755 +index 628533e..cb5002f +--- a/src/main/java/org/spigotmc/SpigotConfig.java ++++ b/src/main/java/org/spigotmc/SpigotConfig.java +@@ -215,4 +215,9 @@ public class SpigotConfig + VanillaCommandWrapper.allowedCommands.add( command ); + } + } ++ ++ public static boolean lateBind; ++ private static void lateBind() { ++ lateBind = getBoolean( "settings.late-bind", false ); ++ } + } +-- +1.8.3.2 +