Newer
Older
KeeperJerry_Launcher / LaunchServer / source / command / Command.java
package launchserver.command;

import java.util.UUID;

import launcher.LauncherAPI;
import launcher.helper.VerifyHelper;
import launchserver.LaunchServer;

public abstract class Command {
    @LauncherAPI protected final LaunchServer server;

    @LauncherAPI
    protected Command(LaunchServer server) {
        this.server = server;
    }

    @LauncherAPI
    public abstract String getArgsDescription(); // "<required> [optional]"

    @LauncherAPI
    public abstract String getUsageDescription();

    @LauncherAPI
    public abstract void invoke(String... args) throws Exception;

    @LauncherAPI
    protected final void verifyArgs(String[] args, int min) throws CommandException {
        if (args.length < min) {
            throw new CommandException("Command usage: " + getArgsDescription());
        }
    }

    @LauncherAPI
    protected static UUID parseUUID(String s) throws CommandException {
        try {
            return UUID.fromString(s);
        } catch (IllegalArgumentException ignored) {
            throw new CommandException(String.format("Invalid UUID: '%s'", s));
        }
    }

    @LauncherAPI
    protected static String parseUsername(String username) throws CommandException {
        try {
            return VerifyHelper.verifyUsername(username);
        } catch (IllegalArgumentException e) {
            throw new CommandException(e.getMessage());
        }
    }
}