package de.steamwar.bausystem.commands; import de.steamwar.bausystem.tracer.TNTTracer15; import de.steamwar.core.Core; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.command.TabCompleter; import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class CommandTraceTabCompleter implements TabCompleter { @Override public List onTabComplete(CommandSender sender, Command command, String label, String[] args) { if(!(sender instanceof Player)) return new ArrayList<>(); Player player = (Player) sender; switch (Core.getVersion()) { case 15: return tracer15TabComplete(player, args); default: return tracer12TabComplete(player, args); } } private List tracer12TabComplete(Player player, String[] args) { List tabComplete = new ArrayList<>(); tabComplete.add("start"); tabComplete.add("show"); tabComplete.add("stop"); return manageList(tabComplete, args, 0); } private List tracer15TabComplete(Player player, String[] args) { List tabComplete = new ArrayList<>(); if (TNTTracer15.getStatus() == TNTTracer15.Status.IDLE || TNTTracer15.getStatus() == TNTTracer15.Status.IDLE_AUTO) { tabComplete.add("start"); } else { tabComplete.add("stop"); } tabComplete.add("toggleauto"); tabComplete.add("togglewater"); tabComplete.add("show"); if (args[0].equalsIgnoreCase("show") && args.length == 2) { return manageList(new ArrayList<>(Arrays.asList("block", "particle")), args, 1); } tabComplete.add("hide"); tabComplete.add("delete"); tabComplete.add("interpolate"); if (args[0].equalsIgnoreCase("interpolate") && args.length == 2) { return manageList(new ArrayList<>(Arrays.asList("all", "yaxis", "none")), args, 1); } //tabComplete.add("gui"); tabComplete.add("list"); if (args.length == 2) { return new ArrayList<>(); } return manageList(tabComplete, args, 0); } private List manageList(List strings, String[] args, int index) { for (int i = strings.size() - 1; i >= 0; i--) { if (!strings.get(i).startsWith(args[index])) { strings.remove(i); } } return strings; } }