diff --git a/src/main/java/net/countercraft/movecraft/Movecraft.java b/src/main/java/net/countercraft/movecraft/Movecraft.java index 9264908b..a5864346 100644 --- a/src/main/java/net/countercraft/movecraft/Movecraft.java +++ b/src/main/java/net/countercraft/movecraft/Movecraft.java @@ -395,6 +395,7 @@ public void onEnable() { // new CommandListener(), this); this.getCommand("release").setExecutor(new CommandListener()); this.getCommand("pilot").setExecutor(new CommandListener()); + this.getCommand("pilot").setTabCompleter(new CommandListener()); this.getCommand("rotateleft").setExecutor(new CommandListener()); this.getCommand("rotateright").setExecutor(new CommandListener()); this.getCommand("cruise").setExecutor(new CommandListener()); diff --git a/src/main/java/net/countercraft/movecraft/listener/CommandListener.java b/src/main/java/net/countercraft/movecraft/listener/CommandListener.java index 8e02d450..d8b1fb39 100644 --- a/src/main/java/net/countercraft/movecraft/listener/CommandListener.java +++ b/src/main/java/net/countercraft/movecraft/listener/CommandListener.java @@ -18,14 +18,7 @@ package net.countercraft.movecraft.listener; import java.io.File; -import java.util.Arrays; -import java.util.Calendar; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; -import java.util.UUID; +import java.util.*; import java.util.logging.Level; import net.countercraft.movecraft.Movecraft; @@ -50,6 +43,7 @@ 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.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -70,7 +64,7 @@ import com.sk89q.worldguard.protection.regions.ProtectedRegion; //public class CommandListener implements Listener { -public class CommandListener implements CommandExecutor { +public class CommandListener implements CommandExecutor, TabCompleter { private CraftType getCraftTypeFromString(String s) { for (CraftType t : CraftManager.getInstance().getCraftTypes()) { @@ -836,6 +830,38 @@ public void run() { return false; } + @Override + public List onTabComplete(CommandSender sender, Command cmd, String label, String[] args) { + final List result = new ArrayList<>(); + if (sender instanceof Player) { + final Player player = (Player) sender; + final String commandName = cmd.getName().toLowerCase(); + if (commandName.equals("pilot")) { + if (args.length < 2) { + final String partialName = args.length == 1 ? args[0].toLowerCase() : ""; + for (CraftType t : CraftManager.getInstance().getCraftTypes()) { + final String craftName = t.getCraftName(); + if (craftName.toLowerCase().startsWith(partialName) && + player.hasPermission("movecraft." + craftName + ".pilot")) { + result.add(craftName); + } + } + } + } else if (commandName.equals("cruise")) { + final String partialDirection = args.length == 1 ? args[0].toLowerCase() : ""; + if ("east".startsWith(partialDirection)) { result.add("east"); } + if ("north".startsWith(partialDirection)) { result.add("north"); } + if ("off".startsWith(partialDirection)) { result.add("off"); } + if ("south".startsWith(partialDirection)) { result.add("south"); } + if ("west".startsWith(partialDirection)) { result.add("west"); } + } + } else { + sender.sendMessage("This command can only be run by a player."); + } + Collections.sort(result, String.CASE_INSENSITIVE_ORDER); + return result; + } + private boolean areDefendersOnline(ProtectedRegion tRegion) { HashSet players=new HashSet(); players.addAll(tRegion.getMembers().getUniqueIds());