Newer
Older
KeeperJerry_Launcher / LaunchServer / source / command / Command.java
@KeeperJerry KeeperJerry on 27 Jun 2020 1 KB Рефактор кода
package launchserver.command;

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

import java.util.UUID;

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

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

    @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());
        }
    }

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

    @LauncherAPI
    public abstract String getUsageDescription();

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

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