@Override
    public int executeCommand(Object sender, String commandRaw) {
        int firstSpace = commandRaw.indexOf(" ");
        String command = firstSpace >= 0 ? commandRaw.substring(0, firstSpace) : commandRaw;
        String[] args = firstSpace >= 0 ? commandRaw.substring(firstSpace + 1).split(" ") : new String[]{ };

        if (command.indexOf("/") == 0)
            command = command.substring(1);

        if (this.commands.containsKey(command)) {
            CommandSender commandSender = new ReflxPlayer(sender); // Todo: New Player _or ConsoleSender_. Player is currently compatible though.

            this.commands.get(command).executeCommand(commandSender, command, args);

            return 0;
        }

        try {
            return (int) MethodCache.getMethod(this.originalHandler, "a", sender.getClass(), String.class).invoke(this.originalHandler, sender, commandRaw);
        } catch (IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }

        return 0;
    }