diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 61c0e34..e36dba7 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ 4.0.0 ict.MineSunshineone SimpleChat - 1.4 + 1.5 diff --git a/pom.xml b/pom.xml index 8a0a651..f905889 100644 --- a/pom.xml +++ b/pom.xml @@ -12,7 +12,7 @@ ict.MineSunshineone SimpleChat - 1.4 + 1.5 diff --git a/src/main/java/ict/minesunshineone/chat/SimpleChat.java b/src/main/java/ict/minesunshineone/chat/SimpleChat.java index 3a32f63..ec46080 100644 --- a/src/main/java/ict/minesunshineone/chat/SimpleChat.java +++ b/src/main/java/ict/minesunshineone/chat/SimpleChat.java @@ -3,7 +3,6 @@ import org.bukkit.plugin.java.JavaPlugin; import ict.minesunshineone.chat.commands.MuteCommand; -import ict.minesunshineone.chat.commands.MuteCommandTabCompleter; import ict.minesunshineone.chat.listeners.AnvilListener; import ict.minesunshineone.chat.listeners.PingListener; import ict.minesunshineone.chat.listeners.PlayerChatListener; @@ -27,10 +26,11 @@ public void onEnable() { getServer().getPluginManager().registerEvents(new PingListener(this), this); // 注册命令 - getCommand("mute").setExecutor(new MuteCommand(muteManager)); - getCommand("unmute").setExecutor(new MuteCommand(muteManager)); - getCommand("mute").setTabCompleter(new MuteCommandTabCompleter()); - getCommand("unmute").setTabCompleter(new MuteCommandTabCompleter()); + MuteCommand muteCommand = new MuteCommand(muteManager); + getCommand("mute").setExecutor(muteCommand); + getCommand("unmute").setExecutor(muteCommand); + getCommand("mute").setTabCompleter(muteCommand); + getCommand("unmute").setTabCompleter(muteCommand); getLogger().info("SimpleChat插件已启用"); } diff --git a/src/main/java/ict/minesunshineone/chat/commands/MuteCommand.java b/src/main/java/ict/minesunshineone/chat/commands/MuteCommand.java index 246c3b9..e621e06 100644 --- a/src/main/java/ict/minesunshineone/chat/commands/MuteCommand.java +++ b/src/main/java/ict/minesunshineone/chat/commands/MuteCommand.java @@ -1,9 +1,14 @@ package ict.minesunshineone.chat.commands; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + 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 ict.minesunshineone.chat.managers.MuteManager; @@ -11,7 +16,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextColor; -public class MuteCommand implements CommandExecutor { +public class MuteCommand implements CommandExecutor, TabCompleter { private final MuteManager muteManager; @@ -19,6 +24,41 @@ public MuteCommand(MuteManager muteManager) { this.muteManager = muteManager; } + @Override + public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { + List completions = new ArrayList<>(); + + if (command.getName().equalsIgnoreCase("mute")) { + if (args.length == 1) { + String partialPlayerName = args[0].toLowerCase(); + completions.addAll(Bukkit.getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.toLowerCase().startsWith(partialPlayerName)) + .collect(Collectors.toList())); + } else if (args.length == 2) { + String partialTime = args[1].toLowerCase(); + for (String timeUnit : TimeUtils.getTimeUnits()) { + if (timeUnit.startsWith(partialTime)) { + completions.add(timeUnit); + } + } + } else if (args.length == 3) { + completions.add("违规发言"); + completions.add("刷屏"); + completions.add("辱骂他人"); + completions.add("广告"); + } + } else if (command.getName().equalsIgnoreCase("unmute") && args.length == 1) { + String partialPlayerName = args[0].toLowerCase(); + completions.addAll(Bukkit.getOnlinePlayers().stream() + .map(Player::getName) + .filter(name -> name.toLowerCase().startsWith(partialPlayerName)) + .collect(Collectors.toList())); + } + + return completions; + } + @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (command.getName().equalsIgnoreCase("mute")) { diff --git a/src/main/java/ict/minesunshineone/chat/commands/MuteCommandTabCompleter.java b/src/main/java/ict/minesunshineone/chat/commands/MuteCommandTabCompleter.java deleted file mode 100644 index a58d2bb..0000000 --- a/src/main/java/ict/minesunshineone/chat/commands/MuteCommandTabCompleter.java +++ /dev/null @@ -1,57 +0,0 @@ -package ict.minesunshineone.chat.commands; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; - -import ict.minesunshineone.chat.utils.TimeUtils; - -public class MuteCommandTabCompleter implements TabCompleter { - - @Override - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - List completions = new ArrayList<>(); - - if (command.getName().equalsIgnoreCase("mute")) { - if (args.length == 1) { - // 补全在线玩家名字 - String partialPlayerName = args[0].toLowerCase(); - completions.addAll(Bukkit.getOnlinePlayers().stream() - .map(Player::getName) - .filter(name -> name.toLowerCase().startsWith(partialPlayerName)) - .collect(Collectors.toList())); - } else if (args.length == 2) { - // 补全时间单位 - String partialTime = args[1].toLowerCase(); - for (String timeUnit : TimeUtils.getTimeUnits()) { - if (timeUnit.startsWith(partialTime)) { - completions.add(timeUnit); - } - } - } else if (args.length == 3) { - // 补全常用禁言理由 - completions.add("违规发言"); - completions.add("刷屏"); - completions.add("辱骂他人"); - completions.add("广告"); - } - } else if (command.getName().equalsIgnoreCase("unmute")) { - if (args.length == 1) { - // 补全在线玩家名字 - String partialPlayerName = args[0].toLowerCase(); - completions.addAll(Bukkit.getOnlinePlayers().stream() - .map(Player::getName) - .filter(name -> name.toLowerCase().startsWith(partialPlayerName)) - .collect(Collectors.toList())); - } - } - - return completions; - } -}