Commands are now working (still need some work)

This commit is contained in:
Poslovitch 2017-07-31 10:58:28 +02:00
parent a8606a2b00
commit 614e5d3d5b
3 changed files with 23 additions and 27 deletions

View File

@ -1,50 +1,43 @@
package us.tastybento.bskyblock.api.commands;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
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 us.tastybento.bskyblock.BSkyBlock;
import java.util.*;
/**
*
* @author Poslovitch
*/
public abstract class AbstractCommand implements CommandExecutor, TabCompleter {
private BSkyBlock plugin;
private Map<String, ArgumentHandler> argumentsMap;
private Map<String, String> aliasesMap;
public String label;
public boolean isPlayer;
public boolean inTeam;
public UUID playerUUID;
public UUID teamLeaderUUID;
public Set<UUID> teamMembers;
public Player player;
private final String name;
public UUID playerUUID;
private final boolean help;
private BSkyBlock plugin;
private static final int MAX_PER_PAGE = 7;
protected AbstractCommand(String name, boolean help, BSkyBlock plugin) {
this.name = name;
this.help = help;
protected AbstractCommand(BSkyBlock plugin, String label, boolean help) {
this.plugin = plugin;
// These are not initialized elsewhere, so need to be done so. Initialize with size 1 to save memory
this.aliasesMap = new HashMap<String,String>(1);
this.argumentsMap = new HashMap<String, ArgumentHandler>(1);
this.aliasesMap = new HashMap<String,String>(1);
this.label = label;
this.help = help;
// Register the help argument if needed
if (help) {
@ -70,7 +63,11 @@ public abstract class AbstractCommand implements CommandExecutor, TabCompleter {
public abstract void execute(CommandSender sender, String[] args);
public void addArgument(String[] names, ArgumentHandler handler) {
// TODO add some security checks to avoid duplicates
argumentsMap.put(names[0], handler);
for (int i = 1 ; i < names.length ; i++) {
aliasesMap.put(names[0], names[i]);
}
}
public ArgumentHandler getHandler(String argument) {
@ -117,7 +114,6 @@ public abstract class AbstractCommand implements CommandExecutor, TabCompleter {
@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
this.label = label;
if (this.canUse(sender)) {
// Check if the command sender is a player or not
if (sender instanceof Player) {
@ -131,6 +127,7 @@ public abstract class AbstractCommand implements CommandExecutor, TabCompleter {
teamLeaderUUID = plugin.getIslands().getTeamLeader(playerUUID);
teamMembers = plugin.getIslands().getMembers(teamLeaderUUID);
}
if(args.length >= 1) {
ArgumentHandler handler = getHandler(args[0]); // Store the handler to save some calculations
if (handler != null && handler.canUse(sender)) {

View File

@ -12,7 +12,7 @@ public class AdminCommand extends AbstractCommand {
BSkyBlock plugin;
public AdminCommand(BSkyBlock plugin) {
super(Settings.ADMINCOMMAND, true, plugin);
super(plugin, Settings.ADMINCOMMAND, true);
plugin.getCommand(Settings.ADMINCOMMAND).setExecutor(this);
plugin.getCommand(Settings.ADMINCOMMAND).setTabCompleter(this);
this.plugin = plugin;

View File

@ -1,16 +1,11 @@
package us.tastybento.bskyblock.commands;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
import org.apache.commons.lang.math.NumberUtils;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.permissions.PermissionAttachmentInfo;
import us.tastybento.bskyblock.BSkyBlock;
import us.tastybento.bskyblock.api.commands.AbstractCommand;
import us.tastybento.bskyblock.config.Settings;
@ -19,6 +14,10 @@ import us.tastybento.bskyblock.schematics.Schematic;
import us.tastybento.bskyblock.util.Util;
import us.tastybento.bskyblock.util.VaultHelper;
import java.util.HashMap;
import java.util.List;
import java.util.UUID;
/**
* "/island" command
*
@ -35,7 +34,7 @@ public class IslandCommand extends AbstractCommand {
public IslandCommand(BSkyBlock plugin) {
super(Settings.ISLANDCOMMAND, true, plugin);
super(plugin, Settings.ISLANDCOMMAND, true);
plugin.getCommand(Settings.ISLANDCOMMAND).setExecutor(this);
plugin.getCommand(Settings.ISLANDCOMMAND).setTabCompleter(this);
this.plugin = plugin;