Update save config changes

Add `/serverchat limit <times>` subcommand
This commit is contained in:
2023-01-12 21:26:54 +08:00
parent 86c2b9ae13
commit 4f8fc1f86d
4 changed files with 34 additions and 14 deletions

View File

@ -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 <timesPerMinute>` Set a frequency limit for sending messages
`/serverchat` can be aliased as `/sc`

View File

@ -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`

View File

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

View File

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