0.3.1 Colors in the console!

This commit is contained in:
LOOHP 2020-08-15 18:58:09 +08:00
parent aa969cc821
commit 34668ae633
9 changed files with 283 additions and 112 deletions

21
pom.xml
View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>Limbo</groupId> <groupId>Limbo</groupId>
<artifactId>Limbo</artifactId> <artifactId>Limbo</artifactId>
<version>0.3.0-ALPHA</version> <version>0.3.1-ALPHA</version>
<build> <build>
<sourceDirectory>src</sourceDirectory> <sourceDirectory>src</sourceDirectory>
<resources> <resources>
@ -68,31 +68,48 @@
<groupId>com.github.Querz</groupId> <groupId>com.github.Querz</groupId>
<artifactId>NBT</artifactId> <artifactId>NBT</artifactId>
<version>5.5</version> <version>5.5</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.google.code.gson</groupId> <groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId> <artifactId>gson</artifactId>
<version>2.8.5</version> <version>2.8.5</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.yaml</groupId> <groupId>org.yaml</groupId>
<artifactId>snakeyaml</artifactId> <artifactId>snakeyaml</artifactId>
<version>1.26</version> <version>1.26</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.googlecode.json-simple</groupId> <groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId> <artifactId>json-simple</artifactId>
<version>1.1.1</version> <version>1.1.1</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>net.md-5</groupId> <groupId>net.md-5</groupId>
<artifactId>bungeecord-chat</artifactId> <artifactId>bungeecord-chat</artifactId>
<version>1.16-R0.3</version> <version>1.16-R0.3</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.18</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.jline</groupId>
<artifactId>jline</artifactId>
<version>3.16.0</version>
<scope>compile</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>jline</groupId> <groupId>jline</groupId>
<artifactId>jline</artifactId> <artifactId>jline</artifactId>
<version>2.6</version> <version>2.11</version>
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
</dependencies> </dependencies>

View File

