From 758d1634d29aca7b7a466e0f70826ba378b21e4e Mon Sep 17 00:00:00 2001 From: Xujiayao Date: Mon, 16 Mar 2026 20:36:33 +0800 Subject: [PATCH] format --- README.md | 3 +- .../packets/events/DiscordEventPacket.java | 16 +++-- .../network/packets/events/TextSegment.java | 24 +++++-- .../server/discord/DiscordEventHandler.java | 2 +- .../server/discord/DiscordManager.java | 8 ++- .../server/discord/DiscordMessageParser.java | 65 +++++++++---------- .../utils/events/CoreEvents.java | 8 +-- .../resources/config/config_standalone.yml | 6 +- .../config/custom_messages/en_us.yml | 2 +- .../config/custom_messages/zh_cn.yml | 2 +- .../events/MinecraftEventHandler.java | 5 +- .../translations/TranslationManager.java | 3 +- 12 files changed, 83 insertions(+), 61 deletions(-) diff --git a/README.md b/README.md index a3f6ac9d..4d6cf519 100644 --- a/README.md +++ b/README.md @@ -142,7 +142,8 @@ DMCC 在 Client 端提供独立的 `whitelist` 代理命令(默认所需权限 当 DMCC 处于 `standalone + multi_server_client` 架构时,不同子服务器可使用不同 OP 映射策略。 在 `standalone` 配置的 `user_mappings` 与 `role_mappings` 中,每个条目包含一个顶层 `op_level`(给 Standalone 自身查询使用),以及一个 -`server_overrides` 列表字典。若 `server_overrides` 中没有某子服务器的对应条目,则该子服务器自动降级使用顶层 `op_level` 作为默认回退值。 +`server_overrides` 列表字典。若 `server_overrides` 中没有某子服务器的对应条目,则该子服务器自动降级使用顶层 `op_level` +作为默认回退值。 ## 7. 命令列表与权限参考 diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/DiscordEventPacket.java b/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/DiscordEventPacket.java index 0c6b689c..ab1edb7d 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/DiscordEventPacket.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/DiscordEventPacket.java @@ -16,10 +16,14 @@ import java.util.List; */ public class DiscordEventPacket extends Packet { - /** The type of Discord event. */ + /** + * The type of Discord event. + */ public EventType type; - /** Pre-built rich text segments for the main message line. */ + /** + * Pre-built rich text segments for the main message line. + */ public List segments; /** @@ -67,10 +71,14 @@ public class DiscordEventPacket extends Packet { * @author Xujiayao */ public enum EventType { - /** A regular Discord chat message forwarded to Minecraft. */ + /** + * A regular Discord chat message forwarded to Minecraft. + */ CHAT, - /** A Discord command execution notification forwarded to Minecraft. */ + /** + * A Discord command execution notification forwarded to Minecraft. + */ COMMAND } } diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/TextSegment.java b/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/TextSegment.java index 088c893a..74b54fa6 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/TextSegment.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/network/packets/events/TextSegment.java @@ -21,22 +21,34 @@ public class TextSegment implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** The display text of this segment. */ + /** + * The display text of this segment. + */ public String text; - /** Whether the text should be rendered in bold. */ + /** + * Whether the text should be rendered in bold. + */ public boolean bold; - /** Whether the text should be rendered in italic. */ + /** + * Whether the text should be rendered in italic. + */ public boolean italic; - /** Whether the text should be rendered with underline. */ + /** + * Whether the text should be rendered with underline. + */ public boolean underlined; - /** Whether the text should be rendered with strikethrough. */ + /** + * Whether the text should be rendered with strikethrough. + */ public boolean strikethrough; - /** Whether the text should be rendered obfuscated. */ + /** + * Whether the text should be rendered obfuscated. + */ public boolean obfuscated; /** diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordEventHandler.java b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordEventHandler.java index 85042b2d..9f636381 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordEventHandler.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordEventHandler.java @@ -21,8 +21,8 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; -import java.util.Set; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; /** diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java index b580bbe7..eb05c756 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordManager.java @@ -11,7 +11,9 @@ import net.dv8tion.jda.api.JDA; import net.dv8tion.jda.api.JDABuilder; import net.dv8tion.jda.api.OnlineStatus; import net.dv8tion.jda.api.entities.Activity; +import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; +import net.dv8tion.jda.api.entities.User; import net.dv8tion.jda.api.entities.Webhook; import net.dv8tion.jda.api.entities.channel.concrete.TextChannel; import net.dv8tion.jda.api.exceptions.InsufficientPermissionException; @@ -295,7 +297,7 @@ public class DiscordManager { * @param discordId The Discord user ID. * @return The User object, or null if JDA is not available or user not found. */ - public static net.dv8tion.jda.api.entities.User retrieveUser(String discordId) { + public static User retrieveUser(String discordId) { if (jda == null) return null; try { return jda.retrieveUserById(discordId).complete(); @@ -310,11 +312,11 @@ public class DiscordManager { * @param discordId The Discord user ID. * @return The Member object, or null if JDA is not available or member not found. */ - public static net.dv8tion.jda.api.entities.Member retrieveMember(String discordId) { + public static Member retrieveMember(String discordId) { if (jda == null) return null; for (var guild : jda.getGuilds()) { try { - net.dv8tion.jda.api.entities.Member member = guild.retrieveMemberById(discordId).complete(); + Member member = guild.retrieveMemberById(discordId).complete(); if (member != null) { return member; } diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordMessageParser.java b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordMessageParser.java index f95559b1..ed714a94 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordMessageParser.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/server/discord/DiscordMessageParser.java @@ -4,7 +4,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.xujiayao.discord_mc_chat.network.packets.events.TextSegment; import com.xujiayao.discord_mc_chat.server.linking.LinkedAccountManager; import com.xujiayao.discord_mc_chat.utils.config.ConfigManager; -import com.xujiayao.discord_mc_chat.utils.config.ModeManager; import com.xujiayao.discord_mc_chat.utils.i18n.I18nManager; import net.dv8tion.jda.api.entities.Member; import net.dv8tion.jda.api.entities.Message; @@ -370,13 +369,13 @@ public class DiscordMessageParser { * Parses the raw text content of a Discord message, handling mentions, emojis, * markdown, and hyperlinks inline. * - * @param raw The raw content string. - * @param message The Discord message (for resolving mentions). - * @param parseMentions Whether to parse mentions. - * @param parseCustomEmojis Whether to parse custom emojis. + * @param raw The raw content string. + * @param message The Discord message (for resolving mentions). + * @param parseMentions Whether to parse mentions. + * @param parseCustomEmojis Whether to parse custom emojis. * @param parseUnicodeEmojis Whether to parse unicode emojis. - * @param parseMarkdown Whether to parse markdown formatting. - * @param parseHyperlinks Whether to parse hyperlinks. + * @param parseMarkdown Whether to parse markdown formatting. + * @param parseHyperlinks Whether to parse hyperlinks. * @return The list of text segments for the raw content. */ private static List parseRawContent(String raw, Message message, @@ -721,32 +720,6 @@ public class DiscordMessageParser { return "blue"; } - /** - * Internal record representing a span of raw text that maps to a special token - * (mention, emoji, link, etc.). - */ - private record TokenSpan(int start, int end, TextSegment segment) { - } - - /** - * Internal record representing a markdown-formatted span of text. - */ - private record MarkdownSpan(int start, int end, String innerText, MarkdownType type) { - } - - /** - * Types of markdown formatting. - */ - private enum MarkdownType { - BOLD, - ITALIC, - UNDERLINE, - STRIKETHROUGH, - SPOILER, - CODE_BLOCK, - INLINE_CODE - } - /** * Safely truncates a string to the given maximum character count without splitting * surrogate pairs (multi-byte emoji characters). @@ -765,4 +738,30 @@ public class DiscordMessageParser { } return text.substring(0, maxLen); } + + /** + * Types of markdown formatting. + */ + private enum MarkdownType { + BOLD, + ITALIC, + UNDERLINE, + STRIKETHROUGH, + SPOILER, + CODE_BLOCK, + INLINE_CODE + } + + /** + * Internal record representing a span of raw text that maps to a special token + * (mention, emoji, link, etc.). + */ + private record TokenSpan(int start, int end, TextSegment segment) { + } + + /** + * Internal record representing a markdown-formatted span of text. + */ + private record MarkdownSpan(int start, int end, String innerText, MarkdownType type) { + } } diff --git a/core/src/main/java/com/xujiayao/discord_mc_chat/utils/events/CoreEvents.java b/core/src/main/java/com/xujiayao/discord_mc_chat/utils/events/CoreEvents.java index 8b728783..b2572f04 100644 --- a/core/src/main/java/com/xujiayao/discord_mc_chat/utils/events/CoreEvents.java +++ b/core/src/main/java/com/xujiayao/discord_mc_chat/utils/events/CoreEvents.java @@ -142,11 +142,11 @@ public class CoreEvents { * The handler should convert the pre-built {@link TextSegment} lists into * Minecraft Components and broadcast them to all online players. * - * @param segments The main message line segments. - * @param replySegments The reply context line segments (may be null or empty). - * @param mentionNotificationText The mention notification text (may be null). + * @param segments The main message line segments. + * @param replySegments The reply context line segments (may be null or empty). + * @param mentionNotificationText The mention notification text (may be null). * @param mentionNotificationStyle The notification style: "action_bar", "title", or "chat". - * @param mentionedPlayerUuids UUIDs of players who should receive mention notifications. + * @param mentionedPlayerUuids UUIDs of players who should receive mention notifications. */ public record DiscordChatMessageEvent( List segments, diff --git a/core/src/main/resources/config/config_standalone.yml b/core/src/main/resources/config/config_standalone.yml index adc0ac71..1246e512 100644 --- a/core/src/main/resources/config/config_standalone.yml +++ b/core/src/main/resources/config/config_standalone.yml @@ -153,7 +153,7 @@ account_linking: user_mappings: - user: "xujiayao" op_level: 4 - server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 + server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 - server: "SMP" op_level: 4 - server: "CMP" @@ -163,7 +163,7 @@ account_linking: # 示例 1:拥有 "Admins" 角色的用户将被视为 OP 3。 - role: "Admins" op_level: 3 - server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 + server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 - server: "SMP" op_level: 3 - server: "CMP" @@ -171,7 +171,7 @@ account_linking: # 示例 2:可将基础认证角色映射为 OP 0,使其有权执行无需特殊权限的 DMCC 命令(如委托执行白名单)。 - role: "Players" op_level: 0 - server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 + server_overrides: # 如果该子服务器不需要覆盖上方定义的 OP 等级设置,可以删除该项。此列表可以为空。 - server: "SMP" op_level: 0 - server: "CMP" diff --git a/core/src/main/resources/config/custom_messages/en_us.yml b/core/src/main/resources/config/custom_messages/en_us.yml index 87b13582..cd4f2ed5 100644 --- a/core/src/main/resources/config/custom_messages/en_us.yml +++ b/core/src/main/resources/config/custom_messages/en_us.yml @@ -49,7 +49,7 @@ common: discord_to_minecraft: mentioned: "{effective_name} mentioned you!" - response: # 回复其它用户的消息时,原消息的格式 + response: # 回复其它用户的消息时,原消息的格式 - text: " ┌──── " bold: true color: "dark_gray" diff --git a/core/src/main/resources/config/custom_messages/zh_cn.yml b/core/src/main/resources/config/custom_messages/zh_cn.yml index c19267a7..99ec0376 100644 --- a/core/src/main/resources/config/custom_messages/zh_cn.yml +++ b/core/src/main/resources/config/custom_messages/zh_cn.yml @@ -49,7 +49,7 @@ common: discord_to_minecraft: mentioned: "{effective_name} 提及了你!" - response: # 回复其它用户的消息时,原消息的格式 + response: # 回复其它用户的消息时,原消息的格式 - text: " ┌──── " bold: true color: "dark_gray" diff --git a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java index f8f72af8..43231af0 100644 --- a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java +++ b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/events/MinecraftEventHandler.java @@ -71,6 +71,7 @@ import java.util.concurrent.TimeUnit; */ public class MinecraftEventHandler { + private static final String DEFAULT_MENTION_STYLE = "title"; private static MinecraftServer serverInstance; /** @@ -657,7 +658,7 @@ public class MinecraftEventHandler { * Builds a clickable Component that suggests a command (fills the chat input) when clicked. * Displayed in green with brackets. * - * @param command The command to suggest (fill into chat input). + * @param command The command to suggest (fill into chat input). * @return A clickable Component. */ private static Component buildSuggestCommand(String command) { @@ -805,8 +806,6 @@ public class MinecraftEventHandler { } } - private static final String DEFAULT_MENTION_STYLE = "title"; - /** * Sends a mention notification to a player using the configured style. * diff --git a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/translations/TranslationManager.java b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/translations/TranslationManager.java index 2d5fc27a..00b8e992 100644 --- a/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/translations/TranslationManager.java +++ b/minecraft/src/main/java/com/xujiayao/discord_mc_chat/minecraft/translations/TranslationManager.java @@ -7,6 +7,7 @@ import com.xujiayao.discord_mc_chat.utils.StringUtils; import com.xujiayao.discord_mc_chat.utils.i18n.I18nManager; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.contents.TranslatableContents; +import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; import net.minecraft.server.packs.PackResources; import net.minecraft.server.packs.PackType; @@ -245,7 +246,7 @@ public class TranslationManager { packResources1.getNamespaces(PackType.CLIENT_RESOURCES).forEach(namespace -> { IoSupplier supplier = packResources1.getResource( PackType.CLIENT_RESOURCES, - net.minecraft.resources.ResourceLocation.fromNamespaceAndPath(namespace, "lang/" + language + ".json") + ResourceLocation.fromNamespaceAndPath(namespace, "lang/" + language + ".json") ); if (supplier != null) {