public void register() {
        ReflectCommand command;
        if (this.commandLabel != null && !this.commandLabel.isEmpty()) {
            command = new ReflectCommand(this.commandLabel);
        } else {
            throw new CommandNotPreparedException("Command does not have a name.");
        }

        if (this.commandExecutor == null) {
            throw new CommandNotPreparedException(this.commandLabel + " does not have an executor.");
        }

        if (this.aliases != null) {
            command.setAliases(this.aliases);
        }

        if (this.description != null) {
            command.setDescription(this.description);
        }

        if (this.permission != null) {
            command.setPermission(this.permission);
        }

        if (this.permissionMessage != null) {
            command.setPermissionMessage(this.permissionMessage);
        }

        if (this.usage != null) {
            command.setUsage(this.usage);
        }

        getCommandMap().register((this.fromPlugin != null ? this.fromPlugin : ""), command);
        command.setExecutor(this.commandExecutor);
    }