You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
252 lines
11 KiB
252 lines
11 KiB
--- ../src-base/minecraft/net/minecraft/server/dedicated/DedicatedServer.java |
|
+++ ../src-work/minecraft/net/minecraft/server/dedicated/DedicatedServer.java |
|
@@ -34,9 +34,19 @@ |
|
import net.minecraft.world.World; |
|
import net.minecraft.world.WorldSettings; |
|
import net.minecraft.world.WorldType; |
|
+import net.minecraft.world.chunk.storage.AnvilSaveConverter; |
|
import org.apache.logging.log4j.LogManager; |
|
import org.apache.logging.log4j.Logger; |
|
|
|
+// CraftBukkit start |
|
+import java.io.PrintStream; |
|
+import org.apache.logging.log4j.Level; |
|
+ |
|
+import org.bukkit.craftbukkit.LoggerOutputStream; |
|
+import org.bukkit.craftbukkit.SpigotTimings; // Spigot |
|
+import org.bukkit.event.server.ServerCommandEvent; |
|
+// CraftBukkit end |
|
+ |
|
@SideOnly(Side.SERVER) |
|
public class DedicatedServer extends MinecraftServer implements IServer |
|
{ |
|
@@ -44,7 +54,7 @@ |
|
public final List pendingCommandList = Collections.synchronizedList(new ArrayList()); |
|
private RConThreadQuery theRConThreadQuery; |
|
private RConThreadMain theRConThreadMain; |
|
- private PropertyManager settings; |
|
+ public PropertyManager settings; // CraftBukkit - private -> public |
|
private ServerEula field_154332_n; |
|
private boolean canSpawnStructures; |
|
private WorldSettings.GameType gameType; |
|
@@ -52,10 +62,13 @@ |
|
public static boolean allowPlayerLogins = false; |
|
private static final String __OBFID = "CL_00001784"; |
|
|
|
- public DedicatedServer(File p_i1508_1_) |
|
+ // CraftBukkit start - Signature changed |
|
+ public DedicatedServer(joptsimple.OptionSet options) |
|
{ |
|
- super(p_i1508_1_, Proxy.NO_PROXY); |
|
- Thread thread = new Thread("Server Infinisleeper") |
|
+ super(options, Proxy.NO_PROXY); |
|
+ // super(p_i1508_1_, Proxy.NO_PROXY); |
|
+ // CraftBukkit end |
|
+ new Thread("Server Infinisleeper") |
|
{ |
|
private static final String __OBFID = "CL_00001787"; |
|
{ |
|
@@ -82,31 +95,77 @@ |
|
}; |
|
} |
|
|
|
- protected boolean startServer() throws IOException |
|
+ protected boolean startServer() throws java.net.UnknownHostException // CraftBukkit - throws UnknownHostException |
|
{ |
|
Thread thread = new Thread("Server console handler") |
|
{ |
|
private static final String __OBFID = "CL_00001786"; |
|
+ final DedicatedServer server = DedicatedServer.this; |
|
public void run() |
|
{ |
|
- BufferedReader bufferedreader = new BufferedReader(new InputStreamReader(System.in)); |
|
- String s4; |
|
+ // CraftBukkit start |
|
+ if (!useConsole) |
|
+ { |
|
+ return; |
|
+ } |
|
+ // CraftBukkit end |
|
|
|
+ jline.console.ConsoleReader bufferedreader = this.server.reader; // CraftBukkit |
|
+ String s; |
|
+ |
|
try |
|
{ |
|
- while (!DedicatedServer.this.isServerStopped() && DedicatedServer.this.isServerRunning() && (s4 = bufferedreader.readLine()) != null) |
|
+ // CraftBukkit start - JLine disabling compatibility |
|
+ while (!this.server.isServerStopped() && this.server.isServerRunning()) |
|
{ |
|
- DedicatedServer.this.addPendingCommand(s4, DedicatedServer.this); |
|
+ if (useJline) |
|
+ { |
|
+ s = bufferedreader.readLine(">", null); |
|
+ } |
|
+ else |
|
+ { |
|
+ s = bufferedreader.readLine(); |
|
+ } |
|
+ if (s != null) |
|
+ { |
|
+ this.server.addPendingCommand(s, this.server); |
|
+ } |
|
+ // CraftBukkit end |
|
} |
|
+ |
|
} |
|
- catch (IOException ioexception1) |
|
+ catch (IOException ioexception) |
|
{ |
|
- DedicatedServer.field_155771_h.error("Exception handling console input", ioexception1); |
|
+ DedicatedServer.field_155771_h.error("Exception handling console input", ioexception); |
|
} |
|
} |
|
}; |
|
thread.setDaemon(true); |
|
thread.start(); |
|
+ // CraftBukkit start - TODO: handle command-line logging arguments |
|
+ java.util.logging.Logger global = java.util.logging.Logger.getLogger(""); |
|
+ global.setUseParentHandlers(false); |
|
+ |
|
+ for (java.util.logging.Handler handler : global.getHandlers()) |
|
+ { |
|
+ global.removeHandler(handler); |
|
+ } |
|
+ |
|
+ global.addHandler(new org.bukkit.craftbukkit.util.ForwardLogHandler()); |
|
+ final org.apache.logging.log4j.core.Logger logger = ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()); |
|
+ |
|
+ for (org.apache.logging.log4j.core.Appender appender : logger.getAppenders().values()) |
|
+ { |
|
+ if (appender instanceof org.apache.logging.log4j.core.appender.ConsoleAppender) |
|
+ { |
|
+ logger.removeAppender(appender); |
|
+ } |
|
+ } |
|
+ |
|
+ new Thread(new org.bukkit.craftbukkit.util.TerminalConsoleWriterThread(System.out, this.reader)).start(); |
|
+ System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); |
|
+ System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); |
|
+ // CraftBukkit end |
|
field_155771_h.info("Starting minecraft server version 1.7.10"); |
|
|
|
if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) |
|
@@ -117,7 +176,7 @@ |
|
FMLCommonHandler.instance().onServerStart(this); |
|
|
|
field_155771_h.info("Loading properties"); |
|
- this.settings = new PropertyManager(new File("server.properties")); |
|
+ this.settings = new PropertyManager(this.options); // CraftBukkit - CLI argument support |
|
this.field_154332_n = new ServerEula(new File("eula.txt")); |
|
|
|
if (!this.field_154332_n.func_154346_a()) |
|
@@ -172,6 +231,17 @@ |
|
this.setServerPort(this.settings.getIntProperty("server-port", 25565)); |
|
} |
|
|
|
+ // Spigot start |
|
+ this.func_152361_a((ServerConfigurationManager) (new DedicatedPlayerList(this))); |
|
+ org.spigotmc.SpigotConfig.init(); |
|
+ org.spigotmc.SpigotConfig.registerCommands(); |
|
+ // Spigot end |
|
+ // Cauldron start |
|
+ kcauldronConfig.registerCommands(); |
|
+ cauldronConfig.registerCommands(); |
|
+ tileEntityConfig.registerCommands(); |
|
+ // Cauldron end |
|
+ |
|
field_155771_h.info("Generating keypair"); |
|
this.setKeyPair(CryptManager.createNewKeyPair()); |
|
field_155771_h.info("Starting Minecraft server on " + (this.getServerHostname().length() == 0 ? "*" : this.getServerHostname()) + ":" + this.getServerPort()); |
|
@@ -180,7 +250,7 @@ |
|
{ |
|
this.func_147137_ag().addLanEndpoint(inetaddress, this.getServerPort()); |
|
} |
|
- catch (IOException ioexception) |
|
+ catch (Throwable ioexception) // CraftBukkit - IOException -> Throwable |
|
{ |
|
field_155771_h.warn("**** FAILED TO BIND TO PORT!"); |
|
field_155771_h.warn("The exception was: {}", new Object[] {ioexception.toString()}); |
|
@@ -196,10 +266,17 @@ |
|
field_155771_h.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file."); |
|
} |
|
|
|
- if (this.func_152368_aE()) |
|
+ try |
|
{ |
|
- this.func_152358_ax().func_152658_c(); |
|
+ if (this.func_152368_aE()) |
|
+ { |
|
+ this.func_152358_ax().func_152658_c(); |
|
+ } |
|
} |
|
+ catch (IOException e) |
|
+ { |
|
+ e.printStackTrace(); |
|
+ } |
|
|
|
if (!PreYggdrasilConverter.func_152714_a(this.settings)) |
|
{ |
|
@@ -208,7 +285,8 @@ |
|
else |
|
{ |
|
FMLCommonHandler.instance().onServerStarted(); |
|
- this.func_152361_a(new DedicatedPlayerList(this)); |
|
+ // this.func_152361_a(new DedicatedPlayerList(this)); // CraftBukkit - moved up |
|
+ this.anvilConverterForAnvilFile = new AnvilSaveConverter(server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor |
|
long j = System.nanoTime(); |
|
|
|
if (this.getFolderName() == null) |
|
@@ -274,11 +352,30 @@ |
|
this.theRConThreadMain.startThread(); |
|
} |
|
|
|
+ // CraftBukkit start |
|
+ if (this.server.getBukkitSpawnRadius() > -1) |
|
+ { |
|
+ field_155771_h |
|
+ .info("'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you."); |
|
+ this.settings.serverProperties.remove("spawn-protection"); |
|
+ this.settings.getIntProperty("spawn-protection", this.server.getBukkitSpawnRadius()); |
|
+ this.server.removeBukkitSpawnRadius(); |
|
+ this.settings.saveProperties(); |
|
+ } |
|
+ // CraftBukkit end |
|
+ |
|
return FMLCommonHandler.instance().handleServerStarting(this); |
|
} |
|
} |
|
} |
|
|
|
+ // CraftBukkit start |
|
+ public PropertyManager getPropertyManager() |
|
+ { |
|
+ return this.settings; |
|
+ } |
|
+ // CraftBukkit end |
|
+ |
|
public boolean canStructuresSpawn() |
|
{ |
|
return this.canSpawnStructures; |
|
@@ -364,11 +461,19 @@ |
|
|
|
public void executePendingCommands() |
|
{ |
|
+ SpigotTimings.serverCommandTimer.startTiming(); // Spigot |
|
while (!this.pendingCommandList.isEmpty()) |
|
{ |
|
- ServerCommand servercommand = (ServerCommand)this.pendingCommandList.remove(0); |
|
- this.getCommandManager().executeCommand(servercommand.sender, servercommand.command); |
|
+ ServerCommand servercommand = (ServerCommand) this.pendingCommandList.remove(0); |
|
+ // CraftBukkit start - ServerCommand for preprocessing |
|
+ ServerCommandEvent event = new ServerCommandEvent(this.console, servercommand.command); |
|
+ this.server.getPluginManager().callEvent(event); |
|
+ servercommand = new ServerCommand(event.getCommand(), servercommand.sender); |
|
+ // this.getCommandManager().executeCommand(servercommand.sender, servercommand.command); // Called in dispatchServerCommand |
|
+ this.server.dispatchServerCommand(this.console, servercommand); |
|
+ // CraftBukkit end |
|
} |
|
+ SpigotTimings.serverCommandTimer.stopTiming(); // Spigot |
|
} |
|
|
|
public boolean isDedicatedServer()
|
|
|