From 4f8fc1f86dc7d3b1249ef538e81df43ce347c6e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=AD=B1=E5=82=91?= Date: Thu, 12 Jan 2023 21:26:54 +0800 Subject: [PATCH] Update save config changes Add `/serverchat limit ` subcommand --- README-en-US.md | 5 +++-- README.md | 7 ++++--- .../jie65535/openchat/OpenChatPlugin.java | 19 ++++++++++++------- .../openchat/commands/ChatServerCommands.java | 17 +++++++++++++++-- 4 files changed, 34 insertions(+), 14 deletions(-) diff --git a/README-en-US.md b/README-en-US.md index a497c11..59689e5 100644 --- a/README-en-US.md +++ b/README-en-US.md @@ -25,10 +25,11 @@ Player command: - `/chat off` block chat messages Server command (requires `server.chat.others` permissions) : -- `/serverchat on` Enable server chat (default) (not save) -- `/serverchat off` Disable server chat (not saving) +- `/serverchat on` Enable server chat (default) +- `/serverchat off` Disable server chat - `/serverchat ban|mute @uid [time(Minutes)]` Mute the specified player for the specified time (minutes) (optional) - `/serverchat unban|unmute @uid` Unmute a specified player +- `/serverchat limit ` Set a frequency limit for sending messages `/serverchat` can be aliased as `/sc` diff --git a/README.md b/README.md index 097f973..5895c13 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,11 @@ - `/chat off` 屏蔽聊天消息 管理用(需要 `server.chat.others` 权限): -- `/serverchat on` 启用服务器聊天(默认)(不保存) -- `/serverchat off` 关闭服务器聊天(不保存) -- `/serverchat ban @uid [time(Minutes)]` 禁言指定玩家指定时间(分钟)(可选) +- `/serverchat on` 启用服务器聊天(默认) +- `/serverchat off` 关闭服务器聊天 +- `/serverchat ban @uid [时间(分钟)]` 禁言指定玩家 - `/serverchat unban @uid` 解除指定玩家禁言 +- `/serverchat limit <次每分钟>` 设置发消息频率限制 `/serverchat` 可用别名 `/sc` diff --git a/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java b/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java index 8d29e1c..b974488 100644 --- a/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java +++ b/src/main/java/com/github/jie65535/openchat/OpenChatPlugin.java @@ -44,13 +44,7 @@ public final class OpenChatPlugin extends Plugin { var configFile = new File(getDataFolder(), "config.json"); if (!configFile.exists()) { config = new OpenChatConfig(); - try (var file = new FileWriter(configFile, StandardCharsets.UTF_8)) { - file.write(JsonUtils.encode(config)); - } catch (IOException e) { - getLogger().error("[OpenChat] Unable to write to config file."); - } catch (Exception e) { - getLogger().error("[OpenChat] Unable to save config file."); - } + saveConfig(); } else { try { config = JsonUtils.loadToClass(configFile.toPath(), OpenChatConfig.class); @@ -60,6 +54,16 @@ public final class OpenChatPlugin extends Plugin { } } } + private void saveConfig() { + var configFile = new File(getDataFolder(), "config.json"); + try (var file = new FileWriter(configFile, StandardCharsets.UTF_8)) { + file.write(JsonUtils.encode(config)); + } catch (IOException e) { + getLogger().error("[OpenChat] Unable to write to config file."); + } catch (Exception e) { + getLogger().error("[OpenChat] Unable to save config file."); + } + } private OpenChatData data; public OpenChatData getData() { @@ -119,6 +123,7 @@ public final class OpenChatPlugin extends Plugin { @Override public void onDisable() { saveData(); + saveConfig(); getLogger().info("[OpenChat] Disabled."); } } diff --git a/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java b/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java index d212439..f99bc01 100644 --- a/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java +++ b/src/main/java/com/github/jie65535/openchat/commands/ChatServerCommands.java @@ -10,7 +10,7 @@ import java.util.List; @Command(label = "serverchat", aliases = { "sc" }, - usage = { "on/off", "unban|unmute @uid", "ban|mute @uid [time(Minutes)]"}, + usage = { "on/off", "unban|unmute @uid", "ban|mute @uid [time(Minutes)]", "limit " }, permission = "server.chat", permissionTargeted = "server.chat.others") public class ChatServerCommands implements CommandHandler { @@ -40,7 +40,7 @@ public class ChatServerCommands implements CommandHandler { var time = new Date(2051190000); if (args.size() == 2) { try { - time = new Date(System.currentTimeMillis() / 1000 + Integer.parseInt(args.get(0)) * 60L); + time = new Date(System.currentTimeMillis() / 1000 + Integer.parseInt(args.get(1)) * 60L); } catch (NumberFormatException ignored) { CommandHandler.sendTranslatedMessage(sender, "commands.ban.invalid_time"); return; @@ -49,6 +49,19 @@ public class ChatServerCommands implements CommandHandler { plugin.getData().banList.put(targetPlayer.getUid(), time); CommandHandler.sendMessage(sender, "OK"); } + case "limit" -> { + var times = 20; + if (args.size() == 2) { + try { + times = Integer.parseInt(args.get(1)); + } catch (NumberFormatException ignored) { + sendUsageMessage(sender); + return; + } + } + plugin.getConfig().messageFreLimitPerMinute = times; + CommandHandler.sendMessage(sender, "OK"); + } } } }