From 9c0b08888bf03c3b25f3d6e32548735a202bdfb4 Mon Sep 17 00:00:00 2001 From: zhangyuheng Date: Tue, 5 Nov 2024 09:58:05 +0800 Subject: [PATCH 1/6] zh-cn.yml --- build.gradle.kts | 2 +- docs/en-us/operator/config.md | 8 ++++ docs/zh-cn/operator/config.md | 8 ++++ docs/zh-hk/operator/config.md | 8 ++++ languages/zh-cn.yml | 88 +++++++++++++++++++++++++++-------- 5 files changed, 94 insertions(+), 20 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index b0373bcb..a7395fc9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -11,7 +11,7 @@ var libraries = listOf() libraries = libraries + "cn.lunadeer:MinecraftPluginUtils:2.0.7" group = "cn.lunadeer" -version = "2.14.5-beta" +version = "2.14.6-beta" java { toolchain.languageVersion.set(JavaLanguageVersion.of(17)) diff --git a/docs/en-us/operator/config.md b/docs/en-us/operator/config.md index c12eeefe..1c44d5d7 100644 --- a/docs/en-us/operator/config.md +++ b/docs/en-us/operator/config.md @@ -146,6 +146,14 @@ Timer: false # 性能测试计时器 - OnlyXZ:是否只计算平面面积价值(忽略Y轴)。 - Refund:删除、缩小领地时的退还金钱比例。 +> 关于 Vault 兼容性: +> +> 本插件支持 Vault 和 [VaultUnlocked](https://www.spigotmc.org/resources/vaultunlocked.117277/),其中 +> +> Dominion 2.14.5-beta 及以下请使用 VaultUnlock 2.3 版本。 +> +> Dominion 2.14.6-beta 及以上请使用 VaultUnlock 2.7 及以上版本。 + ### FlyPermissionNodes 飞行权限节点,拥有此列表任意一个权限节点的玩家不会被本插件拦截飞行。 diff --git a/docs/zh-cn/operator/config.md b/docs/zh-cn/operator/config.md index 0b3fbd9a..86ca84cf 100644 --- a/docs/zh-cn/operator/config.md +++ b/docs/zh-cn/operator/config.md @@ -183,6 +183,14 @@ Timer: false # 性能测试计时器 - OnlyXZ:是否只计算平面面积价值(忽略Y轴)。 - Refund:删除、缩小领地时的退还金钱比例。 +> 关于 Vault 兼容性: +> +> 本插件支持 Vault 和 [VaultUnlocked](https://www.spigotmc.org/resources/vaultunlocked.117277/),其中 +> +> Dominion 2.14.5-beta 及以下请使用 VaultUnlock 2.3 版本。 +> +> Dominion 2.14.6-beta 及以上请使用 VaultUnlock 2.7 及以上版本。 + ### FlyPermissionNodes 飞行权限节点,拥有此列表任意一个权限节点的玩家不会被本插件拦截飞行。 diff --git a/docs/zh-hk/operator/config.md b/docs/zh-hk/operator/config.md index 03ce0d8c..ffa35018 100644 --- a/docs/zh-hk/operator/config.md +++ b/docs/zh-hk/operator/config.md @@ -134,6 +134,14 @@ Timer: false # 性能測試計時器 - OnlyXZ:是否只計算平面面積價值(忽略Y軸)。 - Refund:刪除、縮小領地時的退還金錢比例。 +> 关于 Vault 兼容性: +> +> 本插件支持 Vault 和 [VaultUnlocked](https://www.spigotmc.org/resources/vaultunlocked.117277/),其中 +> +> Dominion 2.14.5-beta 及以下请使用 VaultUnlock 2.3 版本。 +> +> Dominion 2.14.6-beta 及以上请使用 VaultUnlock 2.7 及以上版本。 + ### FlyPermissionNodes 飛行權限節點,擁有此列表任意一個權限節點的玩家不會被本插件攔截飛行。 diff --git a/languages/zh-cn.yml b/languages/zh-cn.yml index 9ab9d5fd..7f2d1052 100644 --- a/languages/zh-cn.yml +++ b/languages/zh-cn.yml @@ -22,11 +22,20 @@ Commands: TpDominionUsage: '用法: /dominion tp <领地名称>' DominionNotExist: 领地不存在 SetMapColorUsage: '用法: /dominion set_map_color <颜色> [领地名称]' + Residence: + Command: 本插件使用 Dominion 而非 Residence 作为领地,详细请查询 /dominion help + MigrationDisabled: Residence 迁移功能没有开启 + MigrateUsage: '用法: /dominion migrate ' + NoMigrationData: 你没有可迁移的数据 + NoResidenceDominion: 未找到指定的 Residence 领地 + ResidenceNotOwner: 你不是该领地的所有者,无法迁移此领地 + MigrateFailed: '迁移失败: %s' + MigrateSuccess: 领地 %s 已从 Residence 迁移至 Dominion Group: CreateGroupUsage: '用法: /dominion group create <领地名称> <权限组名称>' DeleteGroupUsage: '用法: /dominion group delete <领地名称> <权限组名称>' RenameGroupUsage: '用法: /dominion group rename <领地名称> <权限组旧名称> <新名称>' - SetGroupFlagUsage: '用法: /dominion group set_flag <领地名称> <权限组名称> <权限名称> ' + SetGroupFlagUsage: '用法: /dominion group set_flag <领地名称> <权限组名称> <权限名称> ' AddGroupMemberUsage: '用法: /dominion group add_member <领地名称> <权限组名称> <玩家名称>' RemoveGroupMemberUsage: '用法: /dominion group remove_member <领地名称> <权限组名称> <玩家名称>' GroupUsage: '用法: /dominion group ' @@ -48,14 +57,6 @@ Commands: LeaveMessageContent: 离开提示语内容 InputColor: 输入颜色(16进制) NewDominionName: 新领地名称 - Residence: - MigrationDisabled: Residence 迁移功能没有开启 - MigrateUsage: '用法: /dominion migrate ' - NoMigrationData: 你没有可迁移的数据 - NoResidenceDominion: 未找到指定的 Residence 领地 - ResidenceNotOwner: 你不是该领地的所有者,无法迁移此领地 - MigrateFailed: '迁移失败: %s' - MigrateSuccess: 领地 %s 已从 Residence 迁移至 Dominion Operator: ReloadingDominionCache: 正在从数据库重新加载领地缓存... ReloadedDominionCache: 领地缓存已重新加载 @@ -73,6 +74,14 @@ Commands: ExportedMCAList: MCA文件列表已导出到 %s ReloadingConfig: 正在重新加载配置文件... ReloadedConfig: 配置文件已重新加载 + ExportDBConfirm: 你正在尝试导出数据库表,此行为会踢出所有玩家并关闭服务器,如确认继续请输入 /dominion export_db confirm + ExportDBBegin: 正在导出数据库表... + ExportDBSuccess: 数据库表导出完成 + ImportDBConfirm: 你正在尝试导入数据库表,此行为会踢出所有玩家并关闭服务器,如确认继续请输入 /dominion import_db confirm + ImportDBBegin: 正在导入数据库表... + ImportDBSuccess: 数据库表导入完成 + ImportDBFail: 没有可导入的数据 + ImportDBIncompleteFail: 导入失败,数据不完整,请重新导出文件 Template: CreateTemplateUsage: '用法: /dominion template create <模板名称>' DeleteTemplateUsage: '用法: /dominion template delete <模板名称>' @@ -151,10 +160,12 @@ Messages: MapColorInvalid: 颜色格式不正确 SetMapColorSuccess: 成功设置领地 %s 的卫星地图颜色为 %s SizeInvalid: 尺寸不合法 - SizeShouldBeGreaterThan4: 领地的任意一边长度不得小于4 SizeXShouldBeLessThan: 领地X方向(东西)长度不能超过 %d SizeYShouldBeLessThan: 领地Y方向(上下)高度不能超过 %d SizeZShouldBeLessThan: 领地Z方向(南北)长度不能超过 %d + SizeXShouldBeGreaterThan: 领地X方向(东西)长度不能少于 %d + SizeYShouldBeGreaterThan: 领地Y方向(上下)高度不能少于 %d + SizeZShouldBeGreaterThan: 领地Z方向(南北)长度不能少于 %d MaxYShouldBeLessThan: 领地Y坐标上限不能超过 %d MinYShouldBeLessThan: 领地Y坐标下限不能超过 %d DepthInvalid: 子领地深度不合法 @@ -243,8 +254,18 @@ Messages: TUI: NotDominionOwnerOrAdminForPage: 你不是领地 %s 的拥有者或管理员,无权访问此页面 CommandHelp: - Title: 领地插件命令帮助 + Title: Dominion 命令帮助 SubTitle: <>表示必填参数 []表示可选参数 + DominionManageDescription: 领地管理相关指令帮助 + MemberManageDescription: 成员管理相关指令帮助 + GroupManageDescription: 权限组管理相关指令帮助 + MiscDescription: 杂项相关指令帮助 + OpCommandDescription: 管理员指令帮助 + DominionManageButton: 领地管理 + MemberManageButton: 成员管理 + GroupManageButton: 权限组管理 + MiscButton: 杂项 + OpCommandButton: 管理员指令 Navigation: Menu: 主菜单 DominionList: 我的领地 @@ -260,6 +281,7 @@ TUI: TemplateSetting: 模板管理 MigrateList: Res数据列表 TitleList: 权限组称号列表 + CommandHelpList: 帮助列表总览 ManageButton: 管理 DeleteButton: 删除 SearchButton: 搜索 @@ -332,7 +354,7 @@ TUI: Volume: 领地体积: TpLocation: 传送点坐标: NoneTp: 无 - Usage: 你不在任何领地内,请指定领地名称 /dominion info <领地名称> + Usage: 你不在任何领地内,请指定领地名称 /dominion info [领地名称] MemberList: Title: 领地 %s 成员列表 AddButton: 添加成员 @@ -412,11 +434,18 @@ Config: AutoCreateRadiusError: AutoCreateRadius 不能等于 0,已重置为 10 MessageDisplayError: MessageDisplay 不能设置为 %s,已重置为 ACTION_BAR AutoCleanAfterDaysError: AutoCleanAfterDays 不能等于 0,已重置为 180 - ToolNameError: 工具名称设置错误,已重置为 ARROW + ToolNameError: Tool 名称设置错误,已重置为 ARROW + InfoToolNameError: InfoTool 名称设置错误,已重置为 STRING GroupMinYError: '%s 的 MinY 不能大于等于 MaxY,已重置为 -64 和 320' - GroupSizeXError: '%s 的 SizeX 设置过小,已重置为 128' - GroupSizeYError: '%s 的 SizeY 设置过小,已重置为 64' - GroupSizeZError: '%s 的 SizeZ 设置过小,已重置为 128' + GroupSizeMaxXError: '%s 的 Size.MaxX 设置过小,已重置为 128' + GroupSizeMaxYError: '%s 的 Size.MaxY 设置过小,已重置为 64' + GroupSizeMaxZError: '%s 的 Size.MaxZ 设置过小,已重置为 128' + GroupSizeMinXError: '%s 的 Size.MinX 设置过小,已重置为 4' + GroupSizeMinYError: '%s 的 Size.MinY 设置过小,已重置为 4' + GroupSizeMinZError: '%s 的 Size.MinZ 设置过小,已重置为 4' + GroupMaxMinXError: '%s 的 Size.MaxX 不能小于 MinX,已重置为 128 和 4' + GroupMaxMinYError: '%s 的 Size.MinY 不能小于 MinY,已重置为 64 和 4' + GroupMaxMinZError: '%s 的 Size.MaxZ 不能小于 MinZ,已重置为 128 和 4' GroupAmountError: '%s 的 Amount 设置不合法,已重置为 10' GroupDepthError: '%s 的 Depth 设置不合法,已重置为 3' GroupPriceError: '%s 的 Price 设置不合法,已重置为 10.0' @@ -427,6 +456,8 @@ Config: Comment: Language: 语言设置,参考 languages 文件夹下的文件名 AutoCreateRadius: 自动创建领地的半径,单位为方块 + DefaultJoinMessage: 默认进入领地提示消息 + DefaultLeaveMessage: 默认离开领地提示消息 MessageDisplay: 提示消息显示位置(BOSS_BAR, ACTION_BAR, TITLE, SUBTITLE, CHAT) MessageDisplayNoPermission: 玩家没有权限时的提示消息位置 MessageDisplayJoinLeave: 进入/离开领地时的提示消息位置 @@ -436,9 +467,12 @@ Config: MinY: 最小Y坐标 MaxY: 最大Y坐标 NegativeOneUnlimited: -1表示不限制 - SizeX: X方向最大长度 - SizeY: Y方向最大长度 - SizeZ: Z方向最大长度 + SizeMaxX: X方向最大长度 + SizeMaxY: Y方向最大长度 + SizeMaxZ: Z方向最大长度 + SizeMinX: X方向最小长度 + SizeMinY: Y方向最小长度 + SizeMinZ: Z方向最小长度 Amount: 最大领地数量 Depth: 子领地深度 ZeroDisabled: 0表示不开启 @@ -449,6 +483,7 @@ Config: TpCoolDown: 传送冷却 秒 AutoCleanAfterDays: 自动清理长时间未上线玩家的领地(天) ToolName: 圈地工具名称 + InfoToolName: 查询领地信息工具名称 Economy: 经济设置 VaultRequired: 需要安装 Vault 前置及插件 Price: 圈地价格 单位每方块 @@ -670,6 +705,19 @@ Flags: wither_spawn: DisplayName: 凋零生成 Description: 凋零生成以及凋零生成时产生的爆炸 +Tool: + SelectFirstPoint: '已选择第一个点: %d %d %d' + SelectSecondPoint: '已选择第二个点: %d %d %d' + NotSameWorld: 两个点不在同一个世界 + SelectTwoPoints: 已选择两个点,可以使用 /dominion create <领地名称> 创建领地 + CreateDominionPrice: 预计领地创建价格为 %.2f %s + DominionSize: 尺寸: %d x %d x %d + DominionSquare: 面积: %d + DominionVolume: 体积: %d + DominionHeight: 高度: %d + LocationNotInDominion: 这个方块(%d, %d, %d)不在任何领地内 + LocationInDominion: 这个方块(%d, %d, %d)在领地 %s 内 + DominionOwner: '领地主人: %s' Localization: LoadLanguageSuccess: 成功加载语言文件 zh-cn LoadLanguageFailed: 加载语言文件失败:%s @@ -720,3 +768,5 @@ Utils: CloseFailed: '关闭数据库连接失败: ' CheckColumnFailed: 查询列是否存在失败 CheckTableFailed: 查询表是否存在失败 + ExportTableFailed: '导出表 %s 到文件 %s 失败: %s' + ImportTableFailed: '从文件 %s 导入到表 %s 失败: %s' From 9391bf5a12de871db59b8125ea4e7aae0dd4beff Mon Sep 17 00:00:00 2001 From: Apleax <3220923564@qq.com> Date: Sat, 9 Nov 2024 06:20:02 +0800 Subject: [PATCH 2/6] /dominion help --- .../cn/lunadeer/dominion/utils/TuiUtils.java | 37 +++++++++++++++++-- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/utils/TuiUtils.java b/core/src/main/java/cn/lunadeer/dominion/utils/TuiUtils.java index 9519f956..2e6fccda 100644 --- a/core/src/main/java/cn/lunadeer/dominion/utils/TuiUtils.java +++ b/core/src/main/java/cn/lunadeer/dominion/utils/TuiUtils.java @@ -6,6 +6,7 @@ import cn.lunadeer.dominion.managers.Translation; import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.stui.ListView; +import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Line; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -66,11 +67,39 @@ public static void printHelp(CommandSender sender, String[] args) { Player player = playerOnly(sender); if (player == null) return; int page = getPage(args, 1); + + //TODO 帮助菜单的子菜单 + Line dominionManage = Line.create() + .append(Button.create(Translation.TUI_CommandHelp_DominionManageButton).setExecuteCommand("").build()) + .append(Translation.TUI_CommandHelp_DominionManageDescription); + + Line memberManage = Line.create() + .append(Button.create(Translation.TUI_CommandHelp_MemberManageButton).setExecuteCommand("").build()) + .append(Translation.TUI_CommandHelp_MemberManageDescription); + + Line groupManage = Line.create() + .append(Button.create(Translation.TUI_CommandHelp_GroupManageButton).setExecuteCommand("").build()) + .append(Translation.TUI_CommandHelp_GroupManageDescription); + + Line misc = Line.create() + .append(Button.create(Translation.TUI_CommandHelp_MiscButton).setExecuteCommand("").build()) + .append(Translation.TUI_CommandHelp_MiscDescription); + + Line opCommand = Line.create() + .append(Button.create(Translation.TUI_CommandHelp_OpCommandButton).setExecuteCommand("").build()) + .append(Translation.TUI_CommandHelp_OpCommandDescription); + ListView view = ListView.create(10, "/dominion help"); - view.title(Translation.TUI_CommandHelp_Title.trans()) - .subtitle(Line.create().append(Translation.TUI_CommandHelp_SubTitle.trans())) - // todo ... - .showOn(player, page); + view.title(Translation.TUI_CommandHelp_Title); + view.navigator(Line.create() + .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build()) + .append(Translation.TUI_Navigation_CommandHelpList)); + view.add(dominionManage); + view.add(memberManage); + view.add(groupManage); + view.add(misc); + view.add(opCommand); + view.showOn(player, page); } } From 165fd3398dccf6ff44044653b6ca7567eca7354b Mon Sep 17 00:00:00 2001 From: Apleax <3220923564@qq.com> Date: Sat, 9 Nov 2024 06:22:48 +0800 Subject: [PATCH 3/6] i18n --- .../dominion/managers/Translation.java | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/managers/Translation.java b/core/src/main/java/cn/lunadeer/dominion/managers/Translation.java index 76476eeb..b846d1f7 100644 --- a/core/src/main/java/cn/lunadeer/dominion/managers/Translation.java +++ b/core/src/main/java/cn/lunadeer/dominion/managers/Translation.java @@ -513,10 +513,31 @@ public class Translation extends Localization { @i18nField(defaultValue = "你不是领地 %s 的拥有者或管理员,无权访问此页面") public static i18n TUI_NotDominionOwnerOrAdminForPage; - @i18nField(defaultValue = "领地插件命令帮助") + @i18nField(defaultValue = "Dominion 命令帮助") public static i18n TUI_CommandHelp_Title; @i18nField(defaultValue = "<>表示必填参数 []表示可选参数") public static i18n TUI_CommandHelp_SubTitle; + @i18nField(defaultValue = "领地管理相关指令帮助") + public static i18n TUI_CommandHelp_DominionManageDescription; + @i18nField(defaultValue = "成员管理相关指令帮助") + public static i18n TUI_CommandHelp_MemberManageDescription; + @i18nField(defaultValue = "权限组管理相关指令帮助") + public static i18n TUI_CommandHelp_GroupManageDescription; + @i18nField(defaultValue = "杂项相关指令帮助") + public static i18n TUI_CommandHelp_MiscDescription; + @i18nField(defaultValue = "管理员指令帮助") + public static i18n TUI_CommandHelp_OpCommandDescription; + + @i18nField(defaultValue = "领地管理") + public static i18n TUI_CommandHelp_DominionManageButton; + @i18nField(defaultValue = "成员管理") + public static i18n TUI_CommandHelp_MemberManageButton; + @i18nField(defaultValue = "权限组管理") + public static i18n TUI_CommandHelp_GroupManageButton; + @i18nField(defaultValue = "杂项") + public static i18n TUI_CommandHelp_MiscButton; + @i18nField(defaultValue = "管理员指令") + public static i18n TUI_CommandHelp_OpCommandButton; @i18nField(defaultValue = "主菜单") public static i18n TUI_Navigation_Menu; @@ -546,6 +567,8 @@ public class Translation extends Localization { public static i18n TUI_Navigation_MigrateList; @i18nField(defaultValue = "权限组称号列表") public static i18n TUI_Navigation_TitleList; + @i18nField(defaultValue = "帮助列表总览") + public static i18n TUI_Navigation_CommandHelpList; @i18nField(defaultValue = "管理") public static i18n TUI_ManageButton; From 0398e74fcb76c5a060f2570120f20c65e4d3afef Mon Sep 17 00:00:00 2001 From: Apleax <3220923564@qq.com> Date: Sat, 9 Nov 2024 06:24:10 +0800 Subject: [PATCH 4/6] =?UTF-8?q?TUI=5FMenu=5FCommandHelpButton=E6=8C=87?= =?UTF-8?q?=E5=90=91/dominion=20help?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cn/lunadeer/dominion/uis/tuis/Menu.java | 41 +++++++++++++++++-- 1 file changed, 38 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/uis/tuis/Menu.java b/core/src/main/java/cn/lunadeer/dominion/uis/tuis/Menu.java index 4dfa5e8b..b85faf2a 100644 --- a/core/src/main/java/cn/lunadeer/dominion/uis/tuis/Menu.java +++ b/core/src/main/java/cn/lunadeer/dominion/uis/tuis/Menu.java @@ -12,19 +12,34 @@ import static cn.lunadeer.dominion.utils.CommandUtils.playerOnly; +/** + * 显示聊天框主菜单GUI + */ public class Menu { + + /** + * 在聊天栏显示主菜单,包含各指令的快捷按钮和简单介绍 + * + * @param sender 命令的来源 + * @param args 传递的命令参数 + */ public static void show(CommandSender sender, String[] args) { + //调用playerOnly方法验证sender对象是否为Player并存储在player变量中 Player player = playerOnly(sender); + //如果player为null直接return if (player == null) return; + //初始化页码为1 int page = 1; if (args.length == 2) { try { + //确定要显示的页码 page = Integer.parseInt(args[1]); } catch (Exception ignored) { } } + //链式创建菜单中的标题以及各命令的按钮和指令简介组件 Line create = Line.create() .append(Button.create(Translation.TUI_Menu_CreateDominionButton).setExecuteCommand("/dominion cui_create").build()) .append(Translation.TUI_Menu_CreateDominionDescription); @@ -38,9 +53,7 @@ public static void show(CommandSender sender, String[] args) { .append(Button.create(Translation.TUI_Menu_TemplateListButton).setExecuteCommand("/dominion template list").build()) .append(Translation.TUI_Menu_TemplateListDescription); Line help = Line.create() - .append(Button.create(Translation.TUI_Menu_CommandHelpButton).setOpenURL( - String.format("https://dominion.lunadeer.cn/%s/command-list.html", Dominion.config.getLanguage()) - ).build()) + .append(Button.create(Translation.TUI_Menu_CommandHelpButton).setExecuteCommand("/dominion help").build()) .append(Translation.TUI_Menu_CommandHelpDescription); Line link = Line.create() .append(Button.create(Translation.TUI_Menu_DocumentButton).setOpenURL( @@ -59,25 +72,47 @@ public static void show(CommandSender sender, String[] args) { Line reload_config = Line.create() .append(Button.create(Translation.TUI_Menu_ReloadConfigButton).setExecuteCommand("/dominion reload_config").build()) .append(Translation.TUI_Menu_ReloadConfigDescription); + + //以下用于将上方的组件添加到菜单中 + + //设置主菜单十行为一页以及触发指令 ListView view = ListView.create(10, "/dominion menu"); + //设置主菜单标题 view.title(Translation.TUI_Menu_Title); + //设置当前所在菜单名称 view.navigator(Line.create().append(Translation.TUI_Navigation_Menu)); + //添加第一行指令为创建领地指令 view.add(create); + //添加第二行指令为领地列表指令 view.add(list); + //从配置文件获取GroupTitle是否开启,如果开启添加第三行指令为称号列表,默认关闭 if (Dominion.config.getGroupTitleEnable()) view.add(title); + //添加第四行(如果GroupTitle开启)指令为成员权限模版列表 view.add(template); + //添加第五行(如果GroupTitle开启)指令为跳转帮助列表网页,其中%s会被替换为对应语言,如zh-cn view.add(help); + //添加第六行(如果GroupTitle开启)指令为跳转使用帮助网页,其中%s会被替换为对应语言,如zh-cn view.add(link); + //获取配置文件ResidenceMigration的boolean值 if (Dominion.config.getResidenceMigration()) { + //如果开启添加第七行指令为迁移数据,用于帮助从Residence迁移数据至Dominion view.add(migrate); } + //判断player是否拥有op权限 if (player.isOp()) { + //添加一行空白作为间隔 view.add(Line.create().append("")); + //添加一行提示“--- 以下选项仅OP可见 ---” view.add(Line.create().append(Component.text(Translation.TUI_Menu_OpOnlySection.trans(), ViewStyles.main_color))); + //添加指令“所有领地”用以查看所有的领地 view.add(all); + //添加“重载缓存”,用以重新加载领地缓存数据 view.add(reload_cache); + //添加“重载配置”,用以重新加载配置文件 view.add(reload_config); } + //将请求显示菜单GUI的player对象和需要显示的页码传给showOn以显示GUI + //由showOn检查page是否存在,若不存在则会在菜单第一行添加“页码错误” view.showOn(player, page); } } From ad3fdafa6e7aba7ba6eadfa3ab19523dd81a1ebd Mon Sep 17 00:00:00 2001 From: Apleax <3220923564@qq.com> Date: Sat, 9 Nov 2024 06:24:39 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lunadeer/dominion/uis/tuis/dominion/DominionList.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/src/main/java/cn/lunadeer/dominion/uis/tuis/dominion/DominionList.java b/core/src/main/java/cn/lunadeer/dominion/uis/tuis/dominion/DominionList.java index c21a1974..645e82bc 100644 --- a/core/src/main/java/cn/lunadeer/dominion/uis/tuis/dominion/DominionList.java +++ b/core/src/main/java/cn/lunadeer/dominion/uis/tuis/dominion/DominionList.java @@ -20,6 +20,12 @@ import static cn.lunadeer.dominion.utils.TuiUtils.getPage; public class DominionList { + /** + * 在聊天栏显示个人领地列表菜单,包含快捷操作按钮和领地名称 + * + * @param sender 命令的来源 + * @param args 传递的命令参数 + */ public static void show(CommandSender sender, String[] args) { Player player = playerOnly(sender); if (player == null) return; From 7957abfa3f0a0f902b65375c896f9f3d65efaf76 Mon Sep 17 00:00:00 2001 From: Apleax <3220923564@qq.com> Date: Sat, 9 Nov 2024 06:25:09 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/lunadeer/dominion/Commands.java | 66 ++++++++++--------- .../lunadeer/dominion/utils/CommandUtils.java | 10 +++ 2 files changed, 45 insertions(+), 31 deletions(-) diff --git a/core/src/main/java/cn/lunadeer/dominion/Commands.java b/core/src/main/java/cn/lunadeer/dominion/Commands.java index a8f58a3b..54594d2e 100644 --- a/core/src/main/java/cn/lunadeer/dominion/Commands.java +++ b/core/src/main/java/cn/lunadeer/dominion/Commands.java @@ -30,26 +30,43 @@ public class Commands implements TabExecutor { + public static List boolOptions() { + return Arrays.asList("true", "false"); + } + + public static List playerNames() { + List players = PlayerController.allPlayers(); + List names = new ArrayList<>(); + for (PlayerDTO player : players) { + names.add(player.getLastKnownName()); + } + return names; + } + /** - * Executes the given command, returning its success. + * 执行给定的命令,返回是否执行成功。 *
- * If false is returned, then the "usage" plugin.yml entry for this command - * (if defined) will be sent to the player. + * 如果返回 false,则此命令在plugin.yml中的 “usage”(用法) + * (如果已定义) 将发送给玩家。 * - * @param sender Source of the command - * @param command Command which was executed - * @param label Alias of the command which was used - * @param args Passed command arguments - * @return true if a valid command, otherwise false + * @param sender 命令的来源 + * @param command 执行的命令 + * @param label 使用的命令的别名 + * @param args 传递的命令参数 + * @return 如果命令执行成功则为 true,否则为 false */ @Override public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { + //当args长度为0时执行,即使用命令“/dom”或者“/dominion”时 if (args.length == 0) { + //显示主菜单 Menu.show(sender, args); return true; } + //当args不为0时,取出0索引的值用来确定使用了什么子命令,如“/dom menu”则args[0]为“menu” switch (args[0]) { case "menu": + //显示主菜单 Menu.show(sender, args); break; case "list": @@ -196,17 +213,17 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command } /** - * Requests a list of possible completions for a command argument. + * 请求 command 参数的可能列表,使用Tab补全。 * - * @param sender Source of the command. For players tab-completing a - * command inside a command block, this will be the player, not - * the command block. - * @param command Command which was executed - * @param label Alias of the command which was used - * @param args The arguments passed to the command, including final - * partial argument to be completed - * @return A List of possible completions for the final argument, or null - * to default to the command executor + * @param sender 命令的来源。 对于玩家 Tab 键补全 + * 命令,这将是玩家,而不是 + * 命令方块。 + * @param command 执行的命令 + * @param label 使用的命令的别名 + * @param args 传递给命令的参数,包括 final + * 部分参数待完成 + * @return 最后一个参数的可能完成列表,或 null + * 默认为命令 executor */ @Override public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) { @@ -303,17 +320,4 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command } return null; } - - public static List boolOptions() { - return Arrays.asList("true", "false"); - } - - public static List playerNames() { - List players = PlayerController.allPlayers(); - List names = new ArrayList<>(); - for (PlayerDTO player : players) { - names.add(player.getLastKnownName()); - } - return names; - } } diff --git a/core/src/main/java/cn/lunadeer/dominion/utils/CommandUtils.java b/core/src/main/java/cn/lunadeer/dominion/utils/CommandUtils.java index 30effc10..aeeaa7c3 100644 --- a/core/src/main/java/cn/lunadeer/dominion/utils/CommandUtils.java +++ b/core/src/main/java/cn/lunadeer/dominion/utils/CommandUtils.java @@ -10,12 +10,22 @@ import java.util.HashMap; import java.util.Map; +/** + * 指令工具类 + */ public class CommandUtils { + /** + * 验证指令发送者是否为Player + * @param sender 指令发送者 + * @return Player对象或者null + */ public static Player playerOnly(CommandSender sender) { if (!(sender instanceof Player)) { + //如果发送者不是Player返回null Notification.error(sender, Translation.Messages_CommandPlayerOnly); return null; } + //将sender对象强转为Player对象返回 return (Player) sender; }