Update version to v1.3.0

Support Listen Console Command Response
This commit is contained in:
2022-05-18 10:02:39 +08:00
parent d9b09e48ce
commit ff04a5f107
5 changed files with 42 additions and 9 deletions

View File

@ -4,7 +4,7 @@ plugins {
}
group 'com.github.jie65535.opencommand'
version 'dev-1.2.0'
version 'dev-1.3.0'
sourceCompatibility = 17
targetCompatibility = 17

View File

@ -0,0 +1,17 @@
package com.github.jie65535.opencommand;
import emu.grasscutter.server.event.game.CommandResponseEvent;
import emu.grasscutter.utils.MessageHandler;
public final class EventListeners {
private static MessageHandler consoleMessageHandler;
public static void setConsoleMessageHandler(MessageHandler handler) {
consoleMessageHandler = handler;
}
public static void onCommandResponse(CommandResponseEvent event) {
if (consoleMessageHandler != null && event.getPlayer() == null) {
consoleMessageHandler.setMessage(event.getMessage());
}
}
}

View File

@ -20,6 +20,9 @@ package com.github.jie65535.opencommand;
import com.github.jie65535.opencommand.json.JsonRequest;
import com.github.jie65535.opencommand.json.JsonResponse;
import emu.grasscutter.command.CommandMap;
import emu.grasscutter.server.event.EventHandler;
import emu.grasscutter.server.event.HandlerPriority;
import emu.grasscutter.server.event.game.CommandResponseEvent;
import emu.grasscutter.server.http.Router;
import emu.grasscutter.utils.Crypto;
import emu.grasscutter.utils.MessageHandler;
@ -103,13 +106,19 @@ public final class OpenCommandHandler implements Router {
response.json(new JsonResponse());
return;
} else if (req.action.equals("command")) {
try {
plugin.getLogger().info(String.format("IP: %s run command in console > %s", request.ip(), req.data));
CommandMap.getInstance().invoke(null, null, req.data.toString());
response.json(new JsonResponse());
} catch (Exception e) {
plugin.getLogger().warn("Run command failed.", e);
response.json(new JsonResponse(500, "error", e.getLocalizedMessage()));
//noinspection SynchronizationOnLocalVariableOrMethodParameter
synchronized (plugin) {
try {
plugin.getLogger().info(String.format("IP: %s run command in console > %s", request.ip(), req.data));
var resultCollector = new MessageHandler();
EventListeners.setConsoleMessageHandler(resultCollector);
CommandMap.getInstance().invoke(null, null, req.data.toString());
response.json(new JsonResponse(resultCollector.getMessage()));
} catch (Exception e) {
plugin.getLogger().warn("Run command failed.", e);
EventListeners.setConsoleMessageHandler(null);
response.json(new JsonResponse(500, "error", e.getLocalizedMessage()));
}
}
return;
}

View File

@ -19,6 +19,9 @@ package com.github.jie65535.opencommand;
import emu.grasscutter.Grasscutter;
import emu.grasscutter.plugin.Plugin;
import emu.grasscutter.server.event.EventHandler;
import emu.grasscutter.server.event.HandlerPriority;
import emu.grasscutter.server.event.game.CommandResponseEvent;
import java.io.File;
import java.io.FileReader;
@ -40,6 +43,10 @@ public final class OpenCommandPlugin extends Plugin {
@Override
public void onEnable() {
new EventHandler<>(CommandResponseEvent.class)
.priority(HandlerPriority.HIGH)
.listener(EventListeners::onCommandResponse)
.register();
getHandle().addRouter(OpenCommandHandler.class);
getLogger().info("[OpenCommand] Enabled");
}

View File

@ -1,7 +1,7 @@
{
"name": "opencommand-plugin",
"description": "Open command interface for third-party clients",
"version": "dev-1.2.0",
"version": "dev-1.3.0",
"mainClass": "com.github.jie65535.opencommand.OpenCommandPlugin",
"authors": ["jie65535"]
}