diff --git a/pom.xml b/pom.xml
index e992e4c..185451d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
Limbo
Limbo
- 0.3.0-ALPHA
+ 0.3.1-ALPHA
src
@@ -68,31 +68,48 @@
com.github.Querz
NBT
5.5
+ compile
com.google.code.gson
gson
2.8.5
+ compile
org.yaml
snakeyaml
1.26
+ compile
com.googlecode.json-simple
json-simple
1.1.1
+ compile
net.md-5
bungeecord-chat
1.16-R0.3
+ compile
+
+
+ org.fusesource.jansi
+ jansi
+ 1.18
+ compile
+
+
+ org.jline
+ jline
+ 3.16.0
+ compile
jline
jline
- 2.6
+ 2.11
compile
diff --git a/src/com/loohp/limbo/Console.java b/src/com/loohp/limbo/Console.java
index 29cefa9..73eb405 100644
--- a/src/com/loohp/limbo/Console.java
+++ b/src/com/loohp/limbo/Console.java
@@ -1,36 +1,59 @@
package com.loohp.limbo;
-import java.io.BufferedReader;
import java.io.File;
-import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
-import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
import java.util.Locale;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.stream.Collectors;
+import org.fusesource.jansi.Ansi;
+import org.fusesource.jansi.Ansi.Attribute;
+import org.jline.reader.Candidate;
+import org.jline.reader.Completer;
+import org.jline.reader.LineReader;
+import org.jline.reader.LineReader.SuggestionType;
+import org.jline.reader.LineReaderBuilder;
+import org.jline.reader.ParsedLine;
+import org.jline.terminal.Terminal;
+import org.jline.terminal.TerminalBuilder;
+
import com.loohp.limbo.Commands.CommandSender;
import com.loohp.limbo.GUI.ConsoleTextOutput;
import com.loohp.limbo.Utils.CustomStringUtils;
+import jline.console.ConsoleReader;
+import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.BaseComponent;
public class Console implements CommandSender {
+ protected static final Map replacements = new HashMap<>();
+ private final static String CONSOLE = "CONSOLE";
+ private final static String PROMPT = "> ";
+ protected final static String ERROR_RED = "\u001B[31;1m";
+ protected final static String RESET_COLOR = "\u001B[0m";
+
+ private Terminal terminal;
+ private LineReader tabReader;
+ private ConsoleReader reader;
+
private InputStream in;
+ @SuppressWarnings("unused")
private PrintStream out;
@SuppressWarnings("unused")
private PrintStream err;
protected PrintStream logs;
- private final String CONSOLE = "CONSOLE";
-
- public Console(InputStream in, PrintStream out, PrintStream err) throws FileNotFoundException {
+ public Console(InputStream in, PrintStream out, PrintStream err) throws IOException {
String fileName = new SimpleDateFormat("yyyy'-'MM'-'dd'_'HH'-'mm'-'ss'_'zzz'.log'").format(new Date());
File dir = new File("logs");
dir.mkdirs();
@@ -43,20 +66,38 @@ public class Console implements CommandSender {
} else {
this.in = null;
}
- System.setOut(new ConsoleOutputStream(out == null ? new PrintStream(new PrintStream(new OutputStream() {
+ System.setOut(new ConsoleOutputStream(this, out == null ? new PrintStream(new OutputStream() {
@Override
public void write(int b) {
//DO NOTHING
}
- })) : out, this.logs));
+ }) : out, this.logs));
this.out = System.out;
- System.setErr(new ConsoleErrorStream(err == null ? new PrintStream(new PrintStream(new OutputStream() {
+
+ System.setErr(new ConsoleErrorStream(this, err == null ? new PrintStream(new OutputStream() {
@Override
public void write(int b) {
//DO NOTHING
}
- })) : err, this.logs));
+ }) : err, this.logs));
this.err = System.err;
+
+ reader = new ConsoleReader(in, out);
+ reader.setExpandEvents(false);
+
+
+ terminal = TerminalBuilder.builder().streams(in, out).system(true).jansi(true).build();
+ tabReader = LineReaderBuilder.builder().terminal(terminal).completer(new Completer() {
+ @Override
+ public void complete(LineReader reader, ParsedLine line, List candidates) {
+ String[] args = CustomStringUtils.splitStringToArgs(line.line());
+ List tab = Limbo.getInstance().getPluginManager().getTabOptions(Limbo.getInstance().getConsole(), args);
+ for (String each : tab) {
+ candidates.add(new Candidate(each));
+ }
+ }
+ }).build();
+ tabReader.setAutosuggestion(SuggestionType.NONE);
}
public String getName() {
@@ -78,236 +119,348 @@ public class Console implements CommandSender {
}
public void sendMessage(String message) {
- out.println(message);
+ stashLine();
+ String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + message), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info] " + message));
+ try {
+ reader.getOutput().append("[" + date + " Info] " + translateToConsole(message) + "\n");
+ reader.getOutput().flush();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ unstashLine();
}
protected void run() {
if (in == null) {
return;
}
- BufferedReader reader = new BufferedReader(new InputStreamReader(in));
while (true) {
- try {
- String command = reader.readLine();
- if (command.length() > 0) {
- String[] input = CustomStringUtils.splitStringToArgs(command);
- Limbo.getInstance().dispatchCommand(this, input);
- }
- } catch (IOException e) {
- e.printStackTrace();
+ String command = tabReader.readLine(PROMPT);
+ if (command.length() > 0) {
+ String[] input = CustomStringUtils.splitStringToArgs(command);
+ new Thread(() -> Limbo.getInstance().dispatchCommand(this, input)).start();
}
}
}
+ protected void stashLine() {
+ try {
+ tabReader.callWidget(LineReader.CLEAR);
+ } catch (Exception ignore) {}
+ }
+
+ protected void unstashLine() {
+ try {
+ tabReader.callWidget(LineReader.REDRAW_LINE);
+ tabReader.callWidget(LineReader.REDISPLAY);
+ tabReader.getTerminal().writer().flush();
+ } catch (Exception ignore) {}
+ }
+
+ static {
+ replacements.put(ChatColor.BLACK, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).boldOff().toString());
+ replacements.put(ChatColor.DARK_BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).boldOff().toString());
+ replacements.put(ChatColor.DARK_GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).boldOff().toString());
+ replacements.put(ChatColor.DARK_AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).boldOff().toString());
+ replacements.put(ChatColor.DARK_RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).boldOff().toString());
+ replacements.put(ChatColor.DARK_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).boldOff().toString());
+ replacements.put(ChatColor.GOLD, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).boldOff().toString());
+ replacements.put(ChatColor.GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.WHITE).boldOff().toString());
+ replacements.put(ChatColor.DARK_GRAY, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLACK).bold().toString());
+ replacements.put(ChatColor.BLUE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.BLUE).bold().toString());
+ replacements.put(ChatColor.GREEN, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.GREEN).bold().toString());
+ replacements.put(ChatColor.AQUA, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.CYAN).bold().toString());
+ replacements.put(ChatColor.RED, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.RED).bold().toString());
+ replacements.put(ChatColor.LIGHT_PURPLE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.MAGENTA).bold().toString());
+ replacements.put(ChatColor.YELLOW, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.YELLOW).bold().toString());
+ replacements.put(ChatColor.WHITE, Ansi.ansi().a(Attribute.RESET).fg(Ansi.Color.WHITE).bold().toString());
+ replacements.put(ChatColor.MAGIC, Ansi.ansi().a(Attribute.BLINK_SLOW).toString());
+ replacements.put(ChatColor.BOLD, Ansi.ansi().a(Attribute.UNDERLINE_DOUBLE).toString());
+ replacements.put(ChatColor.STRIKETHROUGH, Ansi.ansi().a(Attribute.STRIKETHROUGH_ON).toString());
+ replacements.put(ChatColor.UNDERLINE, Ansi.ansi().a(Attribute.UNDERLINE).toString());
+ replacements.put(ChatColor.ITALIC, Ansi.ansi().a(Attribute.ITALIC).toString());
+ replacements.put(ChatColor.RESET, Ansi.ansi().a(Attribute.RESET).toString());
+ }
+
+ protected static String translateToConsole(String str) {
+ for (Entry entry : replacements.entrySet()) {
+ str = str.replace(entry.getKey().toString(), entry.getValue());
+ }
+ str = str.replaceAll("(?i)" + ChatColor.COLOR_CHAR + "x(" + ChatColor.COLOR_CHAR + "[0-9a-f]){6}", "");
+ return str + RESET_COLOR;
+ }
+
public static class ConsoleOutputStream extends PrintStream {
private PrintStream logs;
+ private Console console;
- public ConsoleOutputStream(OutputStream out, PrintStream logs) {
+ public ConsoleOutputStream(Console console, OutputStream out, PrintStream logs) {
super(out);
this.logs = logs;
+ this.console = console;
}
+ @SuppressWarnings("resource")
@Override
public PrintStream printf(Locale l, String format, Object... args) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText(String.format(l, "[" + date + " Info]" + format, args));
- logs.printf(l, "[" + date + " Info]" + format, args);
- return super.printf(l, "[" + date + " Info]" + format, args);
+ ConsoleTextOutput.appendText(ChatColor.stripColor(String.format(l, "[" + date + " Info]" + format, args)));
+ logs.printf(l, ChatColor.stripColor("[" + date + " Info]" + format), args);
+ PrintStream stream = super.printf(l, Console.translateToConsole("[" + date + " Info]" + format), args);
+ console.unstashLine();
+ return stream;
}
+ @SuppressWarnings("resource")
@Override
public PrintStream printf(String format, Object... args) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText(String.format("[" + date + " Info]" + format, args));
- logs.printf("[" + date + " Info]" + format, args);
- return super.printf("[" + date + " Info]" + format, args);
+ ConsoleTextOutput.appendText(ChatColor.stripColor(String.format("[" + date + " Info]" + format, args)));
+ logs.printf(ChatColor.stripColor("[" + date + " Info]" + format), args);
+ PrintStream stream = super.printf(ChatColor.stripColor("[" + date + " Info]" + format), args);
+ console.unstashLine();
+ return stream;
}
@Override
public void println() {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info]", true);
- logs.println("[" + date + " Info]");
- super.println("[" + date + " Info]");
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info]"), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]"));
+ super.println(ChatColor.stripColor("[" + date + " Info]"));
+ console.unstashLine();
}
@Override
public void println(boolean x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(char x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(char[] x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + String.valueOf(x), true);
- logs.println("[" + date + " Info]" + String.valueOf(x));
- super.println("[" + date + " Info]" + String.valueOf(x));
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + String.valueOf(x)), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + String.valueOf(x)));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + String.valueOf(x)));
+ console.unstashLine();
}
@Override
public void println(double x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(float x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(int x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(long x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(Object x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + x, true);
- logs.println("[" + date + " Info]" + x);
- super.println("[" + date + " Info]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ super.println(ChatColor.stripColor("[" + date + " Info]" + x));
+ console.unstashLine();
}
@Override
public void println(String string) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Info] " + string, true);
- logs.println("[" + date + " Info] " + string);
- super.println("[" + date + " Info] " + string);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + string), true);
+ logs.println(ChatColor.stripColor("[" + date + " Info] " + string));
+ super.println(ChatColor.stripColor("[" + date + " Info] " + string));
+ console.unstashLine();
}
}
public static class ConsoleErrorStream extends PrintStream {
private PrintStream logs;
+ private Console console;
- public ConsoleErrorStream(OutputStream out, PrintStream logs) {
+ public ConsoleErrorStream(Console console, OutputStream out, PrintStream logs) {
super(out);
this.logs = logs;
+ this.console = console;
}
+ @SuppressWarnings("resource")
@Override
public PrintStream printf(Locale l, String format, Object... args) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText(String.format(l, "[" + date + " Error]" + format, args));
- logs.printf(l, "[" + date + " Error]" + format, args);
- return super.printf(l, "[" + date + " Error]" + format, args);
+ ConsoleTextOutput.appendText(ChatColor.stripColor(String.format(l, "[" + date + " Error]" + format, args)));
+ logs.printf(l, ChatColor.stripColor("[" + date + " Error]" + format), args);
+ PrintStream stream = super.printf(l, ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + format + RESET_COLOR), args);
+ console.unstashLine();
+ return stream;
}
+ @SuppressWarnings("resource")
@Override
public PrintStream printf(String format, Object... args) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText(String.format("[" + date + " Error]" + format, args));
- logs.printf("[" + date + " Error]" + format, args);
- return super.printf("[" + date + " Error]" + format, args);
+ ConsoleTextOutput.appendText(ChatColor.stripColor(String.format("[" + date + " Error]" + format, args)));
+ logs.printf(ChatColor.stripColor("[" + date + " Error]" + format), args);
+ PrintStream stream = super.printf(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + format + RESET_COLOR), args);
+ console.unstashLine();
+ return stream;
}
@Override
public void println() {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error]", true);
- logs.println("[" + date + " Error]");
- super.println("[" + date + " Error]");
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error]"), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]"));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]") + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(boolean x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(char x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(char[] x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + String.valueOf(x), true);
- logs.println("[" + date + " Error]" + String.valueOf(x));
- super.println("[" + date + " Error]" + String.valueOf(x));
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + String.valueOf(x)), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + String.valueOf(x)));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + String.valueOf(x)) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(double x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(float x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(int x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(long x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(Object x) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + x, true);
- logs.println("[" + date + " Error]" + x);
- super.println("[" + date + " Error]" + x);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
+ console.unstashLine();
}
@Override
public void println(String string) {
+ console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
- ConsoleTextOutput.appendText("[" + date + " Error] " + string, true);
- logs.println("[" + date + " Error] " + string);
- super.println("[" + date + " Error] " + string);
+ ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + string), true);
+ logs.println(ChatColor.stripColor("[" + date + " Error] " + string));
+ super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error] " + string) + RESET_COLOR);
+ console.unstashLine();
}
}
diff --git a/src/com/loohp/limbo/File/ServerProperties.java b/src/com/loohp/limbo/File/ServerProperties.java
index c12716b..0beb8d2 100644
--- a/src/com/loohp/limbo/File/ServerProperties.java
+++ b/src/com/loohp/limbo/File/ServerProperties.java
@@ -73,17 +73,17 @@ public class ServerProperties {
if (image.getHeight() == 64 && image.getWidth() == 64) {
favicon = Optional.of(image);
} else {
- System.out.println("Unable to load server-icon.png! The image is not 64 x 64 in size!");
+ Limbo.getInstance().getConsole().sendMessage("Unable to load server-icon.png! The image is not 64 x 64 in size!");
}
} catch (Exception e) {
- System.out.println("Unable to load server-icon.png! Is it a png image?");
+ Limbo.getInstance().getConsole().sendMessage("Unable to load server-icon.png! Is it a png image?");
}
} else {
- System.out.println("No server-icon.png found");
+ Limbo.getInstance().getConsole().sendMessage("No server-icon.png found");
favicon = Optional.empty();
}
- System.out.println("Loaded server.properties");
+ Limbo.getInstance().getConsole().sendMessage("Loaded server.properties");
}
public String getServerImplementationVersion() {
diff --git a/src/com/loohp/limbo/Plugins/PluginManager.java b/src/com/loohp/limbo/Plugins/PluginManager.java
index 393bf06..47f4f81 100644
--- a/src/com/loohp/limbo/Plugins/PluginManager.java
+++ b/src/com/loohp/limbo/Plugins/PluginManager.java
@@ -58,7 +58,7 @@ public class PluginManager {
clazz.setInfo(pluginYaml);
plugins.put(clazz.getName(), clazz);
clazz.onLoad();
- System.out.println("Loading plugin " + file.getName() + " " + clazz.getInfo().getVersion() + " by " + clazz.getInfo().getAuthor());
+ Limbo.getInstance().getConsole().sendMessage("Loading plugin " + file.getName() + " " + clazz.getInfo().getVersion() + " by " + clazz.getInfo().getAuthor());
url.close();
break;
}
diff --git a/src/com/loohp/limbo/Server/ClientConnection.java b/src/com/loohp/limbo/Server/ClientConnection.java
index 094762e..8d234cb 100644
--- a/src/com/loohp/limbo/Server/ClientConnection.java
+++ b/src/com/loohp/limbo/Server/ClientConnection.java
@@ -299,7 +299,7 @@ public class ClientConnection extends Thread {
if (chunk != null) {
PacketPlayOutMapChunk chunkdata = new PacketPlayOutMapChunk(x, z, chunk, world.getEnvironment());
sendPacket(chunkdata);
- //System.out.println(x + ", " + z);
+ //Limbo.getInstance().getConsole().sendMessage(x + ", " + z);
}
}
}
@@ -351,7 +351,7 @@ public class ClientConnection extends Thread {
int size = DataTypeIO.readVarInt(input);
int packetId = DataTypeIO.readVarInt(input);
Class extends Packet> packetType = Packet.getPlayIn().get(packetId);
- //System.out.println(packetId + " -> " + packetType);
+ //Limbo.getInstance().getConsole().sendMessage(packetId + " -> " + packetType);
if (packetType == null) {
input.skipBytes(size - DataTypeIO.getVarIntLength(packetId));
} else if (packetType.equals(PacketPlayInPositionAndLook.class)) {
diff --git a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java
index 988cc0a..88dd780 100644
--- a/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java
+++ b/src/com/loohp/limbo/Server/Packets/PacketHandshakingIn.java
@@ -27,7 +27,6 @@ public class PacketHandshakingIn extends PacketIn {
return type;
}
}
- System.out.println("Invalid HandshakeType networkId, expected 0 or 1, but got " + networkId);
return null;
}
}
diff --git a/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java b/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java
index 9cc295d..4aadf0a 100644
--- a/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java
+++ b/src/com/loohp/limbo/Server/Packets/PacketPlayOutMapChunk.java
@@ -116,14 +116,14 @@ public class PacketPlayOutMapChunk extends PacketOut {
}
DataTypeIO.writeVarInt(dataOut, section.getPalette().size());
- //System.out.println(section.getPalette().size());
+ //Limbo.getInstance().getConsole().sendMessage(section.getPalette().size());
Iterator itr1 = section.getPalette().iterator();
- //System.out.println("Nonnull -> " + i + " " + newBits);
+ //Limbo.getInstance().getConsole().sendMessage("Nonnull -> " + i + " " + newBits);
counter = 0;
while (itr1.hasNext()) {
CompoundTag tag = itr1.next();
DataTypeIO.writeVarInt(dataOut, GeneratedBlockDataMappings.getGlobalPaletteIDFromState(tag));
- //System.out.println(tag + " -> " + GeneratedDataUtils.getGlobalPaletteIDFromState(tag));
+ //Limbo.getInstance().getConsole().sendMessage(tag + " -> " + GeneratedDataUtils.getGlobalPaletteIDFromState(tag));
}
} else {
dataOut.writeByte(14);
@@ -132,7 +132,7 @@ public class PacketPlayOutMapChunk extends PacketOut {
DataTypeIO.writeVarInt(dataOut, section.getBlockStates().length);
for (int u = 0; u < section.getBlockStates().length; u++) {
dataOut.writeLong(section.getBlockStates()[u]);
- //System.out.println(Arrays.toString(section.getBlockStates()));
+ //Limbo.getInstance().getConsole().sendMessage(Arrays.toString(section.getBlockStates()));
}
}
}
diff --git a/src/com/loohp/limbo/Server/ServerConnection.java b/src/com/loohp/limbo/Server/ServerConnection.java
index d6c9133..7e458e5 100644
--- a/src/com/loohp/limbo/Server/ServerConnection.java
+++ b/src/com/loohp/limbo/Server/ServerConnection.java
@@ -7,6 +7,8 @@ import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
+import com.loohp.limbo.Limbo;
+
public class ServerConnection extends Thread {
private ServerSocket serverSocket;
@@ -27,11 +29,11 @@ public class ServerConnection extends Thread {
public void run() {
try {
serverSocket = new ServerSocket(port, 50, InetAddress.getByName(ip));
- System.out.println("Limbo server listening on /" + serverSocket.getInetAddress().getHostName() + ":" + serverSocket.getLocalPort());
+ Limbo.getInstance().getConsole().sendMessage("Limbo server listening on /" + serverSocket.getInetAddress().getHostName() + ":" + serverSocket.getLocalPort());
while (true) {
Socket connection = serverSocket.accept();
//String str = connection.getInetAddress().getHostName() + ":" + connection.getPort();
- //System.out.println("[/127.0.0.1:57310] <-> InitialHandler has pinged);
+ //Limbo.getInstance().getConsole().sendMessage("[/127.0.0.1:57310] <-> InitialHandler has pinged);
ClientConnection sc = new ClientConnection(connection);
clients.add(sc);
sc.start();
diff --git a/src/com/loohp/limbo/Utils/MojangAPIUtils.java b/src/com/loohp/limbo/Utils/MojangAPIUtils.java
index 7227705..694c12a 100644
--- a/src/com/loohp/limbo/Utils/MojangAPIUtils.java
+++ b/src/com/loohp/limbo/Utils/MojangAPIUtils.java
@@ -49,7 +49,7 @@ public class MojangAPIUtils {
return null;
}
} else {
- System.out.println("Connection could not be opened (Response code " + connection.getResponseCode() + ", " + connection.getResponseMessage() + ")");
+ System.err.println("Connection could not be opened (Response code " + connection.getResponseCode() + ", " + connection.getResponseMessage() + ")");
return null;
}
} catch (IOException e) {
@@ -81,7 +81,7 @@ public class MojangAPIUtils {
String signature = reply.split("\"signature\":\"")[1].split("\"")[0];
return new SkinResponse(skin, signature);
} else {
- System.out.println("Connection could not be opened (Response code " + connection.getResponseCode() + ", " + connection.getResponseMessage() + ")");
+ System.err.println("Connection could not be opened (Response code " + connection.getResponseCode() + ", " + connection.getResponseMessage() + ")");
return null;
}
} catch (IOException e) {