@ -1,36 +1,59 @@
package com.loohp.limbo; package com.loohp.limbo;
import java.io.BufferedReader;
import java.io.File; import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.PrintStream; import java.io.PrintStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Arrays; import java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.stream.Collectors; 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.Commands.CommandSender;
import com.loohp.limbo.GUI.ConsoleTextOutput; import com.loohp.limbo.GUI.ConsoleTextOutput;
import com.loohp.limbo.Utils.CustomStringUtils; 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; import net.md_5.bungee.api.chat.BaseComponent;
public class Console implements CommandSender { public class Console implements CommandSender {
protected static final Map<ChatColor, String> 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; private InputStream in;
@SuppressWarnings("unused")
private PrintStream out; private PrintStream out;
@SuppressWarnings("unused") @SuppressWarnings("unused")
private PrintStream err; private PrintStream err;
protected PrintStream logs; protected PrintStream logs;
private final String CONSOLE = "CONSOLE"; public Console(InputStream in, PrintStream out, PrintStream err) throws IOException {
public Console(InputStream in, PrintStream out, PrintStream err) throws FileNotFoundException {
String fileName = new SimpleDateFormat("yyyy'-'MM'-'dd'_'HH'-'mm'-'ss'_'zzz'.log'").format(new Date()); String fileName = new SimpleDateFormat("yyyy'-'MM'-'dd'_'HH'-'mm'-'ss'_'zzz'.log'").format(new Date());
File dir = new File("logs"); File dir = new File("logs");
dir.mkdirs(); dir.mkdirs();
@ -43,20 +66,38 @@ public class Console implements CommandSender {
} else { } else {
this.in = null; 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 @Override
public void write(int b) { public void write(int b) {
//DO NOTHING //DO NOTHING
} }
})) : out, this.logs)); }) : out, this.logs));
this.out = System.out; 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 @Override
public void write(int b) { public void write(int b) {
//DO NOTHING //DO NOTHING
} }
})) : err, this.logs)); }) : err, this.logs));
this.err = System.err; 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<Candidate> candidates) {
String[] args = CustomStringUtils.splitStringToArgs(line.line());
List<String> 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() { public String getName() {
@ -78,236 +119,348 @@ public class Console implements CommandSender {
} }
public void sendMessage(String message) { 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() { protected void run() {
if (in == null) { if (in == null) {
return; return;
} }
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
while (true) { while (true) {
try { String command = tabReader.readLine(PROMPT);
String command = reader.readLine();
if (command.length() > 0) { if (command.length() > 0) {
String[] input = CustomStringUtils.splitStringToArgs(command); String[] input = CustomStringUtils.splitStringToArgs(command);
Limbo.getInstance().dispatchCommand(this, input); new Thread(() -> Limbo.getInstance().dispatchCommand(this, input)).start();
}
} catch (IOException e) {
e.printStackTrace();
} }
} }
} }
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<ChatColor, String> 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 { public static class ConsoleOutputStream extends PrintStream {
private PrintStream logs; private PrintStream logs;
private Console console;
public ConsoleOutputStream(OutputStream out, PrintStream logs) { public ConsoleOutputStream(Console console, OutputStream out, PrintStream logs) {
super(out); super(out);
this.logs = logs; this.logs = logs;
this.console = console;
} }
@SuppressWarnings("resource")
@Override @Override
public PrintStream printf(Locale l, String format, Object... args) { public PrintStream printf(Locale l, String format, Object... args) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText(String.format(l, "[" + date + " Info]" + format, args)); ConsoleTextOutput.appendText(ChatColor.stripColor(String.format(l, "[" + date + " Info]" + format, args)));
logs.printf(l, "[" + date + " Info]" + format, args); logs.printf(l, ChatColor.stripColor("[" + date + " Info]" + format), args);
return super.printf(l, "[" + date + " Info]" + format, args); PrintStream stream = super.printf(l, Console.translateToConsole("[" + date + " Info]" + format), args);
console.unstashLine();
return stream;
} }
@SuppressWarnings("resource")
@Override @Override
public PrintStream printf(String format, Object... args) { public PrintStream printf(String format, Object... args) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText(String.format("[" + date + " Info]" + format, args)); ConsoleTextOutput.appendText(ChatColor.stripColor(String.format("[" + date + " Info]" + format, args)));
logs.printf("[" + date + " Info]" + format, args); logs.printf(ChatColor.stripColor("[" + date + " Info]" + format), args);
return super.printf("[" + date + " Info]" + format, args); PrintStream stream = super.printf(ChatColor.stripColor("[" + date + " Info]" + format), args);
console.unstashLine();
return stream;
} }
@Override @Override
public void println() { public void println() {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info]", true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info]"), true);
logs.println("[" + date + " Info]"); logs.println(ChatColor.stripColor("[" + date + " Info]"));
super.println("[" + date + " Info]"); super.println(ChatColor.stripColor("[" + date + " Info]"));
console.unstashLine();
} }
@Override @Override
public void println(boolean x) { public void println(boolean x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(char x) { public void println(char x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(char[] x) { public void println(char[] x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + String.valueOf(x), true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + String.valueOf(x)), true);
logs.println("[" + date + " Info]" + String.valueOf(x)); logs.println(ChatColor.stripColor("[" + date + " Info]" + String.valueOf(x)));
super.println("[" + date + " Info]" + String.valueOf(x)); super.println(ChatColor.stripColor("[" + date + " Info]" + String.valueOf(x)));
console.unstashLine();
} }
@Override @Override
public void println(double x) { public void println(double x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(float x) { public void println(float x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(int x) { public void println(int x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(long x) { public void println(long x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(Object x) { public void println(Object x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + x), true);
logs.println("[" + date + " Info]" + x); logs.println(ChatColor.stripColor("[" + date + " Info]" + x));
super.println("[" + date + " Info]" + x); super.println(ChatColor.stripColor("[" + date + " Info]" + x));
console.unstashLine();
} }
@Override @Override
public void println(String string) { public void println(String string) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Info] " + string, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Info] " + string), true);
logs.println("[" + date + " Info] " + string); logs.println(ChatColor.stripColor("[" + date + " Info] " + string));
super.println("[" + date + " Info] " + string); super.println(ChatColor.stripColor("[" + date + " Info] " + string));
console.unstashLine();
} }
} }
public static class ConsoleErrorStream extends PrintStream { public static class ConsoleErrorStream extends PrintStream {
private PrintStream logs; private PrintStream logs;
private Console console;
public ConsoleErrorStream(OutputStream out, PrintStream logs) { public ConsoleErrorStream(Console console, OutputStream out, PrintStream logs) {
super(out); super(out);
this.logs = logs; this.logs = logs;
this.console = console;
} }
@SuppressWarnings("resource")
@Override @Override
public PrintStream printf(Locale l, String format, Object... args) { public PrintStream printf(Locale l, String format, Object... args) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText(String.format(l, "[" + date + " Error]" + format, args)); ConsoleTextOutput.appendText(ChatColor.stripColor(String.format(l, "[" + date + " Error]" + format, args)));
logs.printf(l, "[" + date + " Error]" + format, args); logs.printf(l, ChatColor.stripColor("[" + date + " Error]" + format), args);
return super.printf(l, "[" + 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 @Override
public PrintStream printf(String format, Object... args) { public PrintStream printf(String format, Object... args) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText(String.format("[" + date + " Error]" + format, args)); ConsoleTextOutput.appendText(ChatColor.stripColor(String.format("[" + date + " Error]" + format, args)));
logs.printf("[" + date + " Error]" + format, args); logs.printf(ChatColor.stripColor("[" + date + " Error]" + format), args);
return super.printf("[" + date + " Error]" + format, args); PrintStream stream = super.printf(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + format + RESET_COLOR), args);
console.unstashLine();
return stream;
} }
@Override @Override
public void println() { public void println() {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error]", true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error]"), true);
logs.println("[" + date + " Error]"); logs.println(ChatColor.stripColor("[" + date + " Error]"));
super.println("[" + date + " Error]"); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]") + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(boolean x) { public void println(boolean x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(char x) { public void println(char x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(char[] x) { public void println(char[] x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + String.valueOf(x), true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + String.valueOf(x)), true);
logs.println("[" + date + " Error]" + String.valueOf(x)); logs.println(ChatColor.stripColor("[" + date + " Error]" + String.valueOf(x)));
super.println("[" + date + " Error]" + String.valueOf(x)); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + String.valueOf(x)) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(double x) { public void println(double x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(float x) { public void println(float x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(int x) { public void println(int x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(long x) { public void println(long x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(Object x) { public void println(Object x) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + x, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + x), true);
logs.println("[" + date + " Error]" + x); logs.println(ChatColor.stripColor("[" + date + " Error]" + x));
super.println("[" + date + " Error]" + x); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error]" + x) + RESET_COLOR);
console.unstashLine();
} }
@Override @Override
public void println(String string) { public void println(String string) {
console.stashLine();
String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date()); String date = new SimpleDateFormat("HH':'mm':'ss").format(new Date());
ConsoleTextOutput.appendText("[" + date + " Error] " + string, true); ConsoleTextOutput.appendText(ChatColor.stripColor("[" + date + " Error] " + string), true);
logs.println("[" + date + " Error] " + string); logs.println(ChatColor.stripColor("[" + date + " Error] " + string));
super.println("[" + date + " Error] " + string); super.println(ERROR_RED + ChatColor.stripColor("[" + date + " Error] " + string) + RESET_COLOR);
console.unstashLine();
} }
} }

View File

@ -73,17 +73,17 @@ public class ServerProperties {
if (image.getHeight() == 64 && image.getWidth() == 64) { if (image.getHeight() == 64 && image.getWidth() == 64) {
favicon = Optional.of(image); favicon = Optional.of(image);
} else { } 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) { } 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 { } else {
System.out.println("No server-icon.png found"); Limbo.getInstance().getConsole().sendMessage("No server-icon.png found");
favicon = Optional.empty(); favicon = Optional.empty();
} }
System.out.println("Loaded server.properties"); Limbo.getInstance().getConsole().sendMessage("Loaded server.properties");
} }
public String getServerImplementationVersion() { public String getServerImplementationVersion() {

View File

@ -58,7 +58,7 @@ public class PluginManager {
clazz.setInfo(pluginYaml); clazz.setInfo(pluginYaml);
plugins.put(clazz.getName(), clazz); plugins.put(clazz.getName(), clazz);
clazz.onLoad(); 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(); url.close();
break; break;
} }

View File

@ -299,7 +299,7 @@ public class ClientConnection extends Thread {
if (chunk != null) { if (chunk != null) {
PacketPlayOutMapChunk chunkdata = new PacketPlayOutMapChunk(x, z, chunk, world.getEnvironment()); PacketPlayOutMapChunk chunkdata = new PacketPlayOutMapChunk(x, z, chunk, world.getEnvironment());
sendPacket(chunkdata); 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 size = DataTypeIO.readVarInt(input);
int packetId = DataTypeIO.readVarInt(input); int packetId = DataTypeIO.readVarInt(input);
Class<? extends Packet> packetType = Packet.getPlayIn().get(packetId); Class<? extends Packet> packetType = Packet.getPlayIn().get(packetId);
//System.out.println(packetId + " -> " + packetType); //Limbo.getInstance().getConsole().sendMessage(packetId + " -> " + packetType);
if (packetType == null) { if (packetType == null) {
input.skipBytes(size - DataTypeIO.getVarIntLength(packetId)); input.skipBytes(size - DataTypeIO.getVarIntLength(packetId));
} else if (packetType.equals(PacketPlayInPositionAndLook.class)) { } else if (packetType.equals(PacketPlayInPositionAndLook.class)) {

View File

@ -27,7 +27,6 @@ public class PacketHandshakingIn extends PacketIn {
return type; return type;
} }
} }
System.out.println("Invalid HandshakeType networkId, expected 0 or 1, but got " + networkId);
return null; return null;
} }
} }

