java - Minecraft 1.15.2 中的修改命令在给出参数时不断显示未知命令
问题描述
我目前正在尝试为 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;
}
}
命令注册并显示在游戏中。当我尝试执行它时出现问题,例如:“/vote hello”。每次将参数添加到命令时,Minecraft 只会告诉我命令不存在或“未知命令”
我不太明白我在这里搞砸了什么。任何正确方向的建议都非常感谢。
先感谢您
解决方案
感谢你的提问!这可以作为顶级函数的主体更好地工作:
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);
推荐阅读
- sql-server - Nest Json 数组合并
- scala - Odersky 解释的 Scala 隐式
- java - doNothing() 和 times() 在 Mockito 中同时使用
- docker - Docker / TeamCity / xUnit - 测试选项卡缺失和失败的测试不会停止构建
- java - JavaFX 画布返回 Null
- rules - 如何确定对象是否是 IBM Rules Designer/ODM 中某个类的实例?
- php - 获取新闻提要(社交媒体)
- python - 如何在守护进程模式下使用 docker 运行 Python?
- python - keras TypeError:'int'对象不可迭代
- java-8 - 从 Java 6 升级到 Java 8 后应用程序的虚拟内存使用率很高