String getLogDir(Configuration conf) { String logDir = conf.get("hive.log.dir"); if (logDir == null) { logDir = System.getProperty("hive.log.dir"); } if (logDir != null) { return logDir; } LoggerContext context = (LoggerContext) LogManager.getContext(false); for (Logger logger : context.getLoggers()) { for (Appender appender : logger.getAppenders().values()) { if (appender instanceof AbstractOutputStreamAppender) { OutputStreamManager manager = ((AbstractOutputStreamAppender<?>) appender).getManager(); if (manager instanceof FileManager) { String fileName = ((FileManager) manager).getFileName(); if (fileName != null) { return fileName.substring(0, fileName.lastIndexOf('/')); } } } } } return null; }
protected boolean init() throws java.net.UnknownHostException { // CraftBukkit - throws UnknownHostException ThreadCommandReader threadcommandreader = new ThreadCommandReader(this, "Server console handler"); threadcommandreader.setDaemon(true); threadcommandreader.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 i.info("Starting minecraft server version 1.7.10"); if (Runtime.getRuntime().maxMemory() / 1024L / 1024L < 512L) { i.warn( "To start the server with more ram, launch it as \"java -Xmx1024M -Xms1024M -jar minecraft_server.jar\""); } i.info("Loading properties"); this.propertyManager = new PropertyManager(this.options); // CraftBukkit - CLI argument support this.n = new EULA(new File("eula.txt")); if (!this.n.a()) { i.info( "You need to agree to the EULA in order to run the server. Go to eula.txt for more info."); this.n.b(); return false; } else { if (this.N()) { this.c("127.0.0.1"); } else { this.setOnlineMode(this.propertyManager.getBoolean("online-mode", true)); this.c(this.propertyManager.getString("server-ip", "")); } this.setSpawnAnimals(this.propertyManager.getBoolean("spawn-animals", true)); this.setSpawnNPCs(this.propertyManager.getBoolean("spawn-npcs", true)); this.setPvP(this.propertyManager.getBoolean("pvp", true)); this.setAllowFlight(this.propertyManager.getBoolean("allow-flight", false)); this.setTexturePack(this.propertyManager.getString("resource-pack", "")); this.setMotd(this.propertyManager.getString("motd", "A Minecraft Server")); this.setForceGamemode(this.propertyManager.getBoolean("force-gamemode", false)); this.setIdleTimeout(this.propertyManager.getInt("player-idle-timeout", 0)); if (this.propertyManager.getInt("difficulty", 1) < 0) { this.propertyManager.setProperty("difficulty", Integer.valueOf(0)); } else if (this.propertyManager.getInt("difficulty", 1) > 3) { this.propertyManager.setProperty("difficulty", Integer.valueOf(3)); } this.generateStructures = this.propertyManager.getBoolean("generate-structures", true); int gamemode = this.propertyManager.getInt( "gamemode", EnumGamemode.SURVIVAL .getId()); // CraftBukkit - Unique name to avoid stomping on logger this.p = WorldSettings.a(gamemode); // CraftBukkit - Use new name i.info("Default game type: " + this.p); InetAddress inetaddress = null; if (this.getServerIp().length() > 0) { inetaddress = InetAddress.getByName(this.getServerIp()); } if (this.L() < 0) { this.setPort(this.propertyManager.getInt("server-port", 25565)); } i.info("Generating keypair"); this.a(MinecraftEncryption.b()); i.info( "Starting Minecraft server on " + (this.getServerIp().length() == 0 ? "*" : this.getServerIp()) + ":" + this.L()); try { this.ai().a(inetaddress, this.L()); } catch (Throwable ioexception) { // CraftBukkit - IOException -> Throwable i.warn("**** FAILED TO BIND TO PORT!"); i.warn("The exception was: {}", new Object[] {ioexception.toString()}); i.warn("Perhaps a server is already running on that port?"); return false; } this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit if (!this.getOnlineMode()) { i.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!"); i.warn("The server will make no attempt to authenticate usernames. Beware."); i.warn( "While this makes the game possible to play without internet access, it also opens up the ability for hackers to connect with any username they choose."); i.warn("To change this, set \"online-mode\" to \"true\" in the server.properties file."); } if (this.aE()) { this.getUserCache().c(); } if (!NameReferencingFileConverter.a(this.propertyManager)) { return false; } else { // this.a((PlayerList) (new DedicatedPlayerList(this))); // CraftBukkit - moved up this.convertable = new WorldLoaderServer( server.getWorldContainer()); // CraftBukkit - moved from MinecraftServer constructor long j = System.nanoTime(); if (this.O() == null) { this.k(this.propertyManager.getString("level-name", "world")); } String s = this.propertyManager.getString("level-seed", ""); String s1 = this.propertyManager.getString("level-type", "DEFAULT"); String s2 = this.propertyManager.getString("generator-settings", ""); long k = (new Random()).nextLong(); if (s.length() > 0) { try { long l = Long.parseLong(s); if (l != 0L) { k = l; } } catch (NumberFormatException numberformatexception) { k = (long) s.hashCode(); } } WorldType worldtype = WorldType.getType(s1); if (worldtype == null) { worldtype = WorldType.NORMAL; } this.at(); this.getEnableCommandBlock(); this.l(); this.getSnooperEnabled(); this.c(this.propertyManager.getInt("max-build-height", 256)); this.c((this.getMaxBuildHeight() + 8) / 16 * 16); this.c(MathHelper.a(this.getMaxBuildHeight(), 64, 256)); this.propertyManager.setProperty( "max-build-height", Integer.valueOf(this.getMaxBuildHeight())); i.info("Preparing level \"" + this.O() + "\""); this.a(this.O(), this.O(), k, worldtype, s2); long i1 = System.nanoTime() - j; String s3 = String.format("%.3fs", new Object[] {Double.valueOf((double) i1 / 1.0E9D)}); i.info("Done (" + s3 + ")! For help, type \"help\" or \"?\""); if (this.propertyManager.getBoolean("enable-query", false)) { i.info("Starting GS4 status listener"); this.k = new RemoteStatusListener(this); this.k.a(); } if (this.propertyManager.getBoolean("enable-rcon", false)) { i.info("Starting remote control listener"); this.l = new RemoteControlListener(this); this.l.a(); this.remoteConsole = new org.bukkit.craftbukkit.command.CraftRemoteConsoleCommandSender(); // CraftBukkit } // CraftBukkit start if (this.server.getBukkitSpawnRadius() > -1) { i.info( "'settings.spawn-radius' in bukkit.yml has been moved to 'spawn-protection' in server.properties. I will move your config for you."); this.propertyManager.properties.remove("spawn-protection"); this.propertyManager.getInt("spawn-protection", this.server.getBukkitSpawnRadius()); this.server.removeBukkitSpawnRadius(); this.propertyManager.savePropertiesFile(); } // CraftBukkit end return true; } } }