diff --git a/build.gradle.kts b/build.gradle.kts index 061bdac..6a06217 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { } group = "cn.lunadeer" -version = "2.1.4-beta" +version = "2.1.5-beta" java { toolchain.languageVersion.set(JavaLanguageVersion.of(21)) diff --git a/core/src/main/java/cn/lunadeer/dominion/Cache.java b/core/src/main/java/cn/lunadeer/dominion/Cache.java index b5bebaa..bdc1148 100644 --- a/core/src/main/java/cn/lunadeer/dominion/Cache.java +++ b/core/src/main/java/cn/lunadeer/dominion/Cache.java @@ -566,6 +566,9 @@ public class Cache { } public @Nullable GroupDTO getPlayerUsingGroupTitle(UUID uuid) { + if (!Dominion.config.getGroupTitleEnable()) { + return null; + } if (map_player_using_group_title_id.containsKey(uuid)) { return getGroup(map_player_using_group_title_id.get(uuid)); } diff --git a/core/src/main/java/cn/lunadeer/dominion/Dominion.java b/core/src/main/java/cn/lunadeer/dominion/Dominion.java index 8ef85ce..3d4bac3 100644 --- a/core/src/main/java/cn/lunadeer/dominion/Dominion.java +++ b/core/src/main/java/cn/lunadeer/dominion/Dominion.java @@ -40,8 +40,13 @@ public final class Dominion extends JavaPlugin { AutoClean.run(); Cache.instance = new Cache(); - if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { - new PlaceHolderApi(this); + if (config.getGroupTitleEnable()) { + if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) { + new PlaceHolderApi(this); + } else { + XLogger.warn("未找到 PlaceholderAPI 插件,无法使用权限组组称号功能,已自动关闭"); + config.setGroupTitleEnable(false); + } } new RegisterEvents(this); diff --git a/core/src/main/java/cn/lunadeer/dominion/dtos/GroupDTO.java b/core/src/main/java/cn/lunadeer/dominion/dtos/GroupDTO.java index 493d967..705cb2d 100644 --- a/core/src/main/java/cn/lunadeer/dominion/dtos/GroupDTO.java +++ b/core/src/main/java/cn/lunadeer/dominion/dtos/GroupDTO.java @@ -1,6 +1,7 @@ package cn.lunadeer.dominion.dtos; import cn.lunadeer.dominion.Cache; +import cn.lunadeer.dominion.Dominion; import cn.lunadeer.minecraftpluginutils.ColorParser; import cn.lunadeer.minecraftpluginutils.databse.DatabaseManager; import cn.lunadeer.minecraftpluginutils.databse.Field; @@ -38,11 +39,13 @@ public class GroupDTO { } public Component getNameColoredComponent() { - return ColorParser.getComponentType((String) name_colored.value); + String with_pre_suf = Dominion.config.getGroupTitlePrefix() + (String) name_colored.value + Dominion.config.getGroupTitleSuffix(); + return ColorParser.getComponentType(with_pre_suf); } public String getNameColoredBukkit() { - return ColorParser.getBukkitType((String) name_colored.value); + String with_pre_suf = Dominion.config.getGroupTitlePrefix() + (String) name_colored.value + Dominion.config.getGroupTitleSuffix(); + return ColorParser.getBukkitType(with_pre_suf); } public Boolean getAdmin() { diff --git a/core/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java b/core/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java index 30e1ef7..415b975 100644 --- a/core/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java +++ b/core/src/main/java/cn/lunadeer/dominion/managers/ConfigManager.java @@ -90,6 +90,9 @@ public class ConfigManager { } _fly_permission_nodes = _file.getStringList("FlyPermissionNodes"); _residence_migration = _file.getBoolean("ResidenceMigration", false); + _group_title_enable = _file.getBoolean("GroupTitle.Enable", false); + _group_title_prefix = _file.getString("GroupTitle.Prefix", "&#ffffff["); + _group_title_suffix = _file.getString("GroupTitle.Suffix", "&#ffffff]"); saveAll(); // 回写文件 防止文件中的数据不完整 Flag.loadFromJson(); // 加载 Flag 配置 } @@ -121,6 +124,9 @@ public class ConfigManager { _file.set("Economy.Refund", _economy_refund); _file.set("FlyPermissionNodes", _fly_permission_nodes); _file.set("ResidenceMigration", _residence_migration); + _file.set("GroupTitle.Enable", _group_title_enable); + _file.set("GroupTitle.Prefix", _group_title_prefix); + _file.set("GroupTitle.Suffix", _group_title_suffix); _plugin.saveConfig(); } @@ -416,6 +422,36 @@ public class ConfigManager { _plugin.saveConfig(); } + public Boolean getGroupTitleEnable() { + return _group_title_enable; + } + + public void setGroupTitleEnable(Boolean group_title_enable) { + _group_title_enable = group_title_enable; + _file.set("GroupTitle.Enable", group_title_enable); + _plugin.saveConfig(); + } + + public String getGroupTitlePrefix() { + return _group_title_prefix; + } + + public void setGroupTitlePrefix(String group_title_prefix) { + _group_title_prefix = group_title_prefix; + _file.set("GroupTitle.Prefix", group_title_prefix); + _plugin.saveConfig(); + } + + public String getGroupTitleSuffix() { + return _group_title_suffix; + } + + public void setGroupTitleSuffix(String group_title_suffix) { + _group_title_suffix = group_title_suffix; + _file.set("GroupTitle.Suffix", group_title_suffix); + _plugin.saveConfig(); + } + private final Dominion _plugin; private FileConfiguration _file; private Boolean _debug; @@ -457,4 +493,8 @@ public class ConfigManager { private List _fly_permission_nodes; private Boolean _residence_migration; private Integer _spawn_protection; + + private Boolean _group_title_enable; + private String _group_title_prefix; + private String _group_title_suffix; } diff --git a/core/src/main/java/cn/lunadeer/dominion/managers/PlaceHolderApi.java b/core/src/main/java/cn/lunadeer/dominion/managers/PlaceHolderApi.java index 56fc85a..dc5ddac 100644 --- a/core/src/main/java/cn/lunadeer/dominion/managers/PlaceHolderApi.java +++ b/core/src/main/java/cn/lunadeer/dominion/managers/PlaceHolderApi.java @@ -4,7 +4,6 @@ import cn.lunadeer.dominion.Cache; import cn.lunadeer.dominion.dtos.GroupDTO; import cn.lunadeer.minecraftpluginutils.XLogger; import me.clip.placeholderapi.expansion.PlaceholderExpansion; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import org.jetbrains.annotations.NotNull; diff --git a/core/src/main/java/cn/lunadeer/dominion/tuis/Menu.java b/core/src/main/java/cn/lunadeer/dominion/tuis/Menu.java index 7214eba..5437a2b 100644 --- a/core/src/main/java/cn/lunadeer/dominion/tuis/Menu.java +++ b/core/src/main/java/cn/lunadeer/dominion/tuis/Menu.java @@ -30,6 +30,9 @@ public class Menu { Line list = Line.create() .append(Button.create("我的领地").setExecuteCommand("/dominion list").build()) .append("查看我的领地"); + Line title = Line.create() + .append(Button.create("称号列表").setExecuteCommand("/dominion title_list").build()) + .append("查看/使用权限组称号"); Line template = Line.create() .append(Button.create("模板列表").setExecuteCommand("/dominion template list").build()) .append("成员权限模板列表"); @@ -55,13 +58,14 @@ public class Menu { .append(Button.create("重载配置").setExecuteCommand("/dominion reload_config").build()) .append("重载配置文件"); ListView view = ListView.create(10, "/dominion menu"); - view.title("Dominion 领地系统") - .navigator(Line.create().append("主菜单")) - .add(create) - .add(list) - .add(template) - .add(help) - .add(link); + view.title("Dominion 领地系统"); + view.navigator(Line.create().append("主菜单")); + view.add(create); + if (Dominion.config.getGroupTitleEnable()) view.add(list); + view.add(title); + view.add(template); + view.add(help); + view.add(link); if (Dominion.config.getResidenceMigration()) { view.add(migrate); } diff --git a/core/src/main/resources/config.yml b/core/src/main/resources/config.yml index 4fe3f3f..b01c4eb 100644 --- a/core/src/main/resources/config.yml +++ b/core/src/main/resources/config.yml @@ -53,6 +53,13 @@ FlyPermissionNodes: # 是否允许玩家从 Residence 迁移领地数据 ResidenceMigration: false +# 权限组称号 - 使用权限组当作称号(需要PlaceholderAPI插件) +# Papi: %dominion_group_title% +GroupTitle: + Enable: false + Prefix: "&#ffffff[" + Suffix: "&#ffffff]" + BlueMap: false Dynmap: false