Fix incomplete multiple lines reply issue (fix #28)

This commit is contained in:
2023-04-15 19:10:37 +08:00
parent 79564ff41c
commit 3f1ecfe8a6
3 changed files with 11 additions and 8 deletions

View File

@ -24,21 +24,24 @@ import emu.grasscutter.game.player.Player;
import emu.grasscutter.server.event.game.ReceiveCommandFeedbackEvent;
import emu.grasscutter.server.event.player.PlayerJoinEvent;
import emu.grasscutter.server.event.player.PlayerQuitEvent;
import emu.grasscutter.utils.MessageHandler;
import java.util.ArrayList;
public final class EventListeners {
private static MessageHandler consoleMessageHandler;
private static StringBuilder consoleMessageHandler;
public static void setConsoleMessageHandler(MessageHandler handler) {
public static void setConsoleMessageHandler(StringBuilder handler) {
consoleMessageHandler = handler;
}
public static void onCommandResponse(ReceiveCommandFeedbackEvent event) {
if (consoleMessageHandler != null && event.getPlayer() == null) {
consoleMessageHandler.setMessage(event.getMessage());
if (!consoleMessageHandler.isEmpty()) {
// New line
consoleMessageHandler.append(System.lineSeparator());
}
consoleMessageHandler.append(event.getMessage());
}
}

View File

@ -114,10 +114,10 @@ public final class OpenCommandHandler implements Router {
synchronized (plugin) {
try {
plugin.getLogger().info(String.format("IP: %s run command in console > %s", context.ip(), req.data));
var resultCollector = new MessageHandler();
var resultCollector = new StringBuilder();
EventListeners.setConsoleMessageHandler(resultCollector);
CommandMap.getInstance().invoke(null, null, req.data.toString());
context.json(new JsonResponse(resultCollector.getMessage()));
context.json(new JsonResponse(resultCollector.toString()));
} catch (Exception e) {
plugin.getLogger().warn("Run command failed.", e);
EventListeners.setConsoleMessageHandler(null);

View File

@ -192,10 +192,10 @@ public class SocketClient {
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (plugin) {
try {
var resultCollector = new MessageHandler();
var resultCollector = new StringBuilder();
EventListeners.setConsoleMessageHandler(resultCollector);
CommandMap.getInstance().invoke(null, null, consoleCommand.command);
sendPacket(new HttpPacket(resultCollector.getMessage()), packet.packetID);
sendPacket(new HttpPacket(resultCollector.toString()), packet.packetID);
} catch (Exception e) {
mLogger.warn("[OpenCommand] Run command failed.", e);
EventListeners.setConsoleMessageHandler(null);