From 6319a19073b10bc5f2d16ac7ce104b5ced267cdc Mon Sep 17 00:00:00 2001 From: Dinnerbone Date: Thu, 19 May 2011 21:46:47 +0100 Subject: [PATCH] Possible fix for -nojline printing blank lines --- .../minecraft/server/ThreadCommandReader.java | 8 +++---- .../java/org/bukkit/craftbukkit/Main.java | 7 +++++-- .../util/TerminalConsoleHandler.java | 21 ++++++++++++------- 3 files changed, 22 insertions(+), 14 deletions(-) diff --git a/src/main/java/net/minecraft/server/ThreadCommandReader.java b/src/main/java/net/minecraft/server/ThreadCommandReader.java index 0158e96a0f..670aff768e 100644 --- a/src/main/java/net/minecraft/server/ThreadCommandReader.java +++ b/src/main/java/net/minecraft/server/ThreadCommandReader.java @@ -8,6 +8,7 @@ import java.io.InputStreamReader; import java.util.logging.Level; import java.util.logging.Logger; import jline.ConsoleReader; +import org.bukkit.craftbukkit.Main; // CraftBukkit end public class ThreadCommandReader extends Thread { @@ -22,16 +23,15 @@ public class ThreadCommandReader extends Thread { // CraftBukkit start ConsoleReader bufferedreader = this.server.reader; String s = null; - String jlineTerminalSetting = org.bukkit.craftbukkit.Main.jlineTerminalSetting; // CraftBukkit end try { while (!this.server.isStopped && MinecraftServer.isRunning(this.server)) { // CraftBukkit start - JLine disabling compatibility - if (jlineTerminalSetting != null && jlineTerminalSetting.equals("jline.UnsupportedTerminal")) { - s = bufferedreader.readLine(); - } else { + if (Main.useJline) { s = bufferedreader.readLine(">", null); + } else { + s = bufferedreader.readLine(); } if (s != null) { // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java index 9f8708dfac..3ec19b46f8 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java @@ -12,7 +12,7 @@ import joptsimple.OptionSet; import net.minecraft.server.MinecraftServer; public class Main { - public static String jlineTerminalSetting; + public static boolean useJline = true; public static void main(String[] args) { // Todo: Installation script @@ -88,11 +88,14 @@ public class Main { } } else { try { + useJline = !"jline.UnsupportedTerminal".equals(System.getProperty("jline.terminal")); + if (options.has("nojline")) { System.setProperty("jline.terminal", "jline.UnsupportedTerminal"); System.setProperty("user.language", "en"); + useJline = false; } - jlineTerminalSetting = System.getProperty("jline.terminal"); + MinecraftServer.main(options); } catch (Throwable t) { t.printStackTrace(); diff --git a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleHandler.java b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleHandler.java index 43bc392f3d..111123f5cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleHandler.java +++ b/src/main/java/org/bukkit/craftbukkit/util/TerminalConsoleHandler.java @@ -5,6 +5,7 @@ import java.util.logging.ConsoleHandler; import java.util.logging.Level; import java.util.logging.Logger; import jline.ConsoleReader; +import org.bukkit.craftbukkit.Main; public class TerminalConsoleHandler extends ConsoleHandler { private final ConsoleReader reader; @@ -17,15 +18,19 @@ public class TerminalConsoleHandler extends ConsoleHandler { @Override public synchronized void flush() { try { - reader.printString(ConsoleReader.RESET_LINE + ""); - reader.flushConsole(); - super.flush(); - try { - reader.drawLine(); - } catch (Throwable ex) { - reader.getCursorBuffer().clearBuffer(); + if (Main.useJline) { + reader.printString(ConsoleReader.RESET_LINE + ""); + reader.flushConsole(); + super.flush(); + try { + reader.drawLine(); + } catch (Throwable ex) { + reader.getCursorBuffer().clearBuffer(); + } + reader.flushConsole(); + } else { + super.flush(); } - reader.flushConsole(); } catch (IOException ex) { Logger.getLogger(TerminalConsoleHandler.class.getName()).log(Level.SEVERE, null, ex); }