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
zh_cn:tutorial:commands [2023/11/19 02:01] – [参数] solidblockzh_cn:tutorial:commands [2025/07/06 07:10] (current) – [静态导入] solidblock
Line 100: Line 100:
 </code> </code>
  
-**请确保你导入了正确的静态方法。**方法 ''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 ...'' 修改,反馈则会发送给原始的执行者。
Line 125: Line 125:
  
 ===== 静态导入 ===== ===== 静态导入 =====
-在上面的例子中,使用了静态导入以简化代码。对于字面值,语句会简化为 ''literal("foo")'',这也适用于获取参数的值,把 ''StringArgumentType.getString(ctx, "string")'' 简化为 ''getString(ctx, "string")''。这也适用于 Minecraft 自己的参数类型。+在上面的例子中,使用了静态导入以简化代码。对于字面值,语句会简化为 ''%%literal("foo")%%'',这也适用于获取参数的值,把 ''%%StringArgumentType.getString(ctx, "string")%%'' 简化为 ''%%getString(ctx, "string")%%''。这也适用于 Minecraft 自己的参数类型。
  
 以下是一些静态导入的例子。 以下是一些静态导入的例子。
Line 229: Line 229:
 ===== 子命令 ===== ===== 子命令 =====
  
-要添加子命令,你需要先照常注册注册第一个字面节点。+要添加子命令,你需要先照常注册第一个字面节点。
  
 <code> <code>
Line 294: Line 294:
 ===== 可以注册客户端命令吗? ===== ===== 可以注册客户端命令吗? =====
  
-Fabric 有个 ClientCommandManager,可以注册客户端命令。代码应该仅存在于客户端的代码中。例子:+Fabric API 有个 ''ClientCommandManager'',可以注册客户端命令。代码应该仅存在于客户端的代码中。例子:
  
 <code java> <code java>
Line 305: Line 305:
 </code> </code>
  
-如果你需要在客户端命令执行劳教中打开屏幕,不要直接调用 ''client.setScreen(...)'',你应该调用 ''%%client.execute(() -> client.setScreen(...))%%'',其中变量 ''client'' 可以通过 ''context.getSource().getClient()'' 获得。+如果你需要在客户端命令执行过程中打开屏幕,不要直接调用 ''client.setScreen(...)'',你应该调用 ''%%client.execute(() -> client.setScreen(...))%%'',其中变量 ''client'' 可以通过 ''context.getSource().getClient()'' 获得。
  
 ===== 可以运行时注册命令吗? ===== ===== 可以运行时注册命令吗? =====
zh_cn/tutorial/commands.1700359269.txt.gz · Last modified: 2023/11/19 02:01 by solidblock