Fix data.json decode issue

This commit is contained in:
2023-01-11 23:44:17 +08:00
parent 8202428564
commit e0007e9eb3
5 changed files with 23 additions and 22 deletions

View File

@ -13,10 +13,6 @@ dependencies {
implementation fileTree(dir: 'lib', include: ['*.jar'])
}
test {
useJUnitPlatform()
}
jar {
jar.baseName = 'openchat'

View File

@ -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);
}
}

View File

@ -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<Date> banList = new Int2ObjectOpenHashMap<>();
public HashMap<Integer, Date> banList = new HashMap<>();
/**
* 关闭聊天的玩家集合
* Key: Uid
*/
public IntSet offChatPlayers = new IntOpenHashSet();
public HashSet<Integer> offChatPlayers = new HashSet<>();
}

View File

@ -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));
}
}

View File

@ -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;
}