|
1 | 1 | package tc.oc.pgm.server; |
2 | 2 |
|
| 3 | +import com.destroystokyo.paper.console.PaperConsole; |
3 | 4 | import com.google.common.collect.Lists; |
4 | 5 | import java.io.File; |
5 | 6 | import java.io.IOException; |
6 | | -import java.io.PrintStream; |
7 | 7 | import java.net.InetAddress; |
8 | | -import java.util.Iterator; |
9 | 8 | import java.util.logging.Handler; |
10 | 9 | import java.util.stream.Collectors; |
11 | 10 | import java.util.stream.Stream; |
|
16 | 15 | import net.minecraft.server.v1_8_R3.WorldLoaderServer; |
17 | 16 | import net.minecraft.server.v1_8_R3.WorldSettings; |
18 | 17 | import net.minecraft.server.v1_8_R3.WorldType; |
19 | | -import org.apache.log4j.BasicConfigurator; |
20 | 18 | import org.apache.logging.log4j.Level; |
21 | 19 | import org.apache.logging.log4j.LogManager; |
22 | 20 | import org.apache.logging.log4j.Logger; |
23 | | -import org.apache.logging.log4j.core.appender.ConsoleAppender; |
| 21 | +import org.apache.logging.log4j.io.IoBuilder; |
24 | 22 | import org.bukkit.craftbukkit.libs.joptsimple.OptionParser; |
25 | | -import org.bukkit.craftbukkit.v1_8_R3.LoggerOutputStream; |
26 | 23 | import org.bukkit.craftbukkit.v1_8_R3.util.ForwardLogHandler; |
27 | | -import org.bukkit.craftbukkit.v1_8_R3.util.TerminalConsoleWriterThread; |
28 | 24 | import org.bukkit.plugin.InvalidDescriptionException; |
29 | 25 | import org.bukkit.plugin.Plugin; |
30 | 26 | import org.bukkit.plugin.PluginDescriptionFile; |
31 | 27 | import org.bukkit.plugin.PluginLoadOrder; |
32 | | -import org.fusesource.jansi.AnsiConsole; |
33 | 28 | import org.spigotmc.SpigotConfig; |
34 | 29 | import tc.oc.pgm.util.reflect.ReflectionUtils; |
35 | 30 |
|
|
42 | 37 | public class PGMServer extends DedicatedServer implements Runnable { |
43 | 38 |
|
44 | 39 | public static void main(String[] args) throws InvalidDescriptionException { |
45 | | - BasicConfigurator.configure(); |
46 | 40 | new PGMServer(new PluginDescriptionFile( |
47 | 41 | Thread.currentThread().getContextClassLoader().getResourceAsStream("plugin.yml"))) |
48 | 42 | .run(); |
@@ -109,56 +103,27 @@ protected boolean init() throws IOException { |
109 | 103 | } |
110 | 104 |
|
111 | 105 | protected Logger setupLogger() { |
112 | | - AnsiConsole.systemInstall(); |
113 | | - |
114 | 106 | final java.util.logging.Logger global = java.util.logging.Logger.getLogger(""); |
115 | 107 | global.setUseParentHandlers(false); |
116 | 108 |
|
117 | | - final Handler[] handlers = global.getHandlers(); |
118 | | - for (int i = 0; i < handlers.length; ++i) { |
119 | | - global.removeHandler(handlers[i]); |
| 109 | + for (Handler handler : global.getHandlers()) { |
| 110 | + global.removeHandler(handler); |
120 | 111 | } |
121 | 112 |
|
122 | 113 | global.addHandler(new ForwardLogHandler()); |
123 | | - org.apache.logging.log4j.Logger logger = LogManager.getRootLogger(); |
124 | | - |
125 | | - if (logger instanceof org.apache.logging.log4j.core.Logger) { |
126 | | - final Iterator<org.apache.logging.log4j.core.Appender> appenders = |
127 | | - ((org.apache.logging.log4j.core.Logger) logger) |
128 | | - .getAppenders() |
129 | | - .values() |
130 | | - .iterator(); |
131 | | - while (appenders.hasNext()) { |
132 | | - final org.apache.logging.log4j.core.Appender appender = appenders.next(); |
133 | | - if (appender instanceof ConsoleAppender) { |
134 | | - ((org.apache.logging.log4j.core.Logger) logger).removeAppender(appender); |
135 | | - } |
136 | | - } |
137 | | - } |
138 | | - |
139 | | - new Thread(new TerminalConsoleWriterThread(System.out, reader)).start(); |
140 | | - System.setOut(new PrintStream(new LoggerOutputStream(logger, Level.INFO), true)); |
141 | | - System.setErr(new PrintStream(new LoggerOutputStream(logger, Level.WARN), true)); |
| 114 | + final Logger logger = LogManager.getRootLogger(); |
142 | 115 |
|
143 | | - BasicConfigurator.resetConfiguration(); |
| 116 | + System.setOut(IoBuilder.forLogger(logger).setLevel(Level.INFO).buildPrintStream()); |
| 117 | + System.setErr(IoBuilder.forLogger(logger).setLevel(Level.WARN).buildPrintStream()); |
144 | 118 |
|
145 | | - var actualLogger = ReflectionUtils.readStaticField( |
146 | | - DedicatedServer.class, org.apache.logging.log4j.Logger.class, "LOGGER"); |
| 119 | + var actualLogger = |
| 120 | + ReflectionUtils.readStaticField(DedicatedServer.class, Logger.class, "LOGGER"); |
147 | 121 | return actualLogger != null ? actualLogger : logger; |
148 | 122 | } |
149 | 123 |
|
150 | 124 | protected void setupConsole() { |
151 | 125 | final Thread console = new Thread(() -> { |
152 | | - try { |
153 | | - while (!isStopped() && isRunning()) { |
154 | | - final String command = reader.readLine(">", null); |
155 | | - if (command != null && !command.trim().isEmpty()) { |
156 | | - issueCommand(command, this); |
157 | | - } |
158 | | - } |
159 | | - } catch (IOException io) { |
160 | | - safeShutdown(); |
161 | | - } |
| 126 | + new PaperConsole(PGMServer.this).start(); |
162 | 127 | }); |
163 | 128 | console.setDaemon(true); |
164 | 129 | console.start(); |
@@ -208,6 +173,7 @@ protected void setupPlugins() { |
208 | 173 | if (rewind != null) { |
209 | 174 | loader.togglePlugin(rewind, true); |
210 | 175 | } |
| 176 | + |
211 | 177 | final Plugin backwards = server.getPluginManager().getPlugin("ViaBackwards"); |
212 | 178 | if (backwards != null) { |
213 | 179 | loader.togglePlugin(backwards, true); |
|
0 commit comments