Skip to content

Commit 1c57283

Browse files
[!] Fixed the terminal input bugs.
[~] Optimized the experience of terminal interactions. [+] Added Appender function for avoiding interruption of input buffer during the log info. [~] Improved package naming. [~] Improved README.md.
1 parent d4f4cda commit 1c57283

9 files changed

Lines changed: 70 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
- [`Terminal Interactions`]()
6262

6363
**Implemented Event APIs:**
64-
- [`Programmable State Machine`](PluginDocs.md#dolphins-event-listeners)
64+
- [`Programmable State Machine`](PluginDocs.md#3-programmable-login-state-machine)
6565
- [`Command System`](PluginDocs.md#42-commands-system)
6666
- [`Packet Handlers`](PluginDocs.md#4-deep-understand-dolphinapis)
6767
- [`Event Handler System`](PluginDocs.md#3-register-event-handlers)

bot.profiles.json

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"profiles": {
33
"bot#1": {
4-
"name": "爱丽丝的DolphinBot5",
4+
"name": "DolphinTest调试",
55
"password": "default_password",
66
"owner": [
77
"Melibertan"
@@ -11,6 +11,17 @@
1111
"MessageDisplay",
1212
"HumanVerify"
1313
]
14+
},
15+
"bot#2": {
16+
"name": "DolphinThread1",
17+
"password": "default_password",
18+
"owner": [
19+
"Melibertan"
20+
],
21+
"enabled_plugins": [
22+
"HumanVerify",
23+
"MessageDisplay"
24+
]
1425
}
1526
}
1627
}

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>org.angellock.impl</groupId>
88
<artifactId>DolphinBot</artifactId>
9-
<version>1.2.3-BETA-full</version>
9+
<version>1.2.4-Alpha-full</version>
1010
<packaging>
1111
jar
1212
</packaging>

src/main/java/org/angellock/impl/managers/BotManager.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ public void startAll(){
140140
this.terminalInput = new Thread(() -> {
141141
try {
142142
while (true) {
143-
String s = reader.readLine();
143+
String s = reader.readLine("Terminal>");
144144
for (AbstractRobot dolphinBot : this.bots.values()) {
145145
ChatMessageManager messageManager = dolphinBot.getMessageManager();
146146
if (messageManager != null) {

src/main/java/org/angellock/impl/managers/ResourceHelper.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public ResourceHelper(@Nullable String defaultPath, String fileType) {
1616
this.fileType = fileType;
1717

1818
File outFile = new File((defaultPath != null) ? defaultPath : "");
19+
System.out.println(outFile.getAbsolutePath());
1920
if (!outFile.exists()){
2021
if (defaultPath != null) {
2122
log.warn(ConsoleTokens.colorizeText("&eSpecified config file &c" + defaultPath + "&e not found, &6reading from the default file: &3.\\" + getFullFileName()));
@@ -47,11 +48,11 @@ private void autoCopy(File outFile) throws IOException {
4748
}
4849
in.close();
4950
out.close();
50-
log.info(ConsoleTokens.colorizeText("&9Extract config file &3" + getFullFileName()));
51+
log.info(ConsoleTokens.colorizeText("&9Extract config file &3\\" + getFullFileName()));
5152

5253
}
5354
else {
54-
log.error(ConsoleTokens.colorizeText("&dCould not extract fallback config file &3" + getFullFileName()));
55+
log.error(ConsoleTokens.colorizeText("&dCould not extract fallback config file &3\\" + getFullFileName()));
5556
}
5657
}
5758
// this.configPath = Path.of(output, getFullFileName());
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.angellock.impl.util;
2+
3+
import ch.qos.logback.classic.spi.ILoggingEvent;
4+
import ch.qos.logback.core.AppenderBase;
5+
import ch.qos.logback.core.encoder.Encoder;
6+
import org.angellock.impl.win32terminal.AnsiEscapes;
7+
import org.jline.reader.LineReader;
8+
9+
import java.nio.charset.StandardCharsets;
10+
11+
public class JLineAppender extends AppenderBase<ILoggingEvent> {
12+
private Encoder<ILoggingEvent> encoder;
13+
14+
@Override
15+
protected void append(ILoggingEvent eventObject) {
16+
if (!isStarted()) {
17+
return;
18+
}
19+
20+
byte[] byteArray = this.encoder.encode(eventObject);
21+
String message = new String(byteArray, StandardCharsets.UTF_8);
22+
23+
LineReader reader = AnsiEscapes.getReader();
24+
if (reader != null) {
25+
if (message.endsWith("\n")) {
26+
message = message.substring(0, message.length() - 1);
27+
}
28+
if (message.endsWith("\r")) {
29+
message = message.substring(0, message.length() - 1);
30+
}
31+
reader.printAbove(message);
32+
} else {
33+
System.out.print(message);
34+
}
35+
}
36+
37+
public Encoder<ILoggingEvent> getEncoder() {
38+
return encoder;
39+
}
40+
41+
public void setEncoder(Encoder<ILoggingEvent> encoder) {
42+
this.encoder = encoder;
43+
}
44+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package org.angellock.impl.win32terminal;
2+
3+
import ch.qos.logback.core.ConsoleAppender;
4+
5+
public class TerminalAppender extends ConsoleAppender {
6+
}

src/main/resources/logback.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<configuration>
3-
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
3+
<appender name="CONSOLE" class="org.angellock.impl.util.JLineAppender">
44
<encoder>
5-
<pattern>[%d{HH:mm:ss} %level] [%thread] [%logger{36}]: %msg%n</pattern>
5+
<pattern>[%d{HH:mm:ss} %level] [%logger{36}]: %msg%n</pattern>
66
</encoder>
77
</appender>
88
<root level="info">

0 commit comments

Comments
 (0)