From e0fbba0ac9f0744b921e472dabf78c8dce86bfbc Mon Sep 17 00:00:00 2001 From: Suisuroru Date: Fri, 7 Feb 2025 16:25:42 +0800 Subject: [PATCH 1/5] feat(QQCheck): add testing functionality and optimize account checking logic --- .../fun/blue_millennium/module/impl/QQCheck.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java index b12f243..6e56fbb 100644 --- a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java +++ b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java @@ -38,17 +38,26 @@ public QQCheck() { public static void GroupCheck(GroupMessageEvent event, MessageChainBuilder builder) { if (Config.QQCheckEnabled) { - boolean tag = false; + if (builder.build().contentToString().replace(" ", "").replace(Config.QQCheckStartWord, "").equals("test")) { + MessageChainBuilder checkMessage; + checkMessage = new MessageChainBuilder() + .append("Your account was linked!").append("\n") + .append("Player Name: ").append("test").append("\n") + .append("Linked UserID: ").append("ed0da36d-5cd6-4eb1-8fdb-33823927d2fc").append("\n") + .append("Linked Time: ").append(TimeUtil.getNowTime()); + event.getGroup().sendMessage(checkMessage.build()); + } + boolean check_tag = false; DataGet dp = new DataGet(); List pdl = dp.getPlayerDataByUserID(event.getSender().getId()); List builderList = new java.util.ArrayList<>(List.of()); for (PlayerData pd : pdl) { if (Bukkit.getServer().getOperators().contains(Bukkit.getPlayer(pd.playerUuid))) { - tag = true; + check_tag = true; builderList.add(BuildMessage(event, pd.playerName)); } } - if (tag) { + if (check_tag) { MessageChainBuilder finalBuilder = new MessageChainBuilder(); for (MessageChainBuilder txt : builderList) { finalBuilder.add("-----------------\n"); From 94a528b4d5be27851d912e750f00f2b14a72a7cc Mon Sep 17 00:00:00 2001 From: Suisuroru Date: Fri, 7 Feb 2025 18:32:24 +0800 Subject: [PATCH 2/5] refactor(message): Refactoring image processing and message sending logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 已知问题:无法正确获取用户头像 --- .../blue_millennium/message/ImageProcess.java | 22 ++++++++++++------- .../blue_millennium/module/impl/QQCheck.java | 2 +- .../blue_millennium/module/impl/SyncChat.java | 18 ++++++++++----- 3 files changed, 28 insertions(+), 14 deletions(-) diff --git a/src/main/java/fun/blue_millennium/message/ImageProcess.java b/src/main/java/fun/blue_millennium/message/ImageProcess.java index 1a94c9f..bded741 100644 --- a/src/main/java/fun/blue_millennium/message/ImageProcess.java +++ b/src/main/java/fun/blue_millennium/message/ImageProcess.java @@ -1,14 +1,10 @@ package fun.blue_millennium.message; import fun.blue_millennium.Main; -import fun.blue_millennium.config.Config; -import net.mamoe.mirai.event.events.GroupMessageEvent; import net.mamoe.mirai.message.data.Image; import net.mamoe.mirai.message.data.MessageChainBuilder; import org.bukkit.Bukkit; -import static fun.blue_millennium.rcon.RconCommandExecute.executeRconCommand; - /** * @author Suisuroru * Date: 2024/10/3 21:58 @@ -22,16 +18,26 @@ public static String getImageUrl(Image message) { return imageurl; } - public static void sendImageUrl(Image message, GroupMessageEvent event) { + public static String sendImageUrl(Image message) { + String value = null; try { String imageurl = getImageUrl(message); + value = processImageUrl(imageurl); + } catch (Exception e) { + Main.INSTANCE.getServer().broadcastMessage("一个错误发生于Chamomile内部,图片无法被展示,请前往控制台查看"); + } + return value; + } + + public static String processImageUrl(String imageurl) { + try { MessageChainBuilder builder = new MessageChainBuilder(); builder.append("[[CICode,url=").append(imageurl).append("]]"); - // mohist端BUG导致,使用tellraw代替直接发送 - String command = "tellraw @a \"" + Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString()) + "\""; - executeRconCommand(Config.RconIP, Config.RconPort, Config.RconPassword, command); + Bukkit.getLogger().info("Processed image " + imageurl); + return builder.build().contentToString(); } catch (Exception e) { Main.INSTANCE.getServer().broadcastMessage("一个错误发生于Chamomile内部,图片无法被展示,请前往控制台查看"); } + return imageurl; } } diff --git a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java index 6e56fbb..69ff48a 100644 --- a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java +++ b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java @@ -45,7 +45,7 @@ public static void GroupCheck(GroupMessageEvent event, MessageChainBuilder build .append("Player Name: ").append("test").append("\n") .append("Linked UserID: ").append("ed0da36d-5cd6-4eb1-8fdb-33823927d2fc").append("\n") .append("Linked Time: ").append(TimeUtil.getNowTime()); - event.getGroup().sendMessage(checkMessage.build()); + event.getGroup().sendMessage(checkMessage.build()); } boolean check_tag = false; DataGet dp = new DataGet(); diff --git a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java index 3fa7b6f..401cd2d 100644 --- a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java +++ b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java @@ -13,7 +13,9 @@ import org.bukkit.event.player.PlayerQuitEvent; import static fun.blue_millennium.Main.LOGGER; +import static fun.blue_millennium.message.ImageProcess.processImageUrl; import static fun.blue_millennium.message.ImageProcess.sendImageUrl; +import static fun.blue_millennium.rcon.RconCommandExecute.executeRconCommand; public class SyncChat extends Module implements Listener { private Group syncGroup = null; @@ -44,25 +46,31 @@ public void onEnable() { if (message instanceof PlainText || message instanceof At || message instanceof AtAll) { builder.add(message); } else if (message instanceof Image image) { - sendImageUrl(image, event); + builder.add(sendImageUrl(image)); } } if (!builder.isEmpty()) { - if (Config.BotModeOfficial & builder.build().contentToString().replace("/", "").replace(" ", "").startsWith(Config.SyncChatStartWord)) { - String message = Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace(Config.SyncChatStartWord, "").replace("%MESSAGE%", builder.build().contentToString()); - Main.INSTANCE.getServer().broadcastMessage(message); + if (Config.BotModeOfficial & builder.build().contentToString().replace(" ", "").startsWith(Config.SyncChatStartWord)) { + String avatarUrl = processImageUrl(event.getSender().getAvatarUrl()); + String message = Config.SayQQMessage.replace("%NAME%", "头像为" + avatarUrl + "的QQ用户(Userid:" + event.getSender().getId() + ")发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); + sendMessage(message); event.getGroup().sendMessage("已成功发送消息至服务器,以下为发送至服务器的原始数据:\n" + message); } else if (!Config.BotModeOfficial) { Main.INSTANCE.getServer().broadcastMessage(Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString())); } - if (builder.build().contentToString().replace("/", "").replace(" ", "").startsWith(Config.QQCheckStartWord)) { + if (builder.build().contentToString().replace(" ", "").startsWith(Config.QQCheckStartWord)) { QQCheck.GroupCheck(event, builder); } } }); } + public void sendMessage(String message) { + String command = "tellraw @a \"" + message + "\""; + executeRconCommand(Config.RconIP, Config.RconPort, Config.RconPassword, command); + } + @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { if (Config.SyncChatEnabled & !Config.SyncChatEnabledQ2SOnly & !Config.BotModeOfficial) { From 8cc55f4f6c5fd12fc79059c4c85dbc9b06fd181b Mon Sep 17 00:00:00 2001 From: Suisuroru Date: Fri, 7 Feb 2025 18:32:24 +0800 Subject: [PATCH 3/5] refactor(message): Refactoring image processing and message sending logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 已知问题:无法正确获取用户头像 --- .../blue_millennium/message/ImageProcess.java | 22 ++++++++++++------- .../blue_millennium/module/impl/QQCheck.java | 2 +- .../blue_millennium/module/impl/SyncChat.java | 20 ++++++++++++----- 3 files changed, 29 insertions(+), 15 deletions(-) diff --git a/src/main/java/fun/blue_millennium/message/ImageProcess.java b/src/main/java/fun/blue_millennium/message/ImageProcess.java index 1a94c9f..bded741 100644 --- a/src/main/java/fun/blue_millennium/message/ImageProcess.java +++ b/src/main/java/fun/blue_millennium/message/ImageProcess.java @@ -1,14 +1,10 @@ package fun.blue_millennium.message; import fun.blue_millennium.Main; -import fun.blue_millennium.config.Config; -import net.mamoe.mirai.event.events.GroupMessageEvent; import net.mamoe.mirai.message.data.Image; import net.mamoe.mirai.message.data.MessageChainBuilder; import org.bukkit.Bukkit; -import static fun.blue_millennium.rcon.RconCommandExecute.executeRconCommand; - /** * @author Suisuroru * Date: 2024/10/3 21:58 @@ -22,16 +18,26 @@ public static String getImageUrl(Image message) { return imageurl; } - public static void sendImageUrl(Image message, GroupMessageEvent event) { + public static String sendImageUrl(Image message) { + String value = null; try { String imageurl = getImageUrl(message); + value = processImageUrl(imageurl); + } catch (Exception e) { + Main.INSTANCE.getServer().broadcastMessage("一个错误发生于Chamomile内部,图片无法被展示,请前往控制台查看"); + } + return value; + } + + public static String processImageUrl(String imageurl) { + try { MessageChainBuilder builder = new MessageChainBuilder(); builder.append("[[CICode,url=").append(imageurl).append("]]"); - // mohist端BUG导致,使用tellraw代替直接发送 - String command = "tellraw @a \"" + Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString()) + "\""; - executeRconCommand(Config.RconIP, Config.RconPort, Config.RconPassword, command); + Bukkit.getLogger().info("Processed image " + imageurl); + return builder.build().contentToString(); } catch (Exception e) { Main.INSTANCE.getServer().broadcastMessage("一个错误发生于Chamomile内部,图片无法被展示,请前往控制台查看"); } + return imageurl; } } diff --git a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java index 6e56fbb..69ff48a 100644 --- a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java +++ b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java @@ -45,7 +45,7 @@ public static void GroupCheck(GroupMessageEvent event, MessageChainBuilder build .append("Player Name: ").append("test").append("\n") .append("Linked UserID: ").append("ed0da36d-5cd6-4eb1-8fdb-33823927d2fc").append("\n") .append("Linked Time: ").append(TimeUtil.getNowTime()); - event.getGroup().sendMessage(checkMessage.build()); + event.getGroup().sendMessage(checkMessage.build()); } boolean check_tag = false; DataGet dp = new DataGet(); diff --git a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java index 3fa7b6f..089d8a6 100644 --- a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java +++ b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java @@ -13,7 +13,9 @@ import org.bukkit.event.player.PlayerQuitEvent; import static fun.blue_millennium.Main.LOGGER; +import static fun.blue_millennium.message.ImageProcess.processImageUrl; import static fun.blue_millennium.message.ImageProcess.sendImageUrl; +import static fun.blue_millennium.rcon.RconCommandExecute.executeRconCommand; public class SyncChat extends Module implements Listener { private Group syncGroup = null; @@ -44,25 +46,31 @@ public void onEnable() { if (message instanceof PlainText || message instanceof At || message instanceof AtAll) { builder.add(message); } else if (message instanceof Image image) { - sendImageUrl(image, event); + builder.add(sendImageUrl(image)); } } if (!builder.isEmpty()) { - if (Config.BotModeOfficial & builder.build().contentToString().replace("/", "").replace(" ", "").startsWith(Config.SyncChatStartWord)) { - String message = Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace(Config.SyncChatStartWord, "").replace("%MESSAGE%", builder.build().contentToString()); - Main.INSTANCE.getServer().broadcastMessage(message); + if (Config.BotModeOfficial & builder.build().contentToString().replace(" ", "").startsWith(Config.SyncChatStartWord)) { + String avatarUrl = processImageUrl(event.getSender().getAvatarUrl()); + String message = Config.SayQQMessage.replace("%NAME%", "头像为" + avatarUrl + "的QQ用户(Userid:" + event.getSender().getId() + ")发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); + sendMessage(message); event.getGroup().sendMessage("已成功发送消息至服务器,以下为发送至服务器的原始数据:\n" + message); } else if (!Config.BotModeOfficial) { - Main.INSTANCE.getServer().broadcastMessage(Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString())); + sendMessage(Config.SayQQMessage.replace("%NAME%", event.getSenderName()).replace("%MESSAGE%", builder.build().contentToString())); } - if (builder.build().contentToString().replace("/", "").replace(" ", "").startsWith(Config.QQCheckStartWord)) { + if (builder.build().contentToString().replace(" ", "").startsWith(Config.QQCheckStartWord)) { QQCheck.GroupCheck(event, builder); } } }); } + public void sendMessage(String message) { + String command = "tellraw @a \"" + message + "\""; + executeRconCommand(Config.RconIP, Config.RconPort, Config.RconPassword, command); + } + @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { if (Config.SyncChatEnabled & !Config.SyncChatEnabledQ2SOnly & !Config.BotModeOfficial) { From 523c4c56034bdd11a1662f2c2e6362ac536a358e Mon Sep 17 00:00:00 2001 From: Suisuroru Date: Fri, 7 Feb 2025 18:51:16 +0800 Subject: [PATCH 4/5] refactor(commands): refactoring command related code and optimizing reporting functionality -Update the registration methods for command executors and tab completion tools -Refactoring the implementation of report command and query report command - optimizing the report function and adding the function of querying player information through QQ account -Fix potential errors and bad practices in some code --- .../commands/CommandManager.java | 6 ++-- .../execute/othercommands/Chamomile.java | 2 ++ .../sub/data/query/DataQueryByQQ.java | 2 +- .../sub/{ => report}/Report.java | 2 +- .../sub/{ => report}/ReportQuery.java | 2 +- .../commands/execute/vanilla/Ban.java | 2 +- .../commands/execute/vanilla/Pardon.java | 2 +- .../fun/blue_millennium/data/DataManager.java | 4 +-- .../data/Report/ReportCharmProcess.java | 2 +- .../data/Report/ReportDataManager.java | 3 +- .../data/UnionBan/UnionBanMain.java | 6 ++-- .../blue_millennium/module/impl/QQCheck.java | 8 +++--- .../module/impl/RconPreCheck.java | 4 +-- .../blue_millennium/module/impl/Reporter.java | 2 +- .../blue_millennium/module/impl/SyncChat.java | 28 +++++++++++++++++-- 15 files changed, 50 insertions(+), 25 deletions(-) rename src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/{ => report}/Report.java (98%) rename src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/{ => report}/ReportQuery.java (95%) diff --git a/src/main/java/fun/blue_millennium/commands/CommandManager.java b/src/main/java/fun/blue_millennium/commands/CommandManager.java index 10886ff..876bd27 100644 --- a/src/main/java/fun/blue_millennium/commands/CommandManager.java +++ b/src/main/java/fun/blue_millennium/commands/CommandManager.java @@ -1,5 +1,7 @@ package fun.blue_millennium.commands; +import fun.blue_millennium.commands.execute.othercommands.sub.report.Report; +import fun.blue_millennium.commands.execute.othercommands.sub.report.ReportQuery; import org.bukkit.plugin.java.JavaPlugin; public class CommandManager { @@ -33,9 +35,9 @@ public static void registerCommand(JavaPlugin plugin) { plugin.getCommand("link").setExecutor(new fun.blue_millennium.commands.execute.othercommands.sub.data.Bind()); plugin.getCommand("link").setTabCompleter(new fun.blue_millennium.commands.tab.othercommands.sub.Link()); - plugin.getCommand("query-report").setExecutor(new fun.blue_millennium.commands.execute.othercommands.sub.ReportQuery()); + plugin.getCommand("query-report").setExecutor(new ReportQuery()); - plugin.getCommand("report").setExecutor(new fun.blue_millennium.commands.execute.othercommands.sub.Report()); + plugin.getCommand("report").setExecutor(new Report()); plugin.getCommand("report").setTabCompleter(new fun.blue_millennium.commands.tab.othercommands.sub.Report()); plugin.getCommand("rcon").setExecutor(new fun.blue_millennium.commands.execute.othercommands.sub.Rcon()); diff --git a/src/main/java/fun/blue_millennium/commands/execute/othercommands/Chamomile.java b/src/main/java/fun/blue_millennium/commands/execute/othercommands/Chamomile.java index c825763..14e12c5 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/othercommands/Chamomile.java +++ b/src/main/java/fun/blue_millennium/commands/execute/othercommands/Chamomile.java @@ -1,6 +1,8 @@ package fun.blue_millennium.commands.execute.othercommands; import fun.blue_millennium.commands.execute.othercommands.sub.*; +import fun.blue_millennium.commands.execute.othercommands.sub.report.Report; +import fun.blue_millennium.commands.execute.othercommands.sub.report.ReportQuery; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; diff --git a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/data/query/DataQueryByQQ.java b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/data/query/DataQueryByQQ.java index 4f029ae..5aaf6f3 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/data/query/DataQueryByQQ.java +++ b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/data/query/DataQueryByQQ.java @@ -13,7 +13,7 @@ public class DataQueryByQQ implements CommandExecutor { public static long LongProcess(CommandSender sender, String[] args) { - long long_num = 0; + long long_num; try { long_num = Long.parseLong(args[0]); } catch (NumberFormatException e) { diff --git a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/Report.java b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/Report.java similarity index 98% rename from src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/Report.java rename to src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/Report.java index c6b8a0d..56f9c4c 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/Report.java +++ b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/Report.java @@ -1,4 +1,4 @@ -package fun.blue_millennium.commands.execute.othercommands.sub; +package fun.blue_millennium.commands.execute.othercommands.sub.report; import fun.blue_millennium.Main; import fun.blue_millennium.config.Config; diff --git a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/ReportQuery.java b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/ReportQuery.java similarity index 95% rename from src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/ReportQuery.java rename to src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/ReportQuery.java index 963629c..4e413ba 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/ReportQuery.java +++ b/src/main/java/fun/blue_millennium/commands/execute/othercommands/sub/report/ReportQuery.java @@ -1,4 +1,4 @@ -package fun.blue_millennium.commands.execute.othercommands.sub; +package fun.blue_millennium.commands.execute.othercommands.sub.report; import fun.blue_millennium.data.Report.ReportDataActions; import org.bukkit.command.Command; diff --git a/src/main/java/fun/blue_millennium/commands/execute/vanilla/Ban.java b/src/main/java/fun/blue_millennium/commands/execute/vanilla/Ban.java index 107f959..1aa8d2d 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/vanilla/Ban.java +++ b/src/main/java/fun/blue_millennium/commands/execute/vanilla/Ban.java @@ -35,7 +35,7 @@ public static void BanMessage(String message) { } @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (Config.UnionBanEnabled) { if (!sender.isOp()) { sender.sendMessage("您没有权限这么做"); diff --git a/src/main/java/fun/blue_millennium/commands/execute/vanilla/Pardon.java b/src/main/java/fun/blue_millennium/commands/execute/vanilla/Pardon.java index e03af05..e43c52b 100644 --- a/src/main/java/fun/blue_millennium/commands/execute/vanilla/Pardon.java +++ b/src/main/java/fun/blue_millennium/commands/execute/vanilla/Pardon.java @@ -35,7 +35,7 @@ public static void TransferToUnionPardon(String playerName, CommandSender sender } @Override - public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) { + public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { if (Config.UnionBanEnabled) { if (!sender.isOp()) { sender.sendMessage("您没有权限这么做"); diff --git a/src/main/java/fun/blue_millennium/data/DataManager.java b/src/main/java/fun/blue_millennium/data/DataManager.java index 529efb2..2ef9688 100644 --- a/src/main/java/fun/blue_millennium/data/DataManager.java +++ b/src/main/java/fun/blue_millennium/data/DataManager.java @@ -20,7 +20,7 @@ public class DataManager { public ArrayList DATA_LIST = new ArrayList<>(); public void load() { - try (JsonReader jsonReader = new JsonReader(new FileReader(Main.INSTANCE.DATA_FILE))) { + try (JsonReader jsonReader = new JsonReader(new FileReader(Main.DATA_FILE))) { DATA_LIST = new Gson().fromJson(jsonReader, new TypeToken>() { }.getType()); @@ -38,7 +38,7 @@ public void load() { public void save() { try { - FileWriter fileWriter = new FileWriter(Main.INSTANCE.DATA_FILE); + FileWriter fileWriter = new FileWriter(Main.DATA_FILE); fileWriter.write(new Gson().toJson(DATA_LIST)); fileWriter.close(); } catch (Exception exception) { diff --git a/src/main/java/fun/blue_millennium/data/Report/ReportCharmProcess.java b/src/main/java/fun/blue_millennium/data/Report/ReportCharmProcess.java index 0563a09..c0458f1 100644 --- a/src/main/java/fun/blue_millennium/data/Report/ReportCharmProcess.java +++ b/src/main/java/fun/blue_millennium/data/Report/ReportCharmProcess.java @@ -24,7 +24,7 @@ public static void reportCharmProcess(String message) { int firstColumnWidth = 30; // 第一列宽度 int otherColumnWidth = 200; // 其他列宽度 int width = 0; - int height = 0; + int height; // 计算最大宽度 for (String line : lines) { diff --git a/src/main/java/fun/blue_millennium/data/Report/ReportDataManager.java b/src/main/java/fun/blue_millennium/data/Report/ReportDataManager.java index cbc294c..2edba4a 100644 --- a/src/main/java/fun/blue_millennium/data/Report/ReportDataManager.java +++ b/src/main/java/fun/blue_millennium/data/Report/ReportDataManager.java @@ -21,8 +21,7 @@ public class ReportDataManager { * @param data 新的数据行 */ public void appendDataToCsv(List data) { - ReportDataActions writer = new ReportDataActions(); - writer.writeNewData(data); + ReportDataActions.writeNewData(data); } public void ProcessData(@NotNull CommandSender sender, @NotNull String[] args) { diff --git a/src/main/java/fun/blue_millennium/data/UnionBan/UnionBanMain.java b/src/main/java/fun/blue_millennium/data/UnionBan/UnionBanMain.java index 59ae315..abd4917 100644 --- a/src/main/java/fun/blue_millennium/data/UnionBan/UnionBanMain.java +++ b/src/main/java/fun/blue_millennium/data/UnionBan/UnionBanMain.java @@ -177,9 +177,9 @@ public static void checkBanData() { public static class BanPair { - private T1 uuid; - private T2 reason; - private T3 time; + private final T1 uuid; + private final T2 reason; + private final T3 time; private T4 sourceServer; public BanPair(T1 uuid, T2 reason, T3 time, T4 sourceServer) { diff --git a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java index 69ff48a..5379630 100644 --- a/src/main/java/fun/blue_millennium/module/impl/QQCheck.java +++ b/src/main/java/fun/blue_millennium/module/impl/QQCheck.java @@ -66,7 +66,7 @@ public static void GroupCheck(GroupMessageEvent event, MessageChainBuilder build finalBuilder.add("-----------------\n"); event.getGroup().sendMessage(finalBuilder.build()); } else { - int code = -1; + int code; try { code = Integer.parseInt(builder.build().contentToString().replace(" ", "").replace(Config.QQCheckStartWord, "")); } catch (Exception exception) { @@ -128,13 +128,13 @@ public static Data NullCheck(Data data) { @Override public void onEnable() { - Main.INSTANCE.eventChannel.subscribeAlways(NewFriendRequestEvent.class, NewFriendRequestEvent::accept); + Main.eventChannel.subscribeAlways(NewFriendRequestEvent.class, NewFriendRequestEvent::accept); - Main.INSTANCE.eventChannel.subscribeAlways(FriendMessageEvent.class, event -> { + Main.eventChannel.subscribeAlways(FriendMessageEvent.class, event -> { String message = event.getMessage().contentToString(); if (Config.QQCheckEnabled) { - int code = -1; + int code; try { code = Integer.parseInt(message); } catch (Exception exception) { diff --git a/src/main/java/fun/blue_millennium/module/impl/RconPreCheck.java b/src/main/java/fun/blue_millennium/module/impl/RconPreCheck.java index b15c5f3..2b08145 100644 --- a/src/main/java/fun/blue_millennium/module/impl/RconPreCheck.java +++ b/src/main/java/fun/blue_millennium/module/impl/RconPreCheck.java @@ -29,7 +29,7 @@ * function: Check message if need rcon function */ public class RconPreCheck extends Module implements Listener { - private List EnabledGroups = new ArrayList<>(); + private final List EnabledGroups = new ArrayList<>(); public RconPreCheck() { super("DirectConsoleCommandCheck"); @@ -63,7 +63,7 @@ public void onEnable() { return; } } - Main.INSTANCE.eventChannel.subscribeAlways(GroupMessageEvent.class, event -> { + Main.eventChannel.subscribeAlways(GroupMessageEvent.class, event -> { if (!Config.RconEnabled || !EnabledGroups.contains(event.getGroup().getId())) { return; } diff --git a/src/main/java/fun/blue_millennium/module/impl/Reporter.java b/src/main/java/fun/blue_millennium/module/impl/Reporter.java index ae21de6..69e2ab6 100644 --- a/src/main/java/fun/blue_millennium/module/impl/Reporter.java +++ b/src/main/java/fun/blue_millennium/module/impl/Reporter.java @@ -29,7 +29,7 @@ public void onLoad() { public void onEnable() { if (!Config.QQRobotEnabled) { try { - reportGroup = Main.INSTANCE.BOT.getGroup(Config.ReportGroup); + reportGroup = Main.BOT.getGroup(Config.ReportGroup); } catch (Exception e) { LOGGER.warning("Failed to get report group"); } diff --git a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java index 089d8a6..6470707 100644 --- a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java +++ b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java @@ -2,6 +2,8 @@ import fun.blue_millennium.Main; import fun.blue_millennium.config.Config; +import fun.blue_millennium.data.AuthData.DataGet; +import fun.blue_millennium.data.PlayerData; import fun.blue_millennium.module.Module; import net.mamoe.mirai.contact.Group; import net.mamoe.mirai.event.events.GroupMessageEvent; @@ -12,6 +14,8 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; +import java.util.List; + import static fun.blue_millennium.Main.LOGGER; import static fun.blue_millennium.message.ImageProcess.processImageUrl; import static fun.blue_millennium.message.ImageProcess.sendImageUrl; @@ -26,7 +30,7 @@ public SyncChat() { @Override public void onEnable() { - syncGroup = Main.INSTANCE.BOT.getGroup(Config.SyncChatGroup); + syncGroup = Main.BOT.getGroup(Config.SyncChatGroup); if (!Config.BotModeOfficial) { if (syncGroup == null) { @@ -37,7 +41,7 @@ public void onEnable() { } } - Main.INSTANCE.eventChannel.subscribeAlways(GroupMessageEvent.class, event -> { + Main.eventChannel.subscribeAlways(GroupMessageEvent.class, event -> { if (!Config.BotModeOfficial & (!Config.SyncChatEnabled || event.getGroup() != syncGroup)) { return; } @@ -53,7 +57,8 @@ public void onEnable() { if (!builder.isEmpty()) { if (Config.BotModeOfficial & builder.build().contentToString().replace(" ", "").startsWith(Config.SyncChatStartWord)) { String avatarUrl = processImageUrl(event.getSender().getAvatarUrl()); - String message = Config.SayQQMessage.replace("%NAME%", "头像为" + avatarUrl + "的QQ用户(Userid:" + event.getSender().getId() + ")发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); + String id = GetID(event); + String message = Config.SayQQMessage.replace("%NAME%", "头像为" + avatarUrl + "的QQ用户" + id + "发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); sendMessage(message); event.getGroup().sendMessage("已成功发送消息至服务器,以下为发送至服务器的原始数据:\n" + message); } else if (!Config.BotModeOfficial) { @@ -71,6 +76,23 @@ public void sendMessage(String message) { executeRconCommand(Config.RconIP, Config.RconPort, Config.RconPassword, command); } + public String GetID(GroupMessageEvent event) { + DataGet dp = new DataGet(); + List pd = dp.getPlayerDataByUserID(event.getSender().getId()); + if (pd.isEmpty()) { + return "(Userid: " + event.getSender().getId() + ")"; + } else { + StringBuilder sb = new StringBuilder(); + sb.append("(游戏内ID: "); + for (PlayerData p : pd) { + sb.append(p.playerName).append("/"); + } + sb.delete(sb.length() - 1, sb.length()); + sb.append(")"); + return sb.toString(); + } + } + @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { if (Config.SyncChatEnabled & !Config.SyncChatEnabledQ2SOnly & !Config.BotModeOfficial) { From 7d277f24604d0f89aff9d4fe160226c04f2c193e Mon Sep 17 00:00:00 2001 From: Suisuroru Date: Fri, 7 Feb 2025 18:53:48 +0800 Subject: [PATCH 5/5] refactor(module): optimized the user avatar processing logic in SyncChat - removed unused avatar variables -Modified the message format, simplified the description of user information - retained the function of sending messages to the server --- src/main/java/fun/blue_millennium/module/impl/SyncChat.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java index 6470707..67a09f9 100644 --- a/src/main/java/fun/blue_millennium/module/impl/SyncChat.java +++ b/src/main/java/fun/blue_millennium/module/impl/SyncChat.java @@ -56,9 +56,10 @@ public void onEnable() { if (!builder.isEmpty()) { if (Config.BotModeOfficial & builder.build().contentToString().replace(" ", "").startsWith(Config.SyncChatStartWord)) { - String avatarUrl = processImageUrl(event.getSender().getAvatarUrl()); +// String avatar = "头像为" + processImageUrl(event.getSender().getAvatarUrl()) + "的QQ用户"; + String avatar = "QQ用户"; String id = GetID(event); - String message = Config.SayQQMessage.replace("%NAME%", "头像为" + avatarUrl + "的QQ用户" + id + "发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); + String message = Config.SayQQMessage.replace("%NAME%", avatar + id + "发送了以下消息").replace("%MESSAGE%", builder.build().contentToString().replace(Config.SyncChatStartWord, "")); sendMessage(message); event.getGroup().sendMessage("已成功发送消息至服务器,以下为发送至服务器的原始数据:\n" + message); } else if (!Config.BotModeOfficial) {