当前位置: 首页 > 知识库问答 >
问题:

Minecraft 1.15.2中的Modded命令在给定参数时总是显示未知命令

佟涵畅
2023-03-14

我目前正在尝试为1.15.2开发一个简单的Minecraft mod。我试图创建的是一个命令,匿名你的消息,例如在假选举期间。它基本上接受您编写的消息,并将其匿名发送给服务器中的每个人。

下面是处理该行为的命令类的代码:

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;
    }
}

共有1个答案

百里意智
2023-03-14

谢谢你的提问!这可以更好地作为top函数的主体:

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);
 类似资料:
  • 我正在为1.8.9开发一些minecraft mod。我试图创建的是简单地发送消息给发送者的命令。 下面是command类和main类的代码 我不知道怎么做 有谁能帮我在多人服务器中使用这个命令吗?

  • 如果你需要在命令行下插入一个值,通常需要使用引号将其括起来,尤其是当其包含空格时更是如此。 shellquote 函数可以携带任意数量的参数(包括数组), 它会使用引号将每个参数都括起来并返回一个可以传递到 Shell 命令行上的以空格间隔的字符串。 在下面的例子中,我们想要创建一个用于文件改名的 exec 资源, 然而源文件名和目标文件名都包含空格,因此在命令行上需要正确地使用引号将它们括起来。

  • 嗨,我正在尝试使用Django实现elasticsearch。我正在学习本教程 https://www.codementor.io/samueljames/using-django-with-elasticsearch-logstash-and-kibana-elk-stack-9L4FWX138 我得到了, 键入“manage.py help”了解用法信息。 尝试使用cmd创建索引时 请帮忙

  • 问题内容: 当我不得不为一个陌生的新项目生成javadocs时,我发现我花了很长时间尝试简单地编写正确的命令,指定所有包,所有源代码树等​​,这既耗时又容易出错:我可能缺少某些资料。 假设我有一个目录myproj,在它的下面有一些软件包(以及各种其他资源和东西),在那些软件包目录下最终有一些src /目录,然后是许多my / awesome / java / project / package类型

  • 问题内容: 在Redis 4.0中,有一个新命令UNLINK删除Redis内存中的密钥。 此命令与DEL非常相似:它将删除指定的密钥。与DEL一样,如果密钥不存在,则将其忽略。但是,该 命令在不同的线程中执行实际的内存回收 , 因此当DEL为时 , 它不会阻塞 。这就是命令名称的来源:该命令只是将键与键空间断开链接。实际的删除将在以后异步发生。 因此,可以始终(100%次)使用UNLINK而不是D

  • 问题内容: 我需要稍后再运行一个mail.php文件,而不是让用户在提交register.php时等待发送验证电子邮件。 因此,我选择在1分钟后使用 at 命令在命令行中运行mail.php( 在register.php 中 调用 ): 但是,当我处于at命令的交互模式时,我只能将参数发送到该php文件。 由于我希望这是自动的,因此我需要在运行时使用shell脚本: 但是我找不到传递 {email