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/
trueUTF-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”了(因为压根不可能显示没权限时候的物品)