mirror of
https://github.com/mingjun97/gc-mojoconsole-plus.git
synced 2024-11-27 20:18:07 +00:00
Optimize code
This commit is contained in:
parent
59f45610aa
commit
f535372ae7
@ -1,57 +1,45 @@
|
|||||||
package com.mojo.consoleplus;
|
package com.mojo.consoleplus;
|
||||||
|
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
import com.mojo.consoleplus.command.PluginCommand;
|
||||||
|
import com.mojo.consoleplus.config.MojoConfig;
|
||||||
import com.mojo.consoleplus.socket.SocketClient;
|
import com.mojo.consoleplus.socket.SocketClient;
|
||||||
import com.mojo.consoleplus.socket.SocketServer;
|
import com.mojo.consoleplus.socket.SocketServer;
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.command.CommandMap;
|
import emu.grasscutter.command.CommandMap;
|
||||||
import emu.grasscutter.plugin.Plugin;
|
import emu.grasscutter.plugin.Plugin;
|
||||||
|
import emu.grasscutter.plugin.PluginConfig;
|
||||||
|
import emu.grasscutter.server.event.EventHandler;
|
||||||
|
import emu.grasscutter.server.event.HandlerPriority;
|
||||||
|
import emu.grasscutter.server.event.player.PlayerJoinEvent;
|
||||||
|
import emu.grasscutter.server.event.player.PlayerQuitEvent;
|
||||||
|
import io.javalin.http.staticfiles.Location;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
import com.mojo.consoleplus.command.PluginCommand;
|
|
||||||
|
|
||||||
import emu.grasscutter.server.event.EventHandler;
|
|
||||||
import emu.grasscutter.server.event.HandlerPriority;
|
|
||||||
import emu.grasscutter.server.event.player.PlayerJoinEvent;
|
|
||||||
import emu.grasscutter.server.event.player.PlayerQuitEvent;
|
|
||||||
import io.javalin.http.staticfiles.Location;
|
|
||||||
import emu.grasscutter.plugin.PluginConfig;
|
|
||||||
import static emu.grasscutter.config.Configuration.PLUGIN;
|
|
||||||
import static emu.grasscutter.config.Configuration.HTTP_POLICIES;
|
import static emu.grasscutter.config.Configuration.HTTP_POLICIES;
|
||||||
|
import static emu.grasscutter.config.Configuration.PLUGIN;
|
||||||
|
|
||||||
import com.mojo.consoleplus.config.MojoConfig;
|
public class ConsolePlus extends Plugin {
|
||||||
import org.slf4j.Logger;
|
|
||||||
|
|
||||||
public class ConsolePlus extends Plugin{
|
|
||||||
public static MojoConfig config = MojoConfig.loadConfig();
|
public static MojoConfig config = MojoConfig.loadConfig();
|
||||||
public static String versionTag;
|
public static String versionTag;
|
||||||
public static AuthHandler authHandler;
|
public static AuthHandler authHandler;
|
||||||
public static Logger logger;
|
|
||||||
public static ConsolePlus instance;
|
|
||||||
|
|
||||||
public static ConsolePlus getInstance() {
|
|
||||||
return instance;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoad() {
|
public void onLoad() {
|
||||||
instance = this;
|
|
||||||
logger = getLogger();
|
|
||||||
try (InputStream in = getClass().getResourceAsStream("/plugin.json");
|
try (InputStream in = getClass().getResourceAsStream("/plugin.json");
|
||||||
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
|
BufferedReader reader = new BufferedReader(new InputStreamReader(in))) {
|
||||||
Gson gson = new Gson();
|
Gson gson = new Gson();
|
||||||
PluginConfig pluginConfig = gson.fromJson(reader, PluginConfig.class);
|
PluginConfig pluginConfig = gson.fromJson(reader, PluginConfig.class);
|
||||||
this.getLogger().info("[MojoConsole] loaded!");
|
this.getLogger().info("[MojoConsole] loaded!");
|
||||||
versionTag = pluginConfig.version;
|
versionTag = pluginConfig.version;
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
catch (Exception e) {
|
// Use resource
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
// Use resource
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -75,10 +63,10 @@ public class ConsolePlus extends Plugin{
|
|||||||
authHandler = new AuthHandler();
|
authHandler = new AuthHandler();
|
||||||
|
|
||||||
if (Grasscutter.config.server.runMode == Grasscutter.ServerRunMode.DISPATCH_ONLY) {
|
if (Grasscutter.config.server.runMode == Grasscutter.ServerRunMode.DISPATCH_ONLY) {
|
||||||
SocketServer.startServer();
|
SocketServer.startServer(getLogger());
|
||||||
Grasscutter.getHttpServer().addRouter(RequestOnlyHttpHandler.class);
|
Grasscutter.getHttpServer().addRouter(RequestOnlyHttpHandler.class);
|
||||||
} else if (Grasscutter.config.server.runMode == Grasscutter.ServerRunMode.GAME_ONLY) {
|
} else if (Grasscutter.config.server.runMode == Grasscutter.ServerRunMode.GAME_ONLY) {
|
||||||
SocketClient.connectServer();
|
SocketClient.connectServer(getLogger());
|
||||||
new EventHandler<>(PlayerJoinEvent.class)
|
new EventHandler<>(PlayerJoinEvent.class)
|
||||||
.priority(HandlerPriority.HIGH)
|
.priority(HandlerPriority.HIGH)
|
||||||
.listener(EventListeners::onPlayerJoin)
|
.listener(EventListeners::onPlayerJoin)
|
||||||
|
@ -31,11 +31,23 @@ public class SocketClient {
|
|||||||
|
|
||||||
public static ReceiveThread receiveThread;
|
public static ReceiveThread receiveThread;
|
||||||
|
|
||||||
|
public static void connectServer(Logger logger) {
|
||||||
|
mLogger = logger;
|
||||||
|
connectServer();
|
||||||
|
}
|
||||||
|
|
||||||
// 连接服务器
|
// 连接服务器
|
||||||
public static void connectServer() {
|
public static void connectServer() {
|
||||||
if (connect) return;
|
if (connect) return;
|
||||||
|
if (clientThread != null) {
|
||||||
|
mLogger.warn("[Mojo Console] Retry connecting to the server after 15 seconds");
|
||||||
|
try {
|
||||||
|
Thread.sleep(15000);
|
||||||
|
} catch (InterruptedException ex) {
|
||||||
|
throw new RuntimeException(ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
MojoConfig config = ConsolePlus.config;
|
MojoConfig config = ConsolePlus.config;
|
||||||
mLogger = ConsolePlus.logger;
|
|
||||||
clientThread = new ClientThread(config.socketHost, config.socketPort);
|
clientThread = new ClientThread(config.socketHost, config.socketPort);
|
||||||
|
|
||||||
if (timer != null) {
|
if (timer != null) {
|
||||||
@ -51,7 +63,6 @@ public class SocketClient {
|
|||||||
var p = SocketUtils.getPacket(packet);
|
var p = SocketUtils.getPacket(packet);
|
||||||
if (!clientThread.sendPacket(p)) {
|
if (!clientThread.sendPacket(p)) {
|
||||||
mLogger.warn("[Mojo Console] Send packet to server failed");
|
mLogger.warn("[Mojo Console] Send packet to server failed");
|
||||||
mLogger.info("[Mojo Console] Reconnect to server");
|
|
||||||
connect = false;
|
connect = false;
|
||||||
connectServer();
|
connectServer();
|
||||||
return false;
|
return false;
|
||||||
@ -63,7 +74,6 @@ public class SocketClient {
|
|||||||
public static boolean sendPacket(BasePacket packet, String packetID) {
|
public static boolean sendPacket(BasePacket packet, String packetID) {
|
||||||
if (!clientThread.sendPacket(SocketUtils.getPacketAndPackID(packet, packetID))) {
|
if (!clientThread.sendPacket(SocketUtils.getPacketAndPackID(packet, packetID))) {
|
||||||
mLogger.warn("[Mojo Console] Send packet to server failed");
|
mLogger.warn("[Mojo Console] Send packet to server failed");
|
||||||
mLogger.info("[Mojo Console] Reconnect to server");
|
|
||||||
connect = false;
|
connect = false;
|
||||||
connectServer();
|
connectServer();
|
||||||
return false;
|
return false;
|
||||||
@ -128,7 +138,7 @@ public class SocketClient {
|
|||||||
// 运行命令
|
// 运行命令
|
||||||
case RunCommand -> {
|
case RunCommand -> {
|
||||||
var command = player.data;
|
var command = player.data;
|
||||||
var playerData = ConsolePlus.getInstance().getServer().getPlayerByUid(player.uid);
|
var playerData = Grasscutter.getGameServer().getPlayerByUid(player.uid);
|
||||||
if (playerData == null) {
|
if (playerData == null) {
|
||||||
sendPacket(new HttpPacket(404, "[Mojo Console] Player not found."), packet.packetID);
|
sendPacket(new HttpPacket(404, "[Mojo Console] Player not found."), packet.packetID);
|
||||||
return;
|
return;
|
||||||
@ -151,7 +161,7 @@ public class SocketClient {
|
|||||||
}
|
}
|
||||||
// 发送信息
|
// 发送信息
|
||||||
case DropMessage -> {
|
case DropMessage -> {
|
||||||
var playerData = ConsolePlus.getInstance().getServer().getPlayerByUid(player.uid);
|
var playerData = Grasscutter.getGameServer().getPlayerByUid(player.uid);
|
||||||
if (playerData == null) {
|
if (playerData == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -218,12 +228,6 @@ public class SocketClient {
|
|||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
connect = false;
|
connect = false;
|
||||||
mLogger.warn("[Mojo Console] Connect to server failed: " + ip + ":" + port);
|
mLogger.warn("[Mojo Console] Connect to server failed: " + ip + ":" + port);
|
||||||
mLogger.warn("[Mojo Console] Retry connecting to the server after 15 seconds");
|
|
||||||
try {
|
|
||||||
Thread.sleep(15000);
|
|
||||||
} catch (InterruptedException ex) {
|
|
||||||
throw new RuntimeException(ex);
|
|
||||||
}
|
|
||||||
connectServer();
|
connectServer();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -24,10 +24,10 @@ public class SocketServer {
|
|||||||
private static final HashMap<String, Integer> clientTimeout = new HashMap<>();
|
private static final HashMap<String, Integer> clientTimeout = new HashMap<>();
|
||||||
private static Logger mLogger;
|
private static Logger mLogger;
|
||||||
|
|
||||||
public static void startServer() {
|
public static void startServer(Logger logger) {
|
||||||
|
mLogger = logger;
|
||||||
try {
|
try {
|
||||||
int port = ConsolePlus.config.socketPort;
|
int port = ConsolePlus.config.socketPort;
|
||||||
mLogger = ConsolePlus.logger;
|
|
||||||
new Timer().schedule(new SocketClientCheck(), 500);
|
new Timer().schedule(new SocketClientCheck(), 500);
|
||||||
new WaitClientConnect(port);
|
new WaitClientConnect(port);
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
@ -38,7 +38,7 @@ public class SocketServer {
|
|||||||
// 向全部客户端发送数据
|
// 向全部客户端发送数据
|
||||||
public static boolean sendAllPacket(BasePacket packet) {
|
public static boolean sendAllPacket(BasePacket packet) {
|
||||||
var p = SocketUtils.getPacket(packet);
|
var p = SocketUtils.getPacket(packet);
|
||||||
HashMap<String, ClientThread> old = (HashMap<String, ClientThread>) clientList.clone();
|
HashMap<String, ClientThread> old = (HashMap<String, ClientThread>) clientList.clone();
|
||||||
for (var client : old.entrySet()) {
|
for (var client : old.entrySet()) {
|
||||||
if (!client.getValue().sendPacket(p)) {
|
if (!client.getValue().sendPacket(p)) {
|
||||||
mLogger.warn("[Mojo Console] Send packet to client {} failed", client.getKey());
|
mLogger.warn("[Mojo Console] Send packet to client {} failed", client.getKey());
|
||||||
|
Loading…
Reference in New Issue
Block a user