User Tools

Site Tools


zh_cn:tutorial:commands

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
zh_cn:tutorial:commands [2023/11/18 11:21] solidblockzh_cn:tutorial:commands [2023/11/19 02:01] – [子命令] solidblock
Line 102: Line 102:
 **请确保你导入了正确的静态方法。**方法 ''literal'' 是 ''CommandManager.literal''。你也可以清楚地写 ''CommandManager.literal'' 而不是使用静态导入。''CommandManager.literal("foo")'' 会告诉 brigadier,命令有一个节点,''foo'' 这个**字面的**节点。 **请确保你导入了正确的静态方法。**方法 ''literal'' 是 ''CommandManager.literal''。你也可以清楚地写 ''CommandManager.literal'' 而不是使用静态导入。''CommandManager.literal("foo")'' 会告诉 brigadier,命令有一个节点,''foo'' 这个**字面的**节点。
  
-在 ''sendFeedback'' 方法中,第一个参数是需要发送的文本,在 1.20 以下的版本中是 ''Text'',在 1.20 之后的版本是 ''Supplier<Text>''(这是为了避免在不需要的时候实例化了 ''Text'' 对象,因此请不要使用 ''Suppliers.ofInstance'' 或类似方法)。第二个参数决定了命令是否要将反馈的内容发送给其他的管理员。如果命令是//查询//一些内容,比如查询当前的时间或者某玩家的分数,则应该是 ''false''。如果命令实际上//做了些//事情,例如修改时间或者分数,那么则应该是 ''true''。如果游戏规则 ''sendCommandFeedback'' 是 false,那么你不会收到反馈。如果命令执行者通过 ''/execute as ...'' 修改,反馈会发送给原始的执行者。+在 ''sendFeedback'' 方法中,第一个参数是需要发送的文本,在 1.20 之前的版本中是 ''Text'',在 1.20 以及之后的版本是 ''Supplier<Text>''(这是为了避免在不需要的时候实例化了 ''Text'' 对象,因此请不要使用 ''Suppliers.ofInstance'' 或类似方法)。第二个参数决定了命令是否要将反馈的内容发送给其他的管理员。如果命令是//查询//一些内容,比如查询当前的时间或者某玩家的分数,则应该是 ''false''。如果命令实际上//做了些//事情,例如修改时间或者分数,那么则应该是 ''true''。如果游戏规则 ''sendCommandFeedback'' 是 false,那么你不会收到反馈。如果命令执行者通过 ''/execute as ...'' 修改,反馈会发送给原始的执行者。
  
 如果命令失败,可以不必调用 ''sendFeedback'',而是直接抛出 ''CommandSyntaxException'' 或 ''<yarn class_2164>''。具体请参见 [[command_exceptions]]。 如果命令失败,可以不必调用 ''sendFeedback'',而是直接抛出 ''CommandSyntaxException'' 或 ''<yarn class_2164>''。具体请参见 [[command_exceptions]]。
Line 169: Line 169:
 大多数命令都使用了参数。一些参数是可选的,也就是说如果你不提供此参数,命令仍能运行。一个节点可以有多个参数类型,但是注意有可能出现二义性,这是需要避免的。 大多数命令都使用了参数。一些参数是可选的,也就是说如果你不提供此参数,命令仍能运行。一个节点可以有多个参数类型,但是注意有可能出现二义性,这是需要避免的。
  
-在这个例子中。我们添加一个整数参数。并计算整数的方。+在这个例子中。我们添加一个整数参数。并计算整数的方。
  
 <code java> <code java>
Line 206: Line 206:
 </code> </code>
  
-现在你可以输入一个或者两个整数了。如果给一个整数,会计算这个数的平方。如果提供两个整数,会计算这两个整数的积。你可能发现,两次指定类似的执行内容有些不太必要。因此,我们可以创建一个在两个执行中都使用的方法。+现在你可以输入一个或者两个整数了。如果给一个整数,会计算这个数的平方。如果提供两个整数,会计算这两个整数的积。你可能发现,两次指定类似的执行内容有些不太必要。因此,我们可以创建一个在两个执行中都使用的方法。
  
 <code java> <code java>
Line 229: Line 229:
 ===== 子命令 ===== ===== 子命令 =====
  
-要添加子命令,你需要先照常注册注册第一个字面节点。+要添加子命令,你需要先照常注册第一个字面节点。
  
 <code> <code>
Line 255: Line 255:
 建议给命令添加节点时缩进你的代码,通常来说缩进对应了命令树中有多少节点的深度,每一次换行也可以看出添加了一个节点。本教程后面会展示格式化树状命令的几种可选样式。 建议给命令添加节点时缩进你的代码,通常来说缩进对应了命令树中有多少节点的深度,每一次换行也可以看出添加了一个节点。本教程后面会展示格式化树状命令的几种可选样式。
  
-类似参数,子命令节点也可以设置为可选的。在下面这个例子中,''/foo'' 和 ''/foo bar'' 都是有效的。+类似参数,子命令节点也可以设置为可选的。在下面这个例子中,''/foo'' 和 ''/foo bar'' 都是有效的。
 <code java [enable_line_numbers="true"]> <code java [enable_line_numbers="true"]>
 dispatcher.register(literal("foo") dispatcher.register(literal("foo")
Line 284: Line 284:
 ====== 常见问题 ====== ====== 常见问题 ======
  
-===== 命令为什么不编译 ===== +===== 代码为什么不编译 ===== 
-可能有一些常见的原因+此问题可能有一些常见的原因
  
   * **捕获或抛出 CommandSyntaxException:**''CommandSyntaxException'' 不是 ''RuntimeException'',如果抛出,则抛出的地方所在方法必须在方法签名中也抛出 ''CommandSyntaxException'',或者捕获。Brigadier 可以处理此异常,并在游戏内为你提供适当的错误消息。   * **捕获或抛出 CommandSyntaxException:**''CommandSyntaxException'' 不是 ''RuntimeException'',如果抛出,则抛出的地方所在方法必须在方法签名中也抛出 ''CommandSyntaxException'',或者捕获。Brigadier 可以处理此异常,并在游戏内为你提供适当的错误消息。
zh_cn/tutorial/commands.txt · Last modified: 2023/11/19 02:02 by solidblock