实现了 tui 领地管理部分的 i18n

This commit is contained in:
zhangyuheng 2024-09-05 17:34:27 +08:00
parent ec66ca545a
commit f2c04df403
18 changed files with 466 additions and 164 deletions

View File

@ -549,6 +549,17 @@ public class ConfigManager {
_plugin.saveConfig(); _plugin.saveConfig();
} }
public String getLanguage() {
return _language;
}
public void setLanguage(String language) {
_language = language;
_file.set("Language", language);
_plugin.saveConfig();
Translation.instance.loadLocale(language);
}
private final Dominion _plugin; private final Dominion _plugin;
private FileConfiguration _file; private FileConfiguration _file;
private Boolean _debug; private Boolean _debug;

View File

@ -517,6 +517,257 @@ public class Translation extends Localization {
@i18nField(defaultValue = "<>表示必填参数 []表示可选参数") @i18nField(defaultValue = "<>表示必填参数 []表示可选参数")
public static i18n TUI_CommandHelp_SubTitle; public static i18n TUI_CommandHelp_SubTitle;
@i18nField(defaultValue = "主菜单")
public static i18n TUI_Navigation_Menu;
@i18nField(defaultValue = "我的领地")
public static i18n TUI_Navigation_DominionList;
@i18nField(defaultValue = "管理界面")
public static i18n TUI_Navigation_Manage;
@i18nField(defaultValue = "环境设置")
public static i18n TUI_Navigation_EnvSetting;
@i18nField(defaultValue = "访客权限")
public static i18n TUI_Navigation_GuestSetting;
@i18nField(defaultValue = "成员列表")
public static i18n TUI_Navigation_MemberList;
@i18nField(defaultValue = "成员权限")
public static i18n TUI_Navigation_MemberSetting;
@i18nField(defaultValue = "权限组列表")
public static i18n TUI_Navigation_GroupList;
@i18nField(defaultValue = "权限组管理")
public static i18n TUI_Navigation_GroupSetting;
@i18nField(defaultValue = "管理")
public static i18n TUI_ManageButton;
@i18nField(defaultValue = "删除")
public static i18n TUI_DeleteButton;
@i18nField(defaultValue = "搜索")
public static i18n TUI_SearchButton;
@i18nField(defaultValue = "返回")
public static i18n TUI_BackButton;
@i18nField(defaultValue = "选择")
public static i18n TUI_SelectButton;
@i18nField(defaultValue = "编辑")
public static i18n TUI_EditButton;
@i18nField(defaultValue = "Dominion 领地系统")
public static i18n TUI_Menu_Title;
@i18nField(defaultValue = "创建领地")
public static i18n TUI_Menu_CreateDominionButton;
@i18nField(defaultValue = "以你为中心自动创建一个新的领地")
public static i18n TUI_Menu_CreateDominionDescription;
@i18nField(defaultValue = "我的领地")
public static i18n TUI_Menu_MyDominionButton;
@i18nField(defaultValue = "查看我的领地列表")
public static i18n TUI_Menu_MyDominionDescription;
@i18nField(defaultValue = "称号列表")
public static i18n TUI_Menu_TitleListButton;
@i18nField(defaultValue = "查看/使用权限组称号")
public static i18n TUI_Menu_TitleListDescription;
@i18nField(defaultValue = "模板列表")
public static i18n TUI_Menu_TemplateListButton;
@i18nField(defaultValue = "成员权限模板列表")
public static i18n TUI_Menu_TemplateListDescription;
@i18nField(defaultValue = "指令帮助")
public static i18n TUI_Menu_CommandHelpButton;
@i18nField(defaultValue = "查看指令列表")
public static i18n TUI_Menu_CommandHelpDescription;
@i18nField(defaultValue = "使用文档")
public static i18n TUI_Menu_DocumentButton;
@i18nField(defaultValue = "在浏览器中打开使用文档")
public static i18n TUI_Menu_DocumentDescription;
@i18nField(defaultValue = "迁移数据")
public static i18n TUI_Menu_MigrateButton;
@i18nField(defaultValue = "把你的领地从Residence迁移到Dominion")
public static i18n TUI_Menu_MigrateDescription;
@i18nField(defaultValue = "所有领地")
public static i18n TUI_Menu_AllDominionButton;
@i18nField(defaultValue = "查看所有领地")
public static i18n TUI_Menu_AllDominionDescription;
@i18nField(defaultValue = "系统配置")
public static i18n TUI_Menu_ConfigButton;
@i18nField(defaultValue = "查看/修改系统配置")
public static i18n TUI_Menu_ConfigDescription;
@i18nField(defaultValue = "重载缓存")
public static i18n TUI_Menu_ReloadCacheButton;
@i18nField(defaultValue = "手动刷新缓存可解决一些玩家操作无效问题,不建议频繁操作")
public static i18n TUI_Menu_ReloadCacheDescription;
@i18nField(defaultValue = "重载配置")
public static i18n TUI_Menu_ReloadConfigButton;
@i18nField(defaultValue = "重载配置文件")
public static i18n TUI_Menu_ReloadConfigDescription;
@i18nField(defaultValue = "--- 以下选项仅OP可见 ---")
public static i18n TUI_Menu_OpOnlySection;
@i18nField(defaultValue = "我的领地列表")
public static i18n TUI_DominionList_Title;
@i18nField(defaultValue = "--- 以下为你拥有管理员权限的领地 ---")
public static i18n TUI_DominionList_AdminSection;
@i18nField(defaultValue = "领地 %s 管理界面")
public static i18n TUI_DominionManage_Title;
@i18nField(defaultValue = "详细信息")
public static i18n TUI_DominionManage_InfoButton;
@i18nField(defaultValue = "查看领地详细信息")
public static i18n TUI_DominionManage_InfoDescription;
@i18nField(defaultValue = "环境设置")
public static i18n TUI_DominionManage_EnvSettingButton;
@i18nField(defaultValue = "设置领地内的一些环境行为")
public static i18n TUI_DominionManage_EnvSettingDescription;
@i18nField(defaultValue = "访客权限")
public static i18n TUI_DominionManage_GuestSettingButton;
@i18nField(defaultValue = "配置访客在此领地的权限")
public static i18n TUI_DominionManage_GuestSettingDescription;
@i18nField(defaultValue = "成员管理")
public static i18n TUI_DominionManage_MemberListButton;
@i18nField(defaultValue = "管理此领地成员的权限")
public static i18n TUI_DominionManage_MemberListDescription;
@i18nField(defaultValue = "权限组")
public static i18n TUI_DominionManage_GroupListButton;
@i18nField(defaultValue = "管理此领地的权限组")
public static i18n TUI_DominionManage_GroupListDescription;
@i18nField(defaultValue = "设置传送点")
public static i18n TUI_DominionManage_SetTpLocationButton;
@i18nField(defaultValue = "设置你当前位置为此领地传送点")
public static i18n TUI_DominionManage_SetTpLocationDescription;
@i18nField(defaultValue = "重命名")
public static i18n TUI_DominionManage_RenameButton;
@i18nField(defaultValue = "重命名领地")
public static i18n TUI_DominionManage_RenameDescription;
@i18nField(defaultValue = "编辑欢迎提示语")
public static i18n TUI_DominionManage_EditJoinMessageButton;
@i18nField(defaultValue = "当玩家进入领地时显示的消息")
public static i18n TUI_DominionManage_EditJoinMessageDescription;
@i18nField(defaultValue = "编辑离开提示语")
public static i18n TUI_DominionManage_EditLeaveMessageButton;
@i18nField(defaultValue = "当玩家离开领地时显示的消息")
public static i18n TUI_DominionManage_EditLeaveMessageDescription;
@i18nField(defaultValue = "设置地块颜色")
public static i18n TUI_DominionManage_SetMapColorButton;
@i18nField(defaultValue = "设置卫星地图上的地块颜色")
public static i18n TUI_DominionManage_SetMapColorDescription;
@i18nField(defaultValue = "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>")
public static i18n TUI_DominionManage_NotInDominion;
@i18nField(defaultValue = "领地 %s 环境设置")
public static i18n TUI_EnvSetting_Title;
@i18nField(defaultValue = "用法: /dominion env_setting <领地名称> [页码]")
public static i18n TUI_EnvSetting_Usage;
@i18nField(defaultValue = "领地 %s 访客权限")
public static i18n TUI_GuestSetting_Title;
@i18nField(defaultValue = "用法: /dominion guest_setting <领地名称> [页码]")
public static i18n TUI_GuestSetting_Usage;
@i18nField(defaultValue = "领地 %s 的尺寸信息")
public static i18n TUI_SizeInfo_Title;
@i18nField(defaultValue = "领地所有者:")
public static i18n TUI_SizeInfo_Owner;
@i18nField(defaultValue = "领地大小:")
public static i18n TUI_SizeInfo_Size;
@i18nField(defaultValue = "中心坐标:")
public static i18n TUI_SizeInfo_Center;
@i18nField(defaultValue = "垂直高度:")
public static i18n TUI_SizeInfo_Vertical;
@i18nField(defaultValue = "Y轴坐标")
public static i18n TUI_SizeInfo_VertY;
@i18nField(defaultValue = "水平面积:")
public static i18n TUI_SizeInfo_Square;
@i18nField(defaultValue = "领地体积:")
public static i18n TUI_SizeInfo_Volume;
@i18nField(defaultValue = "传送点坐标:")
public static i18n TUI_SizeInfo_TpLocation;
@i18nField(defaultValue = "")
public static i18n TUI_SizeInfo_NoneTp;
@i18nField(defaultValue = "你不在任何领地内,请指定领地名称 /dominion info <领地名称>")
public static i18n TUI_SizeInfo_Usage;
@i18nField(defaultValue = "领地 %s 成员列表")
public static i18n TUI_MemberList_Title;
@i18nField(defaultValue = "添加成员")
public static i18n TUI_MemberList_AddButton;
@i18nField(defaultValue = "权限")
public static i18n TUI_MemberList_FlagButton;
@i18nField(defaultValue = "配置成员权限")
public static i18n TUI_MemberList_FlagDescription;
@i18nField(defaultValue = "移除")
public static i18n TUI_MemberList_RemoveButton;
@i18nField(defaultValue = "将此成员移出(变为访客)")
public static i18n TUI_MemberList_RemoveDescription;
@i18nField(defaultValue = "你不是领地主人,无法编辑管理员权限")
public static i18n TUI_MemberList_NoPermissionSet;
@i18nField(defaultValue = "你不是领地主人,无法移除管理员")
public static i18n TUI_MemberList_NoPermissionRemove;
@i18nField(defaultValue = "此成员属于权限组 %s 无法单独编辑权限")
public static i18n TUI_MemberList_BelongToGroup;
@i18nField(defaultValue = "用法: /dominion member list <领地名称> [页码]")
public static i18n TUI_MemberList_Usage;
@i18nField(defaultValue = "这是一个管理员")
public static i18n TUI_MemberList_AdminTag;
@i18nField(defaultValue = "这是一个普通成员")
public static i18n TUI_MemberList_NormalTag;
@i18nField(defaultValue = "这是一个黑名单成员")
public static i18n TUI_MemberList_BlacklistTag;
@i18nField(defaultValue = "这个成员在一个权限组里")
public static i18n TUI_MemberList_GroupTag;
@i18nField(defaultValue = "玩家 %s 在领地 %s 的权限设置")
public static i18n TUI_MemberSetting_Title;
@i18nField(defaultValue = "套用模板")
public static i18n TUI_MemberSetting_ApplyTemplateButton;
@i18nField(defaultValue = "选择一个权限模板套用")
public static i18n TUI_MemberSetting_ApplyTemplateDescription;
@i18nField(defaultValue = "用法: /dominion member setting <领地名称> <玩家名称> [页码]")
public static i18n TUI_MemberSetting_Usage;
@i18nField(defaultValue = "选择玩家添加为成员")
public static i18n TUI_SelectPlayer_Title;
@i18nField(defaultValue = "只能选择已经登录过的玩家")
public static i18n TUI_SelectPlayer_Description;
@i18nField(defaultValue = "用法: /dominion member select_player <领地名称> [页码]")
public static i18n TUI_SelectPlayer_Usage;
@i18nField(defaultValue = "选择一个模板")
public static i18n TUI_SelectTemplate_Title;
@i18nField(defaultValue = "套用在领地 %s 的成员 %s 身上")
public static i18n TUI_SelectTemplate_Description;
@i18nField(defaultValue = "用法: /dominion member select_template <领地名称> <玩家名称> [页码]")
public static i18n TUI_SelectTemplate_Usage;
@i18nField(defaultValue = "权限组列表")
public static i18n TUI_GroupList_Title;
@i18nField(defaultValue = "创建权限组")
public static i18n TUI_GroupList_CreateButton;
@i18nField(defaultValue = "创建一个新的权限组")
public static i18n TUI_GroupList_CreateDescription;
@i18nField(defaultValue = "删除权限组 %s")
public static i18n TUI_GroupList_DeleteDescription;
@i18nField(defaultValue = "编辑权限组 %s")
public static i18n TUI_GroupList_EditDescription;
@i18nField(defaultValue = "添加成员到权限组 %s")
public static i18n TUI_GroupList_AddMemberDescription;
@i18nField(defaultValue = "把 %s 移出权限组 %s")
public static i18n TUI_GroupList_RemoveMemberDescription;
@i18nField(defaultValue = "用法: /dominion group list <领地名称> [页码]")
public static i18n TUI_GroupList_Usage;
@i18nField(defaultValue = "重命名此权限组")
public static i18n TUI_GroupSetting_RenameButton;
@i18nField(defaultValue = "用法: /dominion group setting <领地名称> <权限组名称> [页码]")
public static i18n TUI_GroupSetting_Usage;
@i18nField(defaultValue = "权限组 ")
public static i18n TUI_GroupSetting_TitleL;
@i18nField(defaultValue = " 管理")
public static i18n TUI_GroupSetting_TitleR;
@i18nField(defaultValue = "重命名权限组 %s")
public static i18n TUI_GroupSetting_RenameDescription;
@i18nField(defaultValue = "选择成员")
public static i18n TUI_SelectMember_Title;
@i18nField(defaultValue = "选择成员添加到权限组 %s")
public static i18n TUI_SelectMember_Description;
@i18nField(defaultValue = "用法: /dominion group select_member <领地名称> <权限组名称> [回显页码] [页码]")
public static i18n TUI_SelectMember_Usage;
@i18nField(defaultValue = "输入要创建的领地名称") @i18nField(defaultValue = "输入要创建的领地名称")
public static i18n CUI_Input_CreateDominion; public static i18n CUI_Input_CreateDominion;
@i18nField(defaultValue = "输入要创建的权限组名称") @i18nField(defaultValue = "输入要创建的权限组名称")
@ -644,6 +895,11 @@ public class Translation extends Localization {
@i18nField(defaultValue = "性能测试计时器") @i18nField(defaultValue = "性能测试计时器")
public static i18n Config_Comment_PerformanceTimer; public static i18n Config_Comment_PerformanceTimer;
@i18nField(defaultValue = "管理员")
public static i18n Flags_admin_DisplayName;
@i18nField(defaultValue = "管理领地内的其他成员权限")
public static i18n Flags_admin_Description;
public Translation(JavaPlugin plugin) { public Translation(JavaPlugin plugin) {
super(plugin); super(plugin);

View File

@ -1,6 +1,7 @@
package cn.lunadeer.dominion.tuis; package cn.lunadeer.dominion.tuis;
import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.ViewStyles; import cn.lunadeer.minecraftpluginutils.stui.ViewStyles;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -25,53 +26,57 @@ public class Menu {
} }
Line create = Line.create() Line create = Line.create()
.append(Button.create("创建领地").setExecuteCommand("/dominion cui_create").build()) .append(Button.create(Translation.TUI_Menu_CreateDominionButton).setExecuteCommand("/dominion cui_create").build())
.append("以你为中心自动创建一个新的领地"); .append(Translation.TUI_Menu_CreateDominionDescription);
Line list = Line.create() Line list = Line.create()
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Menu_MyDominionButton).setExecuteCommand("/dominion list").build())
.append("查看我的领地"); .append(Translation.TUI_Menu_MyDominionDescription);
Line title = Line.create() Line title = Line.create()
.append(Button.create("称号列表").setExecuteCommand("/dominion title_list").build()) .append(Button.create(Translation.TUI_Menu_TitleListButton).setExecuteCommand("/dominion title_list").build())
.append("查看/使用权限组称号"); .append(Translation.TUI_Menu_TitleListDescription);
Line template = Line.create() Line template = Line.create()
.append(Button.create("模板列表").setExecuteCommand("/dominion template list").build()) .append(Button.create(Translation.TUI_Menu_TemplateListButton).setExecuteCommand("/dominion template list").build())
.append("成员权限模板列表"); .append(Translation.TUI_Menu_TemplateListDescription);
// Line help = Line.create() Line help = Line.create()
// .append(Button.create("指令帮助").setExecuteCommand("/dominion help").build()) .append(Button.create(Translation.TUI_Menu_CommandHelpButton).setOpenURL(
// .append("查看指令帮助"); String.format("https://dominion.lunadeer.cn/%s/command-list.html", Dominion.config.getLanguage())
).build())
.append(Translation.TUI_Menu_CommandHelpDescription);
Line link = Line.create() Line link = Line.create()
.append(Button.create("使用文档").setOpenURL("https://ssl.lunadeer.cn:14448/doc/23/").build()) .append(Button.create(Translation.TUI_Menu_DocumentButton).setOpenURL(
.append("在浏览器中打开使用文档"); String.format("https://dominion.lunadeer.cn/%s", Dominion.config.getLanguage())
).build())
.append(Translation.TUI_Menu_DocumentDescription);
Line migrate = Line.create() Line migrate = Line.create()
.append(Button.create("迁移数据").setExecuteCommand("/dominion migrate_list").build()) .append(Button.create(Translation.TUI_Menu_MigrateButton).setExecuteCommand("/dominion migrate_list").build())
.append("把你的领地从Residence迁移到Dominion"); .append(Translation.TUI_Menu_MigrateDescription);
Line all = Line.create() Line all = Line.create()
.append(Button.create("所有领地").setExecuteCommand("/dominion all_dominion").build()) .append(Button.create(Translation.TUI_Menu_AllDominionButton).setExecuteCommand("/dominion all_dominion").build())
.append("查看所有领地"); .append(Translation.TUI_Menu_AllDominionDescription);
Line config = Line.create() Line config = Line.create()
.append(Button.create("系统配置").setExecuteCommand("/dominion sys_config").build()) .append(Button.create(Translation.TUI_Menu_ConfigButton).setExecuteCommand("/dominion sys_config").build())
.append("查看/修改系统配置"); .append(Translation.TUI_Menu_ConfigDescription);
Line reload_cache = Line.create() Line reload_cache = Line.create()
.append(Button.create("重载缓存").setExecuteCommand("/dominion reload_cache").build()) .append(Button.create(Translation.TUI_Menu_ReloadCacheButton).setExecuteCommand("/dominion reload_cache").build())
.append("手动刷新缓存可解决一些玩家操作无效问题,不建议频繁操作"); .append(Translation.TUI_Menu_ReloadCacheDescription);
Line reload_config = Line.create() Line reload_config = Line.create()
.append(Button.create("重载配置").setExecuteCommand("/dominion reload_config").build()) .append(Button.create(Translation.TUI_Menu_ReloadConfigButton).setExecuteCommand("/dominion reload_config").build())
.append("重载配置文件"); .append(Translation.TUI_Menu_ReloadConfigDescription);
ListView view = ListView.create(10, "/dominion menu"); ListView view = ListView.create(10, "/dominion menu");
view.title("Dominion 领地系统"); view.title(Translation.TUI_Menu_Title);
view.navigator(Line.create().append("主菜单")); view.navigator(Line.create().append(Translation.TUI_Navigation_Menu));
view.add(create); view.add(create);
view.add(list); view.add(list);
if (Dominion.config.getGroupTitleEnable()) view.add(title); if (Dominion.config.getGroupTitleEnable()) view.add(title);
view.add(template); view.add(template);
// view.add(help); view.add(help);
view.add(link); view.add(link);
if (Dominion.config.getResidenceMigration()) { if (Dominion.config.getResidenceMigration()) {
view.add(migrate); view.add(migrate);
} }
if (player.isOp()) { if (player.isOp()) {
view.add(Line.create().append("")); view.add(Line.create().append(""));
view.add(Line.create().append(Component.text("--- 以下选项仅OP可见 ---", ViewStyles.main_color))); view.add(Line.create().append(Component.text(Translation.TUI_Menu_OpOnlySection.trans(), ViewStyles.main_color)));
view.add(all); view.add(all);
view.add(config); view.add(config);
view.add(reload_cache); view.add(reload_cache);

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion;
import cn.lunadeer.dominion.DominionNode; import cn.lunadeer.dominion.DominionNode;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.ViewStyles; import cn.lunadeer.minecraftpluginutils.stui.ViewStyles;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -25,16 +26,18 @@ public class DominionList {
int page = getPage(args, 1); int page = getPage(args, 1);
ListView view = ListView.create(10, "/dominion list"); ListView view = ListView.create(10, "/dominion list");
view.title("我的领地列表"); view.title(Translation.TUI_DominionList_Title);
view.navigator(Line.create().append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()).append("我的领地")); view.navigator(Line.create()
.append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Translation.TUI_Navigation_DominionList));
view.addLines(BuildTreeLines(DominionNode.BuildNodeTree(-1, DominionDTO.selectByOwner(player.getUniqueId())), 0)); view.addLines(BuildTreeLines(DominionNode.BuildNodeTree(-1, DominionDTO.selectByOwner(player.getUniqueId())), 0));
List<String> admin_dominions = playerAdminDominions(sender); List<String> admin_dominions = playerAdminDominions(sender);
if (!admin_dominions.isEmpty()) { if (!admin_dominions.isEmpty()) {
view.add(Line.create().append("")); view.add(Line.create().append(""));
view.add(Line.create().append(Component.text("--- 以下为你拥有管理员权限的领地 ---", ViewStyles.main_color))); view.add(Line.create().append(Component.text(Translation.TUI_DominionList_AdminSection.trans(), ViewStyles.main_color)));
} }
for (String dominion : admin_dominions) { for (String dominion : admin_dominions) {
TextComponent manage = Button.createGreen("管理").setExecuteCommand("/dominion manage " + dominion).build(); TextComponent manage = Button.createGreen(Translation.TUI_ManageButton).setExecuteCommand("/dominion manage " + dominion).build();
view.add(Line.create().append(manage).append(dominion)); view.add(Line.create().append(manage).append(dominion));
} }
view.showOn(player, page); view.showOn(player, page);
@ -45,8 +48,8 @@ public class DominionList {
StringBuilder prefix = new StringBuilder(); StringBuilder prefix = new StringBuilder();
prefix.append(" | ".repeat(Math.max(0, depth))); prefix.append(" | ".repeat(Math.max(0, depth)));
for (DominionNode node : dominionTree) { for (DominionNode node : dominionTree) {
TextComponent manage = Button.createGreen("管理").setExecuteCommand("/dominion manage " + node.getDominion().getName()).build(); TextComponent manage = Button.createGreen(Translation.TUI_ManageButton).setExecuteCommand("/dominion manage " + node.getDominion().getName()).build();
TextComponent delete = Button.createRed("删除").setExecuteCommand("/dominion delete " + node.getDominion().getName()).build(); TextComponent delete = Button.createRed(Translation.TUI_DeleteButton).setExecuteCommand("/dominion delete " + node.getDominion().getName()).build();
Line line = Line.create().append(delete).append(manage).append(prefix + node.getDominion().getName()); Line line = Line.create().append(delete).append(manage).append(prefix + node.getDominion().getName());
lines.add(line); lines.add(line);
lines.addAll(BuildTreeLines(node.getChildren(), depth + 1)); lines.addAll(BuildTreeLines(node.getChildren(), depth + 1));

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion;
import cn.lunadeer.dominion.Dominion; import cn.lunadeer.dominion.Dominion;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -20,48 +21,48 @@ public class DominionManage {
if (player == null) return; if (player == null) return;
DominionDTO dominion = getDominionNameArg_1(player, args); DominionDTO dominion = getDominionNameArg_1(player, args);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion manage <领地名称>"); Notification.error(sender, Translation.TUI_DominionManage_NotInDominion);
return; return;
} }
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
int page = getPage(args, 2); int page = getPage(args, 2);
Line size_info = Line.create() Line size_info = Line.create()
.append(Button.create("详细信息").setExecuteCommand("/dominion info " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_InfoButton).setExecuteCommand("/dominion info " + dominion.getName()).build())
.append("查看领地详细信息"); .append(Translation.TUI_DominionManage_InfoDescription);
Line env_info = Line.create() Line env_info = Line.create()
.append(Button.create("环境设置").setExecuteCommand("/dominion env_setting " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_EnvSettingButton).setExecuteCommand("/dominion env_setting " + dominion.getName()).build())
.append("设置领地内的一些非玩家相关效果"); .append(Translation.TUI_DominionManage_EnvSettingDescription);
Line flag_info = Line.create() Line flag_info = Line.create()
.append(Button.create("访客权限").setExecuteCommand("/dominion guest_setting " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_GuestSettingButton).setExecuteCommand("/dominion guest_setting " + dominion.getName()).build())
.append("访客在此领地的权限"); .append(Translation.TUI_DominionManage_GuestSettingDescription);
Line privilege_list = Line.create() Line privilege_list = Line.create()
.append(Button.create("成员管理").setExecuteCommand("/dominion member list " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_MemberListButton).setExecuteCommand("/dominion member list " + dominion.getName()).build())
.append("管理此领地成员的权限"); .append(Translation.TUI_DominionManage_MemberListDescription);
Line group_list = Line.create() Line group_list = Line.create()
.append(Button.create("权限组").setExecuteCommand("/dominion group list " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_GroupListButton).setExecuteCommand("/dominion group list " + dominion.getName()).build())
.append("管理此领地的权限组"); .append(Translation.TUI_DominionManage_GroupListDescription);
Line set_tp = Line.create() Line set_tp = Line.create()
.append(Button.create("设置传送点").setExecuteCommand("/dominion set_tp_location " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_SetTpLocationButton).setExecuteCommand("/dominion set_tp_location " + dominion.getName()).build())
.append("设置当前位置为此领地传送点"); .append(Translation.TUI_DominionManage_SetTpLocationDescription);
Line rename = Line.create() Line rename = Line.create()
.append(Button.create("重命名").setExecuteCommand("/dominion cui_rename " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_RenameButton).setExecuteCommand("/dominion cui_rename " + dominion.getName()).build())
.append("重命名领地"); .append(Translation.TUI_DominionManage_RenameDescription);
Line join_msg = Line.create() Line join_msg = Line.create()
.append(Button.create("编辑欢迎提示语").setExecuteCommand("/dominion cui_edit_join_message " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_EditJoinMessageButton).setExecuteCommand("/dominion cui_edit_join_message " + dominion.getName()).build())
.append("当玩家进入领地时显示的消息"); .append(Translation.TUI_DominionManage_EditJoinMessageDescription);
Line leave_msg = Line.create() Line leave_msg = Line.create()
.append(Button.create("编辑离开提示语").setExecuteCommand("/dominion cui_edit_leave_message " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_EditLeaveMessageButton).setExecuteCommand("/dominion cui_edit_leave_message " + dominion.getName()).build())
.append("当玩家离开领地时显示的消息"); .append(Translation.TUI_DominionManage_EditLeaveMessageDescription);
Line map_color = Line.create() Line map_color = Line.create()
.append(Button.create("设置颜色").setExecuteCommand("/dominion cui_set_map_color " + dominion.getName()).build()) .append(Button.create(Translation.TUI_DominionManage_SetMapColorButton).setExecuteCommand("/dominion cui_set_map_color " + dominion.getName()).build())
.append(Component.text("设置卫星地图上的地块颜色") .append(Component.text(Translation.TUI_DominionManage_SetMapColorDescription.trans())
.append(Component.text(dominion.getColor(), .append(Component.text(dominion.getColor(),
TextColor.color(dominion.getColorR(), dominion.getColorG(), dominion.getColorB())))); TextColor.color(dominion.getColorR(), dominion.getColorG(), dominion.getColorB()))));
ListView view = ListView.create(10, "/dominion manage " + dominion.getName()); ListView view = ListView.create(10, "/dominion manage " + dominion.getName());
view.title("领地 " + dominion.getName() + " 管理界面") view.title(String.format(Translation.TUI_DominionManage_Title.trans(), dominion.getName()))
.navigator(Line.create() .navigator(Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(dominion.getName())) .append(dominion.getName()))
.add(size_info) .add(size_info)
.add(env_info) .add(env_info)
@ -72,7 +73,7 @@ public class DominionManage {
.add(rename) .add(rename)
.add(join_msg) .add(join_msg)
.add(leave_msg); .add(leave_msg);
if (Dominion.config.getBlueMap()) { if (Dominion.config.getBlueMap() || Dominion.config.getDynmap()) {
view.add(map_color); view.add(map_color);
} }
view.showOn(player, page); view.showOn(player, page);

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -17,24 +18,24 @@ public class EnvSetting {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 2) { if (args.length < 2) {
Notification.error(sender, "用法: /dominion env_setting <领地名称> [页码]"); Notification.error(sender, Translation.TUI_EnvSetting_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[1]); DominionDTO dominion = DominionDTO.select(args[1]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[1]); Notification.error(sender, Translation.Messages_DominionNotExist, args[1]);
return; return;
} }
int page = getPage(args, 2); int page = getPage(args, 2);
ListView view = ListView.create(10, "/dominion env_setting " + dominion.getName()); ListView view = ListView.create(10, "/dominion env_setting " + dominion.getName());
view.title("领地 " + dominion.getName() + " 环境设置") view.title(String.format(Translation.TUI_EnvSetting_Title.trans(), dominion.getName()))
.navigator(Line.create() .navigator(Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append("环境设置")); .append(Translation.TUI_Navigation_EnvSetting));
for (Flag flag : Flag.getDominionOnlyFlagsEnabled()) { for (Flag flag : Flag.getDominionOnlyFlagsEnabled()) {
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page)); view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
} }

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -17,24 +18,24 @@ public class GuestSetting {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 2) { if (args.length < 2) {
Notification.error(sender, "用法: /dominion guest_setting <领地名称> [页码]"); Notification.error(sender, Translation.TUI_GuestSetting_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[1]); DominionDTO dominion = DominionDTO.select(args[1]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[1]); Notification.error(sender, Translation.Messages_DominionNotExist, args[1]);
return; return;
} }
int page = getPage(args, 2); int page = getPage(args, 2);
ListView view = ListView.create(10, "/dominion guest_setting " + dominion.getName()); ListView view = ListView.create(10, "/dominion guest_setting " + dominion.getName());
view.title("领地 " + dominion.getName() + " 访客权限") view.title(String.format(Translation.TUI_GuestSetting_Title.trans(), dominion.getName()))
.navigator(Line.create() .navigator(Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append("访客权限")); .append(Translation.TUI_Navigation_GuestSetting));
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) { for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page)); view.add(createOption(flag, dominion.getFlagValue(flag), dominion.getName(), page));
} }