View File

@ -116,14 +116,14 @@ public class PacketPlayOutMapChunk extends PacketOut {
} }
DataTypeIO.writeVarInt(dataOut, section.getPalette().size()); DataTypeIO.writeVarInt(dataOut, section.getPalette().size());
//System.out.println(section.getPalette().size()); //Limbo.getInstance().getConsole().sendMessage(section.getPalette().size());
Iterator<CompoundTag> itr1 = section.getPalette().iterator(); Iterator<CompoundTag> itr1 = section.getPalette().iterator();
//System.out.println("Nonnull -> " + i + " " + newBits); //Limbo.getInstance().getConsole().sendMessage("Nonnull -> " + i + " " + newBits);
counter = 0; counter = 0;
while (itr1.hasNext()) { while (itr1.hasNext()) {
CompoundTag tag = itr1.next(); CompoundTag tag = itr1.next();
DataTypeIO.writeVarInt(dataOut, GeneratedBlockDataMappings.getGlobalPaletteIDFromState(tag)); DataTypeIO.writeVarInt(dataOut, GeneratedBlockDataMappings.getGlobalPaletteIDFromState(tag));
//System.out.println(tag + " -> " + GeneratedDataUtils.getGlobalPaletteIDFromState(tag)); //Limbo.getInstance().getConsole().sendMessage(tag + " -> " + GeneratedDataUtils.getGlobalPaletteIDFromState(tag));
} }
} else { } else {
dataOut.writeByte(14); dataOut.writeByte(14);
@ -132,7 +132,7 @@ public class PacketPlayOutMapChunk extends PacketOut {
DataTypeIO.writeVarInt(dataOut, section.getBlockStates().length); DataTypeIO.writeVarInt(dataOut, section.getBlockStates().length);
for (int u = 0; u < section.getBlockStates().length; u++) { for (int u = 0; u < section.getBlockStates().length; u++) {
dataOut.writeLong(section.getBlockStates()[u]); dataOut.writeLong(section.getBlockStates()[u]);
//System.out.println(Arrays.toString(section.getBlockStates())); //Limbo.getInstance().getConsole().sendMessage(Arrays.toString(section.getBlockStates()));
} }
} }
} }

