From 72153b57c65da6f697830876ee193e61be3fd237 Mon Sep 17 00:00:00 2001 From: Aust1n46 Date: Sun, 21 Mar 2021 00:28:59 -0500 Subject: [PATCH] Added new API method for getting list of channels. Added channel tab completion for /mute command. --- .../Aust1n46/chat/channel/ChatChannel.java | 13 +++++++++++++ .../Aust1n46/chat/command/chat/Chlist.java | 2 +- .../chat/command/chat/Setchannelall.java | 2 +- .../Aust1n46/chat/command/mute/Mute.java | 16 ++++++++++++---- .../Aust1n46/chat/command/mute/Muteall.java | 2 +- .../Aust1n46/chat/command/mute/Unmute.java | 2 +- .../Aust1n46/chat/command/mute/Unmuteall.java | 2 +- .../Aust1n46/chat/listeners/CommandListener.java | 4 ++-- 8 files changed, 32 insertions(+), 11 deletions(-) diff --git a/src/mineverse/Aust1n46/chat/channel/ChatChannel.java b/src/mineverse/Aust1n46/chat/channel/ChatChannel.java index a51c3a1..6202741 100644 --- a/src/mineverse/Aust1n46/chat/channel/ChatChannel.java +++ b/src/mineverse/Aust1n46/chat/channel/ChatChannel.java @@ -21,8 +21,10 @@ public class ChatChannel { private static MineverseChat plugin = MineverseChat.getInstance(); private static ChatChannel defaultChatChannel; + @Deprecated private static ChatChannel[] channels; private static String defaultColor; + private static List chatChannels = new ArrayList(); private String name; private String permission; @@ -65,6 +67,7 @@ public class ChatChannel { ChatChannel chatChannel = new ChatChannel(name, color, chatColor, permission, speakPermission, mutable, filter, defaultChannel, alias, distance, autojoin, bungee, cooldown, format); channels[counter++] = chatChannel; + chatChannels.add(chatChannel); if (defaultChannel) { defaultChatChannel = chatChannel; defaultColor = color; @@ -77,9 +80,19 @@ public class ChatChannel { * * @return {@link ChatChannel}[] */ + @Deprecated public static ChatChannel[] getChannels() { return channels; } + + /** + * Get list of chat channels. + * + * @return {@link List}<{@link ChatChannel}> + */ + public static List getChatChannels() { + return chatChannels; + } /** * Get a chat channel by name. diff --git a/src/mineverse/Aust1n46/chat/command/chat/Chlist.java b/src/mineverse/Aust1n46/chat/command/chat/Chlist.java index 65fe61e..f526c55 100644 --- a/src/mineverse/Aust1n46/chat/command/chat/Chlist.java +++ b/src/mineverse/Aust1n46/chat/command/chat/Chlist.java @@ -15,7 +15,7 @@ public class Chlist extends MineverseCommand { @Override public void execute(CommandSender sender, String command, String[] args) { sender.sendMessage(LocalizedMessage.CHANNEL_LIST_HEADER.toString()); - for(ChatChannel chname : ChatChannel.getChannels()) { + for(ChatChannel chname : ChatChannel.getChatChannels()) { if(chname.hasPermission()) { if(sender.hasPermission(chname.getPermission())) { sender.sendMessage(LocalizedMessage.CHANNEL_LIST_WITH_PERMISSIONS.toString() diff --git a/src/mineverse/Aust1n46/chat/command/chat/Setchannelall.java b/src/mineverse/Aust1n46/chat/command/chat/Setchannelall.java index c85eb05..a21e427 100644 --- a/src/mineverse/Aust1n46/chat/command/chat/Setchannelall.java +++ b/src/mineverse/Aust1n46/chat/command/chat/Setchannelall.java @@ -29,7 +29,7 @@ public class Setchannelall extends MineverseCommand { .replace("{args}", args[0])); return; } - for(ChatChannel channel : ChatChannel.getChannels()) { + for(ChatChannel channel : ChatChannel.getChatChannels()) { if(channel.hasPermission()) { if(!player.isOnline()) { sender.sendMessage(LocalizedMessage.PLAYER_OFFLINE_NO_PERMISSIONS_CHECK.toString()); diff --git a/src/mineverse/Aust1n46/chat/command/mute/Mute.java b/src/mineverse/Aust1n46/chat/command/mute/Mute.java index 980a16b..2b7e362 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Mute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Mute.java @@ -5,6 +5,7 @@ import java.io.DataOutputStream; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; @@ -120,10 +121,17 @@ public class Mute extends MineverseCommand { @Override public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { List completions = new ArrayList<>(); - StringUtil.copyPartialMatches(args[args.length - 1], MineverseChat.networkPlayerNames, completions); - completions.add("tester"); - Collections.sort(completions); - return completions; + if(args.length == 1) { + StringUtil.copyPartialMatches(args[0], MineverseChat.networkPlayerNames, completions); + Collections.sort(completions); + return completions; + } + if(args.length == 2) { + StringUtil.copyPartialMatches(args[1], ChatChannel.getChatChannels().stream().map(ChatChannel::getName).collect(Collectors.toList()), completions); + Collections.sort(completions); + return completions; + } + return Collections.emptyList(); } private void sendBungeeCordMute(CommandSender sender, String playerToMute, ChatChannel channel, long time) { diff --git a/src/mineverse/Aust1n46/chat/command/mute/Muteall.java b/src/mineverse/Aust1n46/chat/command/mute/Muteall.java index 4d8d5b3..364d61f 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Muteall.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Muteall.java @@ -31,7 +31,7 @@ public class Muteall extends MineverseCommand { return; } boolean bungee = false; - for(ChatChannel channel : ChatChannel.getChannels()) { + for(ChatChannel channel : ChatChannel.getChatChannels()) { if(channel.isMutable()) { player.addMute(channel.getName(), 0); if(channel.getBungee()) { diff --git a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java index 9d27e99..ae5d619 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Unmute.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Unmute.java @@ -28,7 +28,7 @@ public class Unmute extends MineverseCommand { sender.sendMessage(LocalizedMessage.PLAYER_OFFLINE.toString().replace("{args}", args[0])); return; } - for (ChatChannel channel : ChatChannel.getChannels()) { + for (ChatChannel channel : ChatChannel.getChatChannels()) { if (channel.getName().equalsIgnoreCase(args[1]) || channel.getAlias().equalsIgnoreCase(args[1])) { if (!player.isMuted(channel.getName())) { sender.sendMessage(LocalizedMessage.PLAYER_NOT_MUTED.toString() diff --git a/src/mineverse/Aust1n46/chat/command/mute/Unmuteall.java b/src/mineverse/Aust1n46/chat/command/mute/Unmuteall.java index 841d4c6..6bc2648 100644 --- a/src/mineverse/Aust1n46/chat/command/mute/Unmuteall.java +++ b/src/mineverse/Aust1n46/chat/command/mute/Unmuteall.java @@ -31,7 +31,7 @@ public class Unmuteall extends MineverseCommand { return; } boolean bungee = false; - for(ChatChannel channel : ChatChannel.getChannels()) { + for(ChatChannel channel : ChatChannel.getChatChannels()) { player.removeMute(channel.getName()); if(channel.getBungee()) { bungee = true; diff --git a/src/mineverse/Aust1n46/chat/listeners/CommandListener.java b/src/mineverse/Aust1n46/chat/listeners/CommandListener.java index 87830cb..267f801 100644 --- a/src/mineverse/Aust1n46/chat/listeners/CommandListener.java +++ b/src/mineverse/Aust1n46/chat/listeners/CommandListener.java @@ -153,7 +153,7 @@ public class CommandListener implements CommandExecutor, Listener { } if(!plugin.quickchat) { - for(ChatChannel channel : ChatChannel.getChannels()) { + for(ChatChannel channel : ChatChannel.getChatChannels()) { if(!channel.hasPermission() || mcp.getPlayer().hasPermission(channel.getPermission())) { if(message.equals("/" + channel.getAlias())) { mcp.getPlayer().sendMessage(LocalizedMessage.SET_CHANNEL.toString() @@ -227,7 +227,7 @@ public class CommandListener implements CommandExecutor, Listener { return true; } MineverseChatPlayer mcp = MineverseChatAPI.getOnlineMineverseChatPlayer((Player) sender); - for(ChatChannel channel : ChatChannel.getChannels()) { + for(ChatChannel channel : ChatChannel.getChatChannels()) { if(command.getName().toLowerCase().equals(channel.getAlias())) { if(args.length == 0) { mcp.getPlayer().sendMessage(ChatColor.RED + "Invalid command: /" + channel.getAlias() + " message");