Модифицированная команда в Minecraft 1.15.2 постоянно сообщает Неизвестную команду при задании аргумента - PullRequest
0 голосов
/ 13 февраля 2020

Я сейчас пытаюсь разработать простой мод Minecraft для 1.15.2. Я пытаюсь создать команду, которая анонимизирует ваши сообщения, например, во время фальсифицированных выборов. В основном он принимает сообщение, которое вы написали, и отправляет его анонимно всем на сервере.

Вот код класса команд, который обрабатывает поведение:

public class CommandVote {
    public static void register(CommandDispatcher<CommandSource> dispatcher) {
        LiteralArgumentBuilder<CommandSource> builder = Commands.literal("vote").requires(source -> source.hasPermissionLevel(0));
        builder.executes(context -> vote(context))
                    .then(Commands.argument("message", MessageArgument.message()))
                        .executes(context -> voteArgs(context));
        dispatcher.register(builder);
    }

    private static int vote(CommandContext<CommandSource> context) throws CommandSyntaxException {
        ServerPlayerEntity player = context.getSource().asPlayer();
        player.sendMessage(new StringTextComponent("Por favor, introduzca su opcion en la votacion"));
        return Command.SINGLE_SUCCESS;
    }

    private static int voteArgs(CommandContext<CommandSource> context) throws CommandSyntaxException {
        ServerPlayerEntity player = context.getSource().asPlayer();

        player.server.getPlayerList().sendMessage(MessageArgument.getMessage(context, "message"));
        return Command.SINGLE_SUCCESS;
    }
}

Регистры команд и это проявляется в игре. Проблема возникает, когда я пытаюсь выполнить его, например: «/ Голос Привет». Каждый раз, когда к команде добавляется аргумент, Minecraft просто говорит мне, что команда не существует или «Неизвестная команда»

Я не совсем понимаю, о чем я тут напутал. Любые советы в правильном направлении очень ценятся.

Заранее спасибо

1 Ответ

0 голосов
/ 21 февраля 2020

Спасибо за вопрос! Это могло бы работать лучше как тело верхней функции:

LiteralArgumentBuilder<CommandSource> builder = Commands.literal("vote")
                .then(Commands.argument("number", IntegerArgumentType.integer())
                        .then(Commands.argument("message", MessageArgument.message())
                                .executes(context -> {
                                    System.out.println("Level 3 " + context.getInput());
                                    return Command.SINGLE_SUCCESS;
                                }))
                        .executes(context -> {
                            System.out.println("Level 2 " + context.getInput());
                            return Command.SINGLE_SUCCESS;
                        }))
                .executes(context -> {
                    System.out.println("Level 1 " + context.getInput());
                    return Command.SINGLE_SUCCESS;
                });
dispatcher.register(builder);
...