Possible fix for -nojline printing blank lines

This commit is contained in:
Dinnerbone 2011-05-19 21:46:47 +01:00
parent 480c1b9877
commit 6319a19073
3 changed files with 22 additions and 14 deletions

View File

@ -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

View File

@ -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();

View File

@ -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);
}