View File

@ -7,6 +7,8 @@ import java.net.Socket;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.loohp.limbo.Limbo;
public class ServerConnection extends Thread { public class ServerConnection extends Thread {
private ServerSocket serverSocket; private ServerSocket serverSocket;
@ -27,11 +29,11 @@ public class ServerConnection extends Thread {
public void run() { public void run() {
try { try {
serverSocket = new ServerSocket(port, 50, InetAddress.getByName(ip)); 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) { while (true) {
Socket connection = serverSocket.accept(); Socket connection = serverSocket.accept();
//String str = connection.getInetAddress().getHostName() + ":" + connection.getPort(); //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); ClientConnection sc = new ClientConnection(connection);
clients.add(sc); clients.add(sc);
sc.start(); sc.start();

View File

@ -49,7 +49,7 @@ public class MojangAPIUtils {
return null; return null;
} }
} else { } 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; return null;
} }
} catch (IOException e) { } catch (IOException e) {
@ -81,7 +81,7 @@ public class MojangAPIUtils {
String signature = reply.split("\"signature\":\"")[1].split("\"")[0]; String signature = reply.split("\"signature\":\"")[1].split("\"")[0];
return new SkinResponse(skin, signature); return new SkinResponse(skin, signature);
} else { } 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; return null;
} }
} catch (IOException e) { } catch (IOException e) {