package dev.unlegitdqrk.unlegitlibrary.command; import javax.management.InstanceAlreadyExistsException; import java.util.ArrayList; import java.util.List; public abstract class Command { private final CommandManager commandManager; private final String name; private final String description; private final String usage; private final List permissions; private final List aliases; public Command(CommandManager commandManager, String name, String description, String usage, List permissions, List aliases) throws InstanceAlreadyExistsException { this.commandManager = commandManager; this.name = name; this.description = description; this.usage = usage; this.permissions = permissions; this.aliases = aliases; boolean exists = commandManager.getCommand(name) != null; if (!exists) for (String alias : aliases) exists = commandManager.getCommand(alias) != null; if (exists) throw new InstanceAlreadyExistsException("Command with this name or some alias alreadx exists!"); } public final String getName() { return name; } public final CommandManager getCommandManager() { return commandManager; } public final String getDescription() { return description; } public final String getUsage() { return usage; } public final List getPermissions() { return new ArrayList<>(permissions); } public final List getAliases() { return new ArrayList<>(aliases); } public abstract void execute(CommandExecutor commandExecutor, String label, String[] args); }