Added tab complete.
This commit is contained in:
parent
3fefd97d87
commit
39885182ee
|
@ -11,7 +11,7 @@ public abstract class AbstractCommand {
|
|||
|
||||
private final AbstractCommand parent;
|
||||
private final boolean noConsole;
|
||||
private List<String> command;
|
||||
private String command;
|
||||
|
||||
private List<String> subCommand = new ArrayList<>();
|
||||
|
||||
|
@ -19,7 +19,7 @@ public abstract class AbstractCommand {
|
|||
if (parent != null) {
|
||||
this.subCommand = Arrays.asList(command);
|
||||
} else {
|
||||
this.command = Arrays.asList(command);
|
||||
this.command = Arrays.asList(command).get(0);
|
||||
}
|
||||
this.parent = parent;
|
||||
this.noConsole = noConsole;
|
||||
|
@ -29,7 +29,7 @@ public abstract class AbstractCommand {
|
|||
return parent;
|
||||
}
|
||||
|
||||
public List<String> getCommand() {
|
||||
public String getCommand() {
|
||||
return command;
|
||||
}
|
||||
|
||||
|
@ -43,6 +43,8 @@ public abstract class AbstractCommand {
|
|||
|
||||
protected abstract ReturnType runCommand(EpicBuckets instance, CommandSender sender, String... args);
|
||||
|
||||
protected abstract List<String> onTab(EpicBuckets instance, CommandSender sender, String... args);
|
||||
|
||||
public abstract String getPermissionNode();
|
||||
|
||||
public abstract String getSyntax();
|
||||
|
|
|
@ -8,19 +8,22 @@ import org.bukkit.command.Command;
|
|||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandManager implements CommandExecutor {
|
||||
public class CommandManager implements CommandExecutor {
|
||||
|
||||
private EpicBuckets instance;
|
||||
private TabManager tabManager;
|
||||
|
||||
private List<AbstractCommand> commands = new ArrayList<>();
|
||||
|
||||
public CommandManager(EpicBuckets instance) {
|
||||
this.instance = instance;
|
||||
this.tabManager = new TabManager(this);
|
||||
|
||||
instance.getCommand("EpicBuckets").setExecutor(this);
|
||||
|
||||
|
@ -31,6 +34,11 @@ public class CommandManager implements CommandExecutor {
|
|||
addCommand(new CommandGive(commandEpicBuckets));
|
||||
addCommand(new CommandAdminToggle(commandEpicBuckets));
|
||||
addCommand(new CommandAdminPanel(commandEpicBuckets));
|
||||
|
||||
for (AbstractCommand abstractCommand : commands) {
|
||||
if (abstractCommand.getParent() != null) continue;
|
||||
instance.getCommand(abstractCommand.getCommand()).setTabCompleter(tabManager);
|
||||
}
|
||||
}
|
||||
|
||||
private AbstractCommand addCommand(AbstractCommand abstractCommand) {
|
||||
|
@ -41,12 +49,12 @@ public class CommandManager implements CommandExecutor {
|
|||
@Override
|
||||
public boolean onCommand(CommandSender commandSender, Command command, String s, String[] strings) {
|
||||
for (AbstractCommand abstractCommand : commands) {
|
||||
if (abstractCommand.getCommand() != null && abstractCommand.getCommand().contains(command.getName().toLowerCase())) {
|
||||
if (abstractCommand.getCommand() != null && abstractCommand.getCommand().equalsIgnoreCase(command.getName().toLowerCase())) {
|
||||
if (strings.length == 0) {
|
||||
processRequirements(abstractCommand, commandSender, strings);
|
||||
return true;
|
||||
}
|
||||
} else if (strings.length != 0 && abstractCommand.getParent() != null && abstractCommand.getParent().getCommand().contains(command.getName().toLowerCase())) {
|
||||
} else if (strings.length != 0 && abstractCommand.getParent() != null && abstractCommand.getParent().getCommand().equalsIgnoreCase(command.getName())) {
|
||||
String cmd = strings[0];
|
||||
String cmd2 = strings.length >= 2 ? String.join(" ", strings[0], strings[1]) : null;
|
||||
for (String cmds : abstractCommand.getSubCommand()) {
|
||||
|
@ -80,4 +88,8 @@ public class CommandManager implements CommandExecutor {
|
|||
public List<AbstractCommand> getCommands() {
|
||||
return Collections.unmodifiableList(commands);
|
||||
}
|
||||
|
||||
public TabManager getTabManager() {
|
||||
return tabManager;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,44 @@
|
|||
package com.songoda.epicbuckets.command;
|
||||
|
||||
import com.songoda.epicbuckets.EpicBuckets;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class TabManager implements TabCompleter {
|
||||
|
||||
private final CommandManager commandManager;
|
||||
|
||||
TabManager(CommandManager commandManager) {
|
||||
this.commandManager = commandManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> onTabComplete(CommandSender sender, Command command, String alias, String[] strings) {
|
||||
for (AbstractCommand abstractCommand : commandManager.getCommands()) {
|
||||
if (abstractCommand.getCommand() != null && abstractCommand.getCommand().equalsIgnoreCase(command.getName().toLowerCase())) {
|
||||
if (strings.length == 1) {
|
||||
List<String> subs = new ArrayList<>();
|
||||
for (AbstractCommand ac : commandManager.getCommands()) {
|
||||
if (ac.getSubCommand() == null) continue;
|
||||
subs.addAll(ac.getSubCommand());
|
||||
}
|
||||
return subs;
|
||||
}
|
||||
} else if (strings.length != 0 && abstractCommand.getParent() != null && abstractCommand.getParent().getCommand().equalsIgnoreCase(command.getName().toLowerCase())) {
|
||||
String cmd = strings[0];
|
||||
String cmd2 = strings.length >= 2 ? String.join(" ", strings[0], strings[1]) : null;
|
||||
for (String cmds : abstractCommand.getSubCommand()) {
|
||||
if (cmd.equalsIgnoreCase(cmds) || (cmd2 != null && cmd2.equalsIgnoreCase(cmds))) {
|
||||
return abstractCommand.onTab(EpicBuckets.getInstance(), sender, strings);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -6,6 +6,8 @@ import com.songoda.epicbuckets.gui.GUIPanel;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandAdminPanel extends AbstractCommand {
|
||||
|
||||
public CommandAdminPanel(AbstractCommand parent) {
|
||||
|
@ -18,6 +20,11 @@ public class CommandAdminPanel extends AbstractCommand {
|
|||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicbuckets.admin";
|
||||
|
|
|
@ -5,6 +5,8 @@ import com.songoda.epicbuckets.command.AbstractCommand;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandAdminToggle extends AbstractCommand {
|
||||
|
||||
public CommandAdminToggle(AbstractCommand parent) {
|
||||
|
@ -17,6 +19,11 @@ public class CommandAdminToggle extends AbstractCommand {
|
|||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicbuckets.admin";
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.songoda.epicbuckets.gui.GUIMain;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandEpicBuckets extends AbstractCommand {
|
||||
|
||||
public CommandEpicBuckets() {
|
||||
|
@ -19,6 +21,11 @@ public class CommandEpicBuckets extends AbstractCommand {
|
|||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicbuckets.shop";
|
||||
|
|
|
@ -11,6 +11,10 @@ import org.bukkit.Bukkit;
|
|||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
public class CommandGive extends AbstractCommand {
|
||||
|
||||
public CommandGive(AbstractCommand parent) {
|
||||
|
@ -61,6 +65,41 @@ public class CommandGive extends AbstractCommand {
|
|||
return ReturnType.FAILURE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
if (args.length == 2) {
|
||||
List<String> players = new ArrayList<>();
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
players.add(player.getName());
|
||||
}
|
||||
return players;
|
||||
} if (args.length == 3) {
|
||||
List<String> traits = new ArrayList<>();
|
||||
for (Shop shop : EpicBuckets.getInstance().getShopManager().getShops()) {
|
||||
if (!traits.contains(shop.getTrait().name())) {
|
||||
traits.add(shop.getTrait().name());
|
||||
}
|
||||
}
|
||||
return traits;
|
||||
} else if (args.length == 4) {
|
||||
List<String> genitems = new ArrayList<>();
|
||||
for (Shop shop : EpicBuckets.getInstance().getShopManager().getShops()) {
|
||||
for (SubShop subShop : shop.getSubShops()) {
|
||||
if (!genitems.contains(subShop.getGenItem().getType().name())) {
|
||||
genitems.add(subShop.getGenItem().getType().name());
|
||||
}
|
||||
}
|
||||
}
|
||||
return genitems;
|
||||
|
||||
} else if (args.length == 5) {
|
||||
return Arrays.asList("1", "2", "3");
|
||||
} else if (args.length == 6) {
|
||||
return Arrays.asList("1", "2", "3");
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicbuckets.give";
|
||||
|
|
|
@ -6,6 +6,8 @@ import com.songoda.epicbuckets.command.AbstractCommand;
|
|||
import com.songoda.epicbuckets.utils.ChatUtil;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandHelp extends AbstractCommand {
|
||||
|
||||
public CommandHelp(AbstractCommand parent) {
|
||||
|
@ -27,6 +29,11 @@ public class CommandHelp extends AbstractCommand {
|
|||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return null;
|
||||
|
|
|
@ -5,6 +5,8 @@ import com.songoda.epicbuckets.command.AbstractCommand;
|
|||
import com.songoda.epicbuckets.utils.ChatUtil;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CommandReload extends AbstractCommand {
|
||||
|
||||
public CommandReload(AbstractCommand parent) {
|
||||
|
@ -18,6 +20,11 @@ public class CommandReload extends AbstractCommand {
|
|||
return ReturnType.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<String> onTab(EpicBuckets instance, CommandSender sender, String... args) {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPermissionNode() {
|
||||
return "epicbuckets.admin";
|
||||
|
|
|
@ -61,7 +61,7 @@ public class ConfigManager {
|
|||
private int genbucketDelay;
|
||||
|
||||
private int cooldown = 0;
|
||||
private Map<UUID, Long> cooldowns;
|
||||
private Map<UUID, Long> cooldowns = new HashMap<>();
|
||||
|
||||
private int maxVerticalHeight;
|
||||
private int maxHorizontalLength;
|
||||
|
|
Loading…
Reference in New Issue