View File

@ -3,6 +3,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage;
import cn.lunadeer.dominion.controllers.PlayerController; import cn.lunadeer.dominion.controllers.PlayerController;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.dominion.utils.Particle; import cn.lunadeer.dominion.utils.Particle;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.View; import cn.lunadeer.minecraftpluginutils.stui.View;
@ -20,7 +21,7 @@ public class SizeInfo {
if (player == null) return; if (player == null) return;
DominionDTO dominion = getDominionNameArg_1(player, args); DominionDTO dominion = getDominionNameArg_1(player, args);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "你不在任何领地内,请指定领地名称 /dominion info <领地名称>"); Notification.error(sender, Translation.TUI_SizeInfo_Usage);
return; return;
} }
PlayerDTO owner = PlayerController.getPlayerDTO(dominion.getOwner()); PlayerDTO owner = PlayerController.getPlayerDTO(dominion.getOwner());
@ -31,22 +32,22 @@ public class SizeInfo {
Integer y2 = dominion.getY2(); Integer y2 = dominion.getY2();
Integer z2 = dominion.getZ2(); Integer z2 = dominion.getZ2();
View view = View.create(); View view = View.create();
view.title("领地 " + dominion.getName() + " 的尺寸信息") view.title(String.format(Translation.TUI_SizeInfo_Title.trans(), dominion.getName()))
.subtitle("领地所有者:" + owner.getLastKnownName()) .subtitle(Translation.TUI_SizeInfo_Owner.trans() + owner.getLastKnownName())
.addLine(Line.create().append("领地大小:").append(dominion.getWidthX() + " x " + dominion.getHeight() + " x " + dominion.getWidthZ())) .addLine(Line.create().append(Translation.TUI_SizeInfo_Size).append(dominion.getWidthX() + " x " + dominion.getHeight() + " x " + dominion.getWidthZ()))
.addLine(Line.create().append("中心坐标:").append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2))) .addLine(Line.create().append(Translation.TUI_SizeInfo_Center).append((x1 + (x2 - x1) / 2) + " " + (y1 + (y2 - y1) / 2) + " " + (z1 + (z2 - z1) / 2)))
.addLine(Line.create().append("垂直高度:").append(String.valueOf(dominion.getHeight()))) .addLine(Line.create().append(Translation.TUI_SizeInfo_Vertical).append(String.valueOf(dominion.getHeight())))
.addLine(Line.create().append("Y轴坐标").append(y1 + " ~ " + y2)) .addLine(Line.create().append(Translation.TUI_SizeInfo_VertY).append(y1 + " ~ " + y2))
.addLine(Line.create().append("水平面积:").append(String.valueOf(dominion.getSquare()))) .addLine(Line.create().append(Translation.TUI_SizeInfo_Square).append(String.valueOf(dominion.getSquare())))
.addLine(Line.create().append("领地体积:").append(String.valueOf(dominion.getVolume()))) .addLine(Line.create().append(Translation.TUI_SizeInfo_Volume).append(String.valueOf(dominion.getVolume())))
.addLine(Line.create().append("传送点坐标:").append( .addLine(Line.create().append(Translation.TUI_SizeInfo_TpLocation).append(
dominion.getTpLocation() == null ? dominion.getTpLocation() == null ?
"" : Translation.TUI_SizeInfo_NoneTp.trans() :
dominion.getTpLocation().getX() + " " + dominion.getTpLocation().getY() + " " + dominion.getTpLocation().getZ() dominion.getTpLocation().getX() + " " + dominion.getTpLocation().getY() + " " + dominion.getTpLocation().getZ()
)) ))
.actionBar(Line.create() .actionBar(Line.create()
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append(Button.create("访客权限").setExecuteCommand("/dominion guest_setting " + dominion.getName()).build())) .append(Button.create(Translation.TUI_Navigation_GuestSetting).setExecuteCommand("/dominion guest_setting " + dominion.getName()).build()))
.showOn(player); .showOn(player);
Particle.showBorder(player, dominion); Particle.showBorder(player, dominion);
} }

View File

@ -4,6 +4,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.GroupDTO; import cn.lunadeer.dominion.dtos.GroupDTO;
import cn.lunadeer.dominion.dtos.MemberDTO; import cn.lunadeer.dominion.dtos.MemberDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.dominion.utils.TuiUtils; import cn.lunadeer.dominion.utils.TuiUtils;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.XLogger; import cn.lunadeer.minecraftpluginutils.XLogger;
@ -31,44 +32,44 @@ public class GroupList {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 3) { if (args.length < 3) {
Notification.error(sender, "用法: /dominion group list <领地名称> [页码]"); Notification.error(sender, Translation.TUI_GroupList_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[2]); DominionDTO dominion = DominionDTO.select(args[2]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[2]); Notification.error(sender, Translation.Messages_DominionNotExist, args[2]);
return; return;
} }
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
int page = TuiUtils.getPage(args, 3); int page = TuiUtils.getPage(args, 3);
List<GroupDTO> groups = GroupDTO.selectByDominionId(dominion.getId()); List<GroupDTO> groups = GroupDTO.selectByDominionId(dominion.getId());
ListView view = ListView.create(10, "/dominion group list " + dominion.getName()); ListView view = ListView.create(10, "/dominion group list " + dominion.getName());
view.title("权限组列表"); view.title(Translation.TUI_GroupList_Title);
view.navigator( view.navigator(
Line.create() Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append("权限组列表") .append(Translation.TUI_Navigation_GroupList)
); );
Button create_btn = Button.createGreen("创建权限组") Button create_btn = Button.createGreen(Translation.TUI_GroupList_CreateButton)
.setHoverText("创建一个新的权限组") .setHoverText(Translation.TUI_GroupList_CreateDescription)
.setExecuteCommand("/dominion cui_create_group " + dominion.getName()); .setExecuteCommand("/dominion cui_create_group " + dominion.getName());
view.add(new Line().append(create_btn.build())); view.add(new Line().append(create_btn.build()));
for (GroupDTO group : groups) { for (GroupDTO group : groups) {
Line line = new Line(); Line line = new Line();
Button del = Button.createRed("删除") Button del = Button.createRed(Translation.TUI_DeleteButton)
.setHoverText("删除权限组 " + group.getName()) .setHoverText(String.format(Translation.TUI_GroupList_DeleteDescription.trans(), group.getName()))
.setExecuteCommand("/dominion group delete " + dominion.getName() + " " + group.getName()); .setExecuteCommand("/dominion group delete " + dominion.getName() + " " + group.getName());
Button edit = Button.create("编辑") Button edit = Button.create(Translation.TUI_EditButton)
.setHoverText("编辑权限组 " + group.getName()) .setHoverText(String.format(Translation.TUI_GroupList_EditDescription.trans(), group.getName()))
.setExecuteCommand("/dominion group setting " + dominion.getName() + " " + group.getName()); .setExecuteCommand("/dominion group setting " + dominion.getName() + " " + group.getName());
Button add = Button.createGreen("+") Button add = Button.createGreen("+")
.setHoverText("添加成员到权限组 " + group.getName()) .setHoverText(String.format(Translation.TUI_GroupList_AddMemberDescription.trans(), group.getName()))
.setExecuteCommand("/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + page); .setExecuteCommand("/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + page);
line.append(del.build()).append(edit.build()).append(group.getNameColoredComponent()).append(add.build()); line.append(del.build()).append(edit.build()).append(group.getNameColoredComponent()).append(add.build());
view.add(line); view.add(line);
@ -78,7 +79,9 @@ public class GroupList {
PlayerDTO p = PlayerDTO.select(playerPrivilege.getPlayerUUID()); PlayerDTO p = PlayerDTO.select(playerPrivilege.getPlayerUUID());
if (p == null) continue; if (p == null) continue;
Button remove = Button.createRed("-") Button remove = Button.createRed("-")
.setHoverText("" + p.getLastKnownName() + " 移出权限组 " + group.getName()) .setHoverText(
String.format(Translation.TUI_GroupList_RemoveMemberDescription.trans(), p.getLastKnownName(), group.getName())
)
.setExecuteCommand("/dominion group remove_member " + dominion.getName() + " " + group.getName() + " " + p.getLastKnownName() + " " + page); .setExecuteCommand("/dominion group remove_member " + dominion.getName() + " " + group.getName() + " " + p.getLastKnownName() + " " + page);
Line playerLine = new Line().setDivider(""); Line playerLine = new Line().setDivider("");
playerLine.append(Component.text(" ")); playerLine.append(Component.text(" "));

View File

@ -3,6 +3,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage.group;
import cn.lunadeer.dominion.dtos.DominionDTO; import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.GroupDTO; import cn.lunadeer.dominion.dtos.GroupDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.dominion.utils.TuiUtils; import cn.lunadeer.dominion.utils.TuiUtils;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
@ -26,36 +27,38 @@ public class GroupSetting {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 4) { if (args.length < 4) {
Notification.error(sender, "用法: /dominion group setting <领地名称> <权限组名称> [页码]"); Notification.error(sender, Translation.TUI_GroupSetting_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[2]); DominionDTO dominion = DominionDTO.select(args[2]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[2]); Notification.error(sender, Translation.Messages_DominionNotExist, args[2]);
return; return;
} }
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
int page = TuiUtils.getPage(args, 4); int page = TuiUtils.getPage(args, 4);
GroupDTO group = GroupDTO.select(dominion.getId(), args[3]); GroupDTO group = GroupDTO.select(dominion.getId(), args[3]);
if (group == null) { if (group == null) {
Notification.error(sender, "权限组 %s 不存在", args[3]); Notification.error(sender, Translation.Messages_GroupNotExist, args[2], args[3]);
return; return;
} }
ListView view = ListView.create(10, "/dominion group setting " + dominion.getName() + " " + group.getName()); ListView view = ListView.create(10, "/dominion group setting " + dominion.getName() + " " + group.getName());
view.title(Component.text("权限组 ").append(group.getNameColoredComponent()).append(Component.text(" 管理"))); view.title(Component.text(Translation.TUI_GroupSetting_TitleL.trans())
.append(group.getNameColoredComponent())
.append(Component.text(Translation.TUI_GroupSetting_TitleR.trans())));
view.navigator( view.navigator(
Line.create() Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append(Button.create("权限组列表").setExecuteCommand("/dominion group list " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_GroupList).setExecuteCommand("/dominion group list " + dominion.getName()).build())
.append("权限组管理") .append(Translation.TUI_Navigation_GroupSetting)
); );
Button rename_btn = Button.create("重命名此权限组") Button rename_btn = Button.create(Translation.TUI_GroupSetting_RenameButton)
.setHoverText("重命名权限组 " + group.getName()) .setHoverText(String.format(Translation.TUI_GroupSetting_RenameDescription.trans(), group.getName()))
.setExecuteCommand("/dominion cui_rename_group " + dominion.getName() + " " + group.getName()); .setExecuteCommand("/dominion cui_rename_group " + dominion.getName() + " " + group.getName());
view.add(Line.create().append(rename_btn.build())); view.add(Line.create().append(rename_btn.build()));
@ -64,14 +67,20 @@ public class GroupSetting {
.append(Button.createGreen("") .append(Button.createGreen("")
.setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", false, page)) .setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", false, page))
.build()) .build())
.append("管理员")); .append(
Component.text(Translation.Flags_admin_DisplayName.trans())
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
));
view.add(createOption(Flag.GLOW, group.getFlagValue(Flag.GLOW), dominion.getName(), group.getName(), page)); view.add(createOption(Flag.GLOW, group.getFlagValue(Flag.GLOW), dominion.getName(), group.getName(), page));
} else { } else {
view.add(Line.create() view.add(Line.create()
.append(Button.createRed("") .append(Button.createRed("")
.setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", true, page)) .setExecuteCommand(parseCommand(dominion.getName(), group.getName(), "admin", true, page))
.build()) .build())
.append("管理员")); .append(
Component.text(Translation.Flags_admin_DisplayName.trans())
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
));
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) { for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
view.add(createOption(flag, group.getFlagValue(flag), dominion.getName(), group.getName(), page)); view.add(createOption(flag, group.getFlagValue(flag), dominion.getName(), group.getName(), page));
} }

View File

@ -4,6 +4,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.GroupDTO; import cn.lunadeer.dominion.dtos.GroupDTO;
import cn.lunadeer.dominion.dtos.MemberDTO; import cn.lunadeer.dominion.dtos.MemberDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -20,28 +21,28 @@ import static cn.lunadeer.dominion.utils.TuiUtils.noAuthToManage;
public class SelectMember { public class SelectMember {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 4) { if (args.length < 4) {
Notification.error(sender, "用法: /dominion group select_member <领地名称> <权限组名称> [回显页码] [页码]"); Notification.error(sender, Translation.TUI_SelectMember_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[2]); DominionDTO dominion = DominionDTO.select(args[2]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[2]); Notification.error(sender, Translation.Messages_DominionNotExist, args[2]);
return; return;
} }
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
GroupDTO group = GroupDTO.select(dominion.getId(), args[3]); GroupDTO group = GroupDTO.select(dominion.getId(), args[3]);
if (group == null) { if (group == null) {
Notification.error(sender, "权限组不存在"); Notification.error(sender, Translation.Messages_GroupNotExist, args[2], args[3]);
return; return;
} }
int backPage = getPage(args, 4); int backPage = getPage(args, 4);
int page = getPage(args, 5); int page = getPage(args, 5);
ListView view = ListView.create(10, "/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + backPage); ListView view = ListView.create(10, "/dominion group select_member " + dominion.getName() + " " + group.getName() + " " + backPage);
view.title("选择成员"); view.title(Translation.TUI_SelectMember_Title);
Line sub = Line.create().append("选择成员添加到权限组 " + group.getName()) Line sub = Line.create().append(String.format(Translation.TUI_SelectMember_Description.trans(), group.getName()))
.append(Button.create("返回").setExecuteCommand("/dominion group list " + dominion.getName() + " " + backPage).build()); .append(Button.create(Translation.TUI_BackButton).setExecuteCommand("/dominion group list " + dominion.getName() + " " + backPage).build());
view.subtitle(sub); view.subtitle(sub);
List<MemberDTO> members = MemberDTO.selectByDomGroupId(dominion.getId(), -1); List<MemberDTO> members = MemberDTO.selectByDomGroupId(dominion.getId(), -1);
for (MemberDTO member : members) { for (MemberDTO member : members) {

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage.member;
import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.Cache;
import cn.lunadeer.dominion.dtos.*; import cn.lunadeer.dominion.dtos.*;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -32,29 +33,29 @@ public class MemberList {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 3) { if (args.length < 3) {
Notification.error(sender, "用法: /dominion member list <领地名称> [页码]"); Notification.error(sender, Translation.TUI_MemberList_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[2]); DominionDTO dominion = DominionDTO.select(args[2]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[2]); Notification.error(sender, Translation.Messages_DominionNotExist, args[2]);
return; return;
} }
int page = getPage(args, 3); int page = getPage(args, 3);
ListView view = ListView.create(10, "/dominion member list " + dominion.getName()); ListView view = ListView.create(10, "/dominion member list " + dominion.getName());
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
List<MemberDTO> privileges = MemberDTO.select(dominion.getId()); List<MemberDTO> privileges = MemberDTO.select(dominion.getId());
view.title("领地 " + dominion.getName() + " 成员列表"); view.title(String.format(Translation.TUI_MemberList_Title.trans(), dominion.getName()));
view.navigator( view.navigator(
Line.create() Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append("成员列表") .append(Translation.TUI_Navigation_MemberList)
); );
view.add(Line.create().append(Button.create("添加成员") view.add(Line.create().append(Button.create(Translation.TUI_MemberList_AddButton)
.setExecuteCommand(CommandParser("/dominion member select_player %s", dominion.getName())).build())); .setExecuteCommand(CommandParser("/dominion member select_player %s", dominion.getName())).build()));
for (MemberDTO privilege : privileges) { for (MemberDTO privilege : privileges) {
PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID()); PlayerDTO p_player = PlayerDTO.select(privilege.getPlayerUUID());
@ -74,11 +75,11 @@ public class MemberList {
} }
} }
Button prev = Button.createGreen("权限") Button prev = Button.createGreen(Translation.TUI_MemberList_FlagButton)
.setHoverText("配置成员权限") .setHoverText(Translation.TUI_MemberList_FlagDescription)
.setExecuteCommand(CommandParser("/dominion member setting %s %s", dominion.getName(), p_player.getLastKnownName())); .setExecuteCommand(CommandParser("/dominion member setting %s %s", dominion.getName(), p_player.getLastKnownName()));
Button remove = Button.createRed("移除") Button remove = Button.createRed(Translation.TUI_MemberList_RemoveButton)
.setHoverText("将此成员移出(变为访客)") .setHoverText(Translation.TUI_MemberList_RemoveDescription)
.setExecuteCommand(CommandParser("/dominion member remove %s %s", dominion.getName(), p_player.getLastKnownName())); .setExecuteCommand(CommandParser("/dominion member remove %s %s", dominion.getName(), p_player.getLastKnownName()));
if (!player.getUniqueId().equals(dominion.getOwner())) { if (!player.getUniqueId().equals(dominion.getOwner())) {
@ -93,12 +94,12 @@ public class MemberList {
} }
} }
if (disable) { if (disable) {
prev.setDisabled("你不是领地主人,无法编辑管理员权限"); prev.setDisabled(Translation.TUI_MemberList_NoPermissionSet);
remove.setDisabled("你不是领地主人,无法移除管理员"); remove.setDisabled(Translation.TUI_MemberList_NoPermissionRemove);
} }
} }
if (group != null) { if (group != null) {
prev.setDisabled(String.format("此成员属于权限组 %s 无法单独编辑权限", group.getName())); prev.setDisabled(String.format(Translation.TUI_MemberList_BelongToGroup.trans(), group.getName()));
} }
line.append(remove.build()); line.append(remove.build());
line.append(prev.build()); line.append(prev.build());
@ -109,11 +110,11 @@ public class MemberList {
} }
private static final TextComponent adminTag = Component.text("[A]", Style.style(TextColor.color(97, 97, 210))) private static final TextComponent adminTag = Component.text("[A]", Style.style(TextColor.color(97, 97, 210)))
.hoverEvent(Component.text("这是一个管理员")); .hoverEvent(Component.text(Translation.TUI_MemberList_AdminTag.trans()));
private static final TextComponent normalTag = Component.text("[N]", Style.style(TextColor.color(255, 255, 255))) private static final TextComponent normalTag = Component.text("[N]", Style.style(TextColor.color(255, 255, 255)))
.hoverEvent(Component.text("这是一个普通成员")); .hoverEvent(Component.text(Translation.TUI_MemberList_NormalTag.trans()));
private static final TextComponent banTag = Component.text("[B]", Style.style(TextColor.color(255, 67, 0))) private static final TextComponent banTag = Component.text("[B]", Style.style(TextColor.color(255, 67, 0)))
.hoverEvent(Component.text("这是一个黑名单成员")); .hoverEvent(Component.text(Translation.TUI_MemberList_BlacklistTag.trans()));
private static final TextComponent groupTag = Component.text("[G]", Style.style(TextColor.color(0, 185, 153))) private static final TextComponent groupTag = Component.text("[G]", Style.style(TextColor.color(0, 185, 153)))
.hoverEvent(Component.text("这个成员在一个权限组里")); .hoverEvent(Component.text(Translation.TUI_MemberList_GroupTag.trans()));
} }

View File

@ -4,6 +4,7 @@ import cn.lunadeer.dominion.dtos.DominionDTO;
import cn.lunadeer.dominion.dtos.Flag; import cn.lunadeer.dominion.dtos.Flag;
import cn.lunadeer.dominion.dtos.MemberDTO; import cn.lunadeer.dominion.dtos.MemberDTO;
import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -27,14 +28,14 @@ public class MemberSetting {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 3) { if (args.length < 3) {
Notification.error(sender, "用法: /dominion member setting <领地名称> <玩家名称> [页码]"); Notification.error(sender, Translation.TUI_MemberSetting_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
if (player == null) return; if (player == null) return;
DominionDTO dominion = DominionDTO.select(args[2]); DominionDTO dominion = DominionDTO.select(args[2]);
if (dominion == null) { if (dominion == null) {
Notification.error(sender, "领地 %s 不存在", args[2]); Notification.error(sender, Translation.Messages_DominionNotExist, args[2]);
return; return;
} }
if (noAuthToManage(player, dominion)) return; if (noAuthToManage(player, dominion)) return;
@ -43,39 +44,45 @@ public class MemberSetting {
ListView view = ListView.create(10, "/dominion member setting " + dominion.getName() + " " + playerName); ListView view = ListView.create(10, "/dominion member setting " + dominion.getName() + " " + playerName);
PlayerDTO playerDTO = PlayerDTO.select(playerName); PlayerDTO playerDTO = PlayerDTO.select(playerName);
if (playerDTO == null) { if (playerDTO == null) {
Notification.error(sender, "玩家 %s 不存在", playerName); Notification.error(sender, Translation.Messages_PlayerNotExist, playerName);
return; return;
} }
MemberDTO privilege = MemberDTO.select(playerDTO.getUuid(), dominion.getId()); MemberDTO privilege = MemberDTO.select(playerDTO.getUuid(), dominion.getId());
if (privilege == null) { if (privilege == null) {
Notification.warn(sender, "玩家 %s 不是领地 %s 的成员", playerName, dominion.getName()); Notification.warn(sender, Translation.Messages_PlayerNotMember, playerName, dominion.getName());
return; return;
} }
view.title("玩家 " + playerName + " 在领地 " + dominion.getName() + " 的权限设置"); view.title(String.format(Translation.TUI_MemberSetting_Title.trans(), playerName, dominion.getName()));
view.navigator( view.navigator(
Line.create() Line.create()
.append(Button.create("主菜单").setExecuteCommand("/dominion menu").build()) .append(Button.create(Translation.TUI_Navigation_Menu).setExecuteCommand("/dominion menu").build())
.append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append(Button.create(Translation.TUI_Navigation_DominionList).setExecuteCommand("/dominion list").build())
.append(Button.create("管理界面").setExecuteCommand("/dominion manage " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_Manage).setExecuteCommand("/dominion manage " + dominion.getName()).build())
.append(Button.create("成员列表").setExecuteCommand("/dominion member list " + dominion.getName()).build()) .append(Button.create(Translation.TUI_Navigation_MemberList).setExecuteCommand("/dominion member list " + dominion.getName()).build())
.append("成员权限") .append(Translation.TUI_Navigation_MemberSetting)
); );
view.add(Line.create().append(Button.createGreen("套用模板") view.add(Line.create().append(Button.createGreen(Translation.TUI_MemberSetting_ApplyTemplateButton)
.setHoverText("选择一个权限模板套用") .setHoverText(Translation.TUI_MemberSetting_ApplyTemplateDescription)
.setExecuteCommand("/dominion member select_template " + dominion.getName() + " " + playerName).build())); .setExecuteCommand("/dominion member select_template " + dominion.getName() + " " + playerName).build()));
if (privilege.getAdmin()) { if (privilege.getAdmin()) {
view.add(Line.create() view.add(Line.create()
.append(Button.createGreen("").setExecuteCommand( .append(Button.createGreen("").setExecuteCommand(
parseCommand(dominion.getName(), playerName, "admin", false, page) parseCommand(dominion.getName(), playerName, "admin", false, page)
).build()) ).build())
.append("管理员")); .append(
Component.text(Translation.Flags_admin_DisplayName.trans())
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
));
view.add(createOption(Flag.GLOW, privilege.getFlagValue(Flag.GLOW), playerName, dominion.getName(), page)); view.add(createOption(Flag.GLOW, privilege.getFlagValue(Flag.GLOW), playerName, dominion.getName(), page));
} else { } else {
view.add(Line.create() view.add(Line.create()
.append(Button.createRed("").setExecuteCommand( .append(Button.createRed("").setExecuteCommand(
parseCommand(dominion.getName(), playerName, "admin", true, page) parseCommand(dominion.getName(), playerName, "admin", true, page)
).build()) ).build())
.append("管理员")); .append(
Component.text(Translation.Flags_admin_DisplayName.trans())
.hoverEvent(Component.text(Translation.Flags_admin_Description.trans()))
));
for (Flag flag : Flag.getPrivilegeFlagsEnabled()) { for (Flag flag : Flag.getPrivilegeFlagsEnabled()) {
view.add(createOption(flag, privilege.getFlagValue(flag), playerName, dominion.getName(), page)); view.add(createOption(flag, privilege.getFlagValue(flag), playerName, dominion.getName(), page));
} }

View File

@ -2,6 +2,7 @@ package cn.lunadeer.dominion.tuis.dominion.manage.member;
import cn.lunadeer.dominion.controllers.PlayerController; import cn.lunadeer.dominion.controllers.PlayerController;
import cn.lunadeer.dominion.dtos.PlayerDTO; import cn.lunadeer.dominion.dtos.PlayerDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -22,7 +23,7 @@ public class SelectPlayer {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 3) { if (args.length < 3) {
Notification.error(sender, "用法: /dominion member select_player <领地名称> [页码]"); Notification.error(sender, Translation.TUI_SelectPlayer_Usage);
return; return;
} }
Player player = playerOnly(sender); Player player = playerOnly(sender);
@ -31,10 +32,10 @@ public class SelectPlayer {
String dominion_name = args[2]; String dominion_name = args[2];
ListView view = ListView.create(10, "/dominion member select_player " + dominion_name); ListView view = ListView.create(10, "/dominion member select_player " + dominion_name);
Line sub = Line.create() Line sub = Line.create()
.append("只能选择已经登录过的玩家") .append(Translation.TUI_SelectPlayer_Description)
.append(Button.create("搜索").setExecuteCommand("/dominion cui_member_add " + dominion_name).build()) .append(Button.create(Translation.TUI_SearchButton).setExecuteCommand("/dominion cui_member_add " + dominion_name).build())
.append(Button.create("返回").setExecuteCommand("/dominion member list " + dominion_name).build()); .append(Button.create(Translation.TUI_BackButton).setExecuteCommand("/dominion member list " + dominion_name).build());
view.title("选择玩家添加为成员").subtitle(sub); view.title(Translation.TUI_SelectPlayer_Title).subtitle(sub);
List<PlayerDTO> players = PlayerController.allPlayers(); List<PlayerDTO> players = PlayerController.allPlayers();
for (PlayerDTO p : players) { for (PlayerDTO p : players) {
if (p.getUuid() == player.getUniqueId()) { if (p.getUuid() == player.getUniqueId()) {

View File

@ -1,6 +1,7 @@
package cn.lunadeer.dominion.tuis.dominion.manage.member; package cn.lunadeer.dominion.tuis.dominion.manage.member;
import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO; import cn.lunadeer.dominion.dtos.PrivilegeTemplateDTO;
import cn.lunadeer.dominion.managers.Translation;
import cn.lunadeer.minecraftpluginutils.Notification; import cn.lunadeer.minecraftpluginutils.Notification;
import cn.lunadeer.minecraftpluginutils.stui.ListView; import cn.lunadeer.minecraftpluginutils.stui.ListView;
import cn.lunadeer.minecraftpluginutils.stui.components.Button; import cn.lunadeer.minecraftpluginutils.stui.components.Button;
@ -20,7 +21,7 @@ public class SelectTemplate {
public static void show(CommandSender sender, String[] args) { public static void show(CommandSender sender, String[] args) {
if (args.length < 4) { if (args.length < 4) {
// /dominion member select_template <领地名称> <玩家名称> [页码] // /dominion member select_template <领地名称> <玩家名称> [页码]
Notification.error(sender, "用法: /dominion member select_template <领地名称> <玩家名称> [页码]"); Notification.error(sender, Translation.TUI_SelectTemplate_Usage);
return; return;
} }
@ -36,16 +37,16 @@ public class SelectTemplate {
List<PrivilegeTemplateDTO> templates = PrivilegeTemplateDTO.selectAll(player.getUniqueId()); List<PrivilegeTemplateDTO> templates = PrivilegeTemplateDTO.selectAll(player.getUniqueId());
ListView view = ListView.create(10, "/dominion member select_template " + dominionName + " " + playerName); ListView view = ListView.create(10, "/dominion member select_template " + dominionName + " " + playerName);
view.title("选择一个模板"); view.title(Translation.TUI_SelectTemplate_Title);
Line sub = Line.create() Line sub = Line.create()
.append("套用在领地 " + dominionName + " 的成员 " + playerName + " 身上") .append(String.format(Translation.TUI_SelectTemplate_Description.trans(), dominionName, playerName))
.append(Button.create("返回").setExecuteCommand("/dominion member setting " + dominionName + " " + playerName).build()); .append(Button.create(Translation.TUI_BackButton).setExecuteCommand("/dominion member setting " + dominionName + " " + playerName).build());
view.subtitle(sub); view.subtitle(sub);
for (PrivilegeTemplateDTO template : templates) { for (PrivilegeTemplateDTO template : templates) {
// /dominion member apply_template <领地名称> <成员名称> <模板名称> // /dominion member apply_template <领地名称> <成员名称> <模板名称>
view.add(Line.create() view.add(Line.create()
.append(Button.create("选择") .append(Button.create(Translation.TUI_SelectButton)
.setExecuteCommand(CommandParser("/dominion member apply_template %s %s %s", dominionName, playerName, template.getName())) .setExecuteCommand(CommandParser("/dominion member apply_template %s %s %s", dominionName, playerName, template.getName()))
.build()) .build())
.append(Component.text(template.getName()))); .append(Component.text(template.getName())));

View File

@ -5,7 +5,7 @@
* [领地管理](manage-dominion/README.md) * [领地管理](manage-dominion/README.md)
* [环境设置](manage-dominion/environment.md) * [环境设置](manage-dominion/environment.md)
* [权限管理](manage-dominion/permission/README.md) * [权限管理](manage-dominion/permission/README.md)
* [访客权限](manage-dominion/permission/visitor.md) * [访客权限](manage-dominion/permission/guest)
* [领地成员](manage-dominion/permission/member.md) * [领地成员](manage-dominion/permission/member.md)
* [权限组](manage-dominion/permission/permission-group.md) * [权限组](manage-dominion/permission/permission-group.md)
* [权限模板](manage-dominion/permission/template.md) * [权限模板](manage-dominion/permission/template.md)

View File

@ -4,7 +4,7 @@
Dominion 采用了 `访客-成员-权限组` 的权限管理模型。通过此方案既可以满足对于权限的细粒度控制,又可以保证权限的可维护性,减轻玩家的操作负担。 Dominion 采用了 `访客-成员-权限组` 的权限管理模型。通过此方案既可以满足对于权限的细粒度控制,又可以保证权限的可维护性,减轻玩家的操作负担。
- [访客](visitor.md):领地的访客权限,不属于领地成员的玩家将收到此权限的限制; - [访客](guest):领地的访客权限,不属于领地成员的玩家将收到此权限的限制;
- [成员](member.md):领地的成员权限,属于领地成员的玩家将收到此权限的限制; - [成员](member.md):领地的成员权限,属于领地成员的玩家将收到此权限的限制;
- [权限组](permission-group.md):领地的权限组,将玩家添加到权限组中,可以为多个玩家配置相同的权限; - [权限组](permission-group.md):领地的权限组,将玩家添加到权限组中,可以为多个玩家配置相同的权限;