diff --git a/pom.xml b/pom.xml index 4e3e1cb..b165c94 100644 --- a/pom.xml +++ b/pom.xml @@ -337,8 +337,6 @@ https://javadoc.io/doc/org.jetbrains/annotations/ https://hub.spigotmc.org/javadocs/bukkit/ - https://carmjos.github.io/EasyPlugin/ - https://carmjos.github.io/MineConfiguration/ true UTF-8 diff --git a/src/main/java/cc/carm/plugin/userprefix/command/UserCommand.java b/src/main/java/cc/carm/plugin/userprefix/command/UserCommand.java index a33e080..796e8e9 100644 --- a/src/main/java/cc/carm/plugin/userprefix/command/UserCommand.java +++ b/src/main/java/cc/carm/plugin/userprefix/command/UserCommand.java @@ -1,15 +1,24 @@ package cc.carm.plugin.userprefix.command; +import cc.carm.plugin.userprefix.UserPrefixAPI; import cc.carm.plugin.userprefix.conf.PluginMessages; +import cc.carm.plugin.userprefix.manager.PrefixManager; import cc.carm.plugin.userprefix.ui.PrefixSelectGUI; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; -public class UserCommand implements CommandExecutor { +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +public class UserCommand implements CommandExecutor, TabCompleter { @Override @@ -32,5 +41,41 @@ public class UserCommand implements CommandExecutor { return true; } + @Nullable + @Override + public List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] strings) { + List completions = new ArrayList<>(); + + if (sender instanceof Player) { + if (strings.length == 1) { + // 补全 group 名称 + Set groups = UserPrefixAPI.getPrefixManager().getGroups(); + String input = strings[0].toLowerCase(); + completions.addAll(groups.stream() + .filter(g -> g.toLowerCase().startsWith(input)) + .collect(Collectors.toList())); + } + } else { + // 控制台 + if (strings.length == 1) { + // 补全在线玩家名 + String input = strings[0].toLowerCase(); + completions.addAll(Bukkit.getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.toLowerCase().startsWith(input)) + .collect(Collectors.toList())); + } else if (strings.length == 2) { + // 补全 group 名称 + Set groups = UserPrefixAPI.getPrefixManager().getGroups(); + String input = strings[1].toLowerCase(); + completions.addAll(groups.stream() + .filter(g -> g.toLowerCase().startsWith(input)) + .collect(Collectors.toList())); + } + } + + return completions; + } + } \ No newline at end of file diff --git a/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java b/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java index da463b8..47076d2 100644 --- a/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java +++ b/src/main/java/cc/carm/plugin/userprefix/manager/PrefixManager.java @@ -26,6 +26,7 @@ public class PrefixManager { protected @NotNull Map prefixes = new HashMap<>(); protected PrefixConfig defaultPrefix; + public int loadPrefixes() { loadDefaultPrefix(); diff --git a/src/main/resources/i18n/en_US/example-prefix.yml b/src/main/resources/i18n/en_US/example-prefix.yml index 09718f2..8f1045a 100644 --- a/src/main/resources/i18n/en_US/example-prefix.yml +++ b/src/main/resources/i18n/en_US/example-prefix.yml @@ -24,6 +24,11 @@ period: -1 # At TabList : the larger is displayed at the top weight: 1 +# Group [Unnecessary] +# Used to group prefixes, players can use /prefix to view prefixes in the corresponding group +# If not configured, it means the prefix is not in any group +group: vip + # Permission [Unnecessary] # If there is no permission for detection, everyone can use it, # which means there is no need to configure "itemNoPermission" diff --git a/src/main/resources/i18n/es_ES/ejemplo-prefijo.yml b/src/main/resources/i18n/es_ES/ejemplo-prefijo.yml index 179b583..18d9a72 100644 --- a/src/main/resources/i18n/es_ES/ejemplo-prefijo.yml +++ b/src/main/resources/i18n/es_ES/ejemplo-prefijo.yml @@ -23,6 +23,11 @@ period: -1 # En TabList : el más grande se muestra en la parte superior weight: 1 +# Grupo [Innecesario] +# Se utiliza para agrupar prefijos, los jugadores pueden usar /prefix para ver prefijos en el grupo correspondiente +# Si no se configura, significa que el prefijo no está en ningún grupo +group: vip + # Permisos [Innecesario] # Si no hay permiso para la detección, todo el mundo puede utilizarlo, # lo que significa que no es necesario configurar "itemNoPermission" diff --git a/src/main/resources/prefixes/example-prefix.yml b/src/main/resources/prefixes/example-prefix.yml index e479393..61d31d8 100644 --- a/src/main/resources/prefixes/example-prefix.yml +++ b/src/main/resources/prefixes/example-prefix.yml @@ -25,6 +25,11 @@ period: -1 # 在TabList中,显示顺序可以在 config.yml 中自定义 weight: 1 +# 分组 [非必须] +# 用于将前缀分组,玩家可以通过 /prefix 查看对应分组的前缀 +# 若不配置则代表不在任何分组中 +group: vip + # 检测的权限 [非必须] # 如果没有就是人人都能用,也代表不用配置“itemNoPermission”了(因为压根不可能显示没权限时候的物品)