diff --git a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java index 5172ae2..82df625 100644 --- a/src/main/java/com/cnaude/purpleirc/CommandHandlers.java +++ b/src/main/java/com/cnaude/purpleirc/CommandHandlers.java @@ -35,7 +35,7 @@ public class CommandHandlers implements CommandExecutor { public HashMap commands = new HashMap<>(); public ArrayList sortedCommands = new ArrayList<>(); private final PurpleIRC plugin; - + /** * * @param plugin diff --git a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java index 554451d..9a74146 100644 --- a/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java +++ b/src/main/java/com/cnaude/purpleirc/CommandQueueWatcher.java @@ -19,7 +19,6 @@ import com.cnaude.purpleirc.Events.IRCCommandEvent; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; -import org.bukkit.command.CommandSender; /** * diff --git a/src/main/java/com/cnaude/purpleirc/Commands/Msg.java b/src/main/java/com/cnaude/purpleirc/Commands/Msg.java index e3402df..2d08d1b 100644 --- a/src/main/java/com/cnaude/purpleirc/Commands/Msg.java +++ b/src/main/java/com/cnaude/purpleirc/Commands/Msg.java @@ -54,7 +54,7 @@ public void dispatch(CommandSender sender, String[] args) { plugin.logDebug("Dispatching msg command..."); int msgIdx = 2; String nick; - java.util.List myBots = new ArrayList(); + java.util.List myBots = new ArrayList<>(); if (plugin.ircBots.containsKey(args[1])) { myBots.add(plugin.ircBots.get(args[1])); msgIdx = 3; diff --git a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java index 8d5128f..967f498 100644 --- a/src/main/java/com/cnaude/purpleirc/PurpleIRC.java +++ b/src/main/java/com/cnaude/purpleirc/PurpleIRC.java @@ -174,6 +174,7 @@ public class PurpleIRC extends JavaPlugin { public ReportRTSHook reportRTSHook; public NetPackets netPackets; public CommandHandlers commandHandlers; + public PurpleTabCompleter ircTabCompleter; private BotWatcher botWatcher; public IRCMessageHandler ircMessageHandler; @@ -378,7 +379,9 @@ public void onEnable() { logInfo("Essentials not detected."); } commandHandlers = new CommandHandlers(this); + ircTabCompleter = new PurpleTabCompleter(this); getCommand("irc").setExecutor(commandHandlers); + getCommand("irc").setTabCompleter(ircTabCompleter); regexGlobber = new RegexGlobber(); tokenizer = new ChatTokenizer(this); loadBots(); diff --git a/src/main/java/com/cnaude/purpleirc/PurpleTabCompleter.java b/src/main/java/com/cnaude/purpleirc/PurpleTabCompleter.java new file mode 100644 index 0000000..cc0c188 --- /dev/null +++ b/src/main/java/com/cnaude/purpleirc/PurpleTabCompleter.java @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2014 cnaude + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.cnaude.purpleirc; + +import java.util.ArrayList; +import java.util.List; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.command.TabCompleter; +import org.bukkit.entity.Player; +import org.pircbotx.Channel; +import org.pircbotx.User; + +/** + * + * @author cnaude + */ +public class PurpleTabCompleter implements TabCompleter { + + private final PurpleIRC plugin; + + /** + * + * @param plugin + */ + public PurpleTabCompleter(final PurpleIRC plugin) { + this.plugin = plugin; + } + + @Override + public List onTabComplete(CommandSender cs, Command cmnd, String string, String[] strings) { + + List list = new ArrayList<>(); + + plugin.logDebug("S: " + string); + for (String s : strings) { + plugin.logDebug("S1: " + s); + } + if (strings.length == 1) { + for (String c : plugin.commandHandlers.sortedCommands) { + if (cs.hasPermission("irc." + c)) { + if (c.startsWith(strings[0])) { + list.add(c); + } + } + } + } + + if (strings.length == 2) { + for (PurpleBot ircBot : plugin.ircBots.values()) { + for (Channel channel : ircBot.getChannels()) { + for (User user : channel.getUsers()) { + if (user.getNick().startsWith(strings[1])) { + list.add(user.getNick()); + } + } + } + } + for (Player player : plugin.getServer().getOnlinePlayers()) { + if (plugin.vanishHook != null) { + if (plugin.vanishHook.isVanished(player)) { + continue; + } + } + if (player.getDisplayName().startsWith(strings[1])) { + list.add(player.getDisplayName()); + } + } + } + + return list; + } + +}