From e0007e9eb32a04358a281b2ea7c5f917cd4d61f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Wed, 11 Jan 2023 23:44:17 +0800 Subject: [PATCH] Fix data.json decode issue --- build.gradle | 4 ---- .../com/github/jie65535/openchat/EventListeners.java | 11 ++++++++++- .../com/github/jie65535/openchat/OpenChatData.java | 11 ++++------- .../com/github/jie65535/openchat/OpenChatPlugin.java | 9 ++++----- .../com/github/jie65535/openchat/OpenChatSystem.java | 10 +++++----- 5 files changed, 23 insertions(+), 22 deletions(-) diff --git a/build.gradle b/build.gradle index e21e2a6..644710c 100644 --- a/build.gradle +++ b/build.gradle @@ -13,10 +13,6 @@ dependencies { implementation fileTree(dir: 'lib', include: ['*.jar']) } -test { - useJUnitPlatform() -} - jar { jar.baseName = 'openchat' diff --git a/src/main/java/com/github/jie65535/openchat/EventListeners.java b/src/main/java/com/github/jie65535/openchat/EventListeners.java index 34153cd..20f8927 100644 --- a/src/main/java/com/github/jie65535/openchat/EventListeners.java +++ b/src/main/java/com/github/jie65535/openchat/EventListeners.java @@ -3,11 +3,20 @@ package com.github.jie65535.openchat; import emu.grasscutter.server.event.player.PlayerJoinEvent; public final class EventListeners { + private static final OpenChatPlugin plugin = OpenChatPlugin.getInstance(); private static final OpenChatConfig config = OpenChatPlugin.getInstance().getConfig(); public static void onJoin(PlayerJoinEvent event) { - if (!config.sendJoinMessage || config.joinMessage.isEmpty()) return; + // 检查聊天系统是否被其它插件替换 + if (!(plugin.getServer().getChatSystem() instanceof OpenChatSystem)) { + plugin.getLogger().warn("聊天系统已被其它插件更改,现已重置为 OpenChat !"); + plugin.getServer().setChatSystem(new OpenChatSystem(plugin)); + } + if (!config.sendJoinMessage || config.joinMessage.isEmpty()) + return; + plugin.getLogger().debug(String.format("玩家 %s(%d) 加入游戏,发送加入消息", + event.getPlayer().getNickname(), event.getPlayer().getUid())); event.getPlayer().dropMessage(config.joinMessage); } } diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatData.java b/src/main/java/com/github/jie65535/openchat/OpenChatData.java index 6e1c0aa..8b3c69f 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatData.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatData.java @@ -17,12 +17,9 @@ */ package com.github.jie65535.openchat; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import it.unimi.dsi.fastutil.ints.IntOpenHashSet; -import it.unimi.dsi.fastutil.ints.IntSet; - import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; public class OpenChatData { @@ -31,11 +28,11 @@ public class OpenChatData { * Key: Uid * Value: End time */ - public Int2ObjectMap banList = new Int2ObjectOpenHashMap<>(); + public HashMap banList = new HashMap<>(); /** * 关闭聊天的玩家集合 * Key: Uid */ - public IntSet offChatPlayers = new IntOpenHashSet(); + public HashSet offChatPlayers = new HashSet<>(); } diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java b/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java index 677a75f..056318d 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java @@ -29,7 +29,6 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; import java.util.Date; public final class OpenChatPlugin extends Plugin { @@ -55,7 +54,7 @@ public final class OpenChatPlugin extends Plugin { } } else { try { - config = JsonUtils.decode(Files.readString(configFile.toPath(), StandardCharsets.UTF_8), OpenChatConfig.class); + config = JsonUtils.loadToClass(configFile.toPath(), OpenChatConfig.class); } catch (Exception exception) { config = new OpenChatConfig(); getLogger().error("[OpenChat] There was an error while trying to load the configuration from config.json. Please make sure that there are no syntax errors. If you want to start with a default configuration, delete your existing config.json.", exception); @@ -74,7 +73,7 @@ public final class OpenChatPlugin extends Plugin { saveData(); } else { try { - data = JsonUtils.decode(Files.readString(dataFile.toPath(), StandardCharsets.UTF_8), OpenChatData.class); + data = JsonUtils.loadToClass(dataFile.toPath(), OpenChatData.class); } catch (Exception exception) { data = new OpenChatData(); getLogger().error("[OpenChat] There was an error while trying to load the data from data.json. Please make sure that there are no syntax errors. If you want to start with a default data, delete your existing data.json.", exception); @@ -112,7 +111,7 @@ public final class OpenChatPlugin extends Plugin { getHandle().registerCommand(new ChatPlayerCommands()); // Set my chat system. - getServer().setChatSystem(new OpenChatSystem(getServer(), this)); + getServer().setChatSystem(new OpenChatSystem(this)); // Log a plugin status message. getLogger().info("[OpenChat] Enabled."); @@ -131,6 +130,6 @@ public final class OpenChatPlugin extends Plugin { if (getData().banList.isEmpty()) return; var now = new Date(); - getData().banList.int2ObjectEntrySet().removeIf(entry -> entry.getValue().before(now)); + getData().banList.entrySet().removeIf(entry -> entry.getValue().before(now)); } } diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java b/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java index 1e5e865..8f4984a 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatSystem.java @@ -3,18 +3,18 @@ package com.github.jie65535.openchat; import emu.grasscutter.GameConstants; import emu.grasscutter.game.chat.ChatSystem; import emu.grasscutter.game.player.Player; -import emu.grasscutter.server.game.GameServer; public class OpenChatSystem extends ChatSystem { private final OpenChatPlugin plugin; - public OpenChatSystem(GameServer server, OpenChatPlugin plugin) { - super(server); + public OpenChatSystem(OpenChatPlugin plugin) { + super(plugin.getServer()); this.plugin = plugin; + plugin.getLogger().debug("OpenChatSystem created."); } @Override public void sendPrivateMessage(Player player, int targetUid, String message) { - plugin.getLogger().info(String.format("onSendPrivateMessage: player=%s(%d) targetUid=%d message=%s", + plugin.getLogger().debug(String.format("onSendPrivateMessage: player=%s(%d) targetUid=%d message=%s", player.getNickname(), player.getUid(), targetUid, message)); // Sanity checks. if (message == null || message.length() == 0) { @@ -35,7 +35,7 @@ public class OpenChatSystem extends ChatSystem { * @param message 消息内容 */ private void handlePlayerMessage(Player player, String message) { - plugin.getLogger().info("handlePlayerMessage enter"); + plugin.getLogger().debug("handlePlayerMessage enter"); if (!plugin.getConfig().serverChatEnabled) { return; }