
命令和可交互对象
为服务器管理员添加新命令和可交互对象,让他们能用更少的代码让服务器熠熠生辉。添加执行命令的方块和实用命令以支持服务器管理员。
查看大图指令与互动块
为服务器管理员新增指令和互动方块,只需更少代码即可让服务器大放异彩。新增可运行指令的方块(指令方块)及辅助指令,全力支援服务器管理员。
辅助性指令:附带方向的增强粒子指令、实体动画播放指令、可组合的执行指令,以及更多功能。
快速入门
使用此插件的玩家必须拥有 OP 权限或持有 interactables:command-admin 权限。
给自己一个交互方块:/give <你的名字> Interactive_Block。放置后,对着方块使用 /int:ib 打开编辑器。(/ib 作为别名仍然有效。)
功能特性
交互方块
交互方块在触发时运行一条或多条指令。对着方块使用 /int:ib 打开编辑器。编辑器有两个标签页——触发条件(方块如何被激活)和 指令(运行什么内容)。切换标签页时,每个标签页的更改会保留,点击保存时所有更改会一并保存。
指令之间用分号(;)分隔。最后一条指令的输出会被存储并在编辑器中显示,便于调试。
触发类型
- 玩家交互 (默认) — 当玩家在方块上按下 [F] 键时触发。
- 重复执行 — 按计时器触发。设置间隔秒数(最小 0.1 秒)。
- 玩家加入世界 — 当任意玩家完全加载进入世界时触发。使用
$p来指定该玩家。 - 玩家死亡 — 当任意玩家死亡时触发。使用
$p来指定死亡的玩家。 - 方块破坏 — 当任意方块被破坏时触发。可设置半径,仅在该距离内触发(0 = 任意距离)。使用
$b.x/y/z和$b.id获取被破坏方块的信息。 - 方块放置 — 当玩家放置方块时触发。半径选项与方块破坏相同。使用
$b.x/y/z和$b.id获取放置方块的信息。 - 合成 — 当玩家完成一次合成后触发。使用
$recipe.id和$recipe.qty获取合成配方信息。
令牌变量
在指令字符串中使用这些变量来引用触发事件的上下文:
$p— 触发玩家的名称$p.x、$p.y、$p.z— 触发玩家的世界坐标$p.xi、$p.yi、$p.zi— 触发玩家的整数坐标(向下取整)$self.x、$self.y、$self.z— 指令方块自身的位置(始终可用)$self.xi、$self.yi、$self.zi— 指令方块的整数坐标(向下取整)$b.x、$b.y、$b.z— 事件方块的位置 (on_block_break, on_block_place)$b.xi、$b.yi、$b.zi— 事件方块的整数坐标 (on_block_break, on_block_place)$b.id— 事件方块或物品的类型 ID,例如Soil_Dirt(on_block_break, on_block_place)$recipe.id— 合成配方 ID (仅限 on_craft)$recipe.qty— 合成数量 (仅限 on_craft)
xi/yi/zi 这些变体对于需要方块坐标的指令非常有用,例如 /setblock $p.xi $p.yi $p.zi。
on_player_join 示例:
/give $p Rock_Gem_Voidstone --quantity=1; say Welcome, $p!
on_block_break 示例:
say $p broke $b.id at $b.x $b.y $b.z
on_craft 示例:
int:exec check @s(flag=quest_active); say $p crafted $recipe.qty x $recipe.id
指令
/int:ib— 打开交互方块编辑器(需先看向一个方块)/int:exec— 执行指令,支持实体选择器展开或 foreach 循环/int:check— 如果选择器匹配(或不匹配)实体,则中止指令链/int:flag [add, remove, list]— 在实体上添加、移除或列出字符串标记,用于过滤/int:tp— 将实体传送至坐标或另一实体处/int:entityanim— 在实体上播放或停止动画/int:particle— 在指定位置或实体处生成粒子效果,可附带偏移和方向
所有指令都保留了旧名称作为别名(/ib、/exec、/check、/flag、/entityanim、/xparticle),因此已有的指令方块可以继续工作。
/int:exec
展开实体选择器并执行任意指令。对于让原版指令配合 @e、@a 等使用,以及使用 foreach 遍历实体非常有用。
/int:exec say @a
> 展开 @a 为所有玩家名称,并全部说出
/int:exec give @p Rock_Gem_Voidstone --quantity=1
> 给予最近的玩家一个物品
/int:exec foreach @e(radius=200,type=NPC) say hi @s
> 对每个匹配的 NPC 执行一次 "say hi <uuid>"
/int:exec foreach @s int:entityanim @s Walk
> 对自身播放 Walk 动画
/int:exec int:flag list @l
> 列出你正在看的实体上的标记
/int:exec int:flag add hostile @l(radius=20)
> 将你视线中的目标(最远 20 格)标记为 hostile
Foreach 语法: /int:exec foreach <选择器> <指令>
对每个匹配的实体执行一次该指令。在指令内部,@s 指代循环中的当前实体。
注意:可选参数(例如 --quantity=1)在使用 exec 时必须用引号括起来:"--quantity=1"
/int:check
检查选择器是否匹配实体。如果条件不满足,则中止指令链的其余部分。非常适合根据条件来限制指令的执行。
默认情况下,如果选择器匹配到 0 个实体则中止。在选择器前加上 ! 可反转逻辑——如果匹配到 任意 实体则中止。
注意:要使用实体选择器(@s、@p、@a 等),请通过 exec 运行 check:/int:exec check @s(flag=hasKey)。如果直接使用,/int:check 不会展开选择器。
/int:exec check @s(flag=hasKey)
> 如果触发玩家没有 "hasKey" 标记则中止
/int:exec check @e(radius=10,type=NPC,limit=1)
> 如果 10 格内没有 NPC 则中止
/int:exec check !@s(flag=cooldown)
> 如果玩家已有 "cooldown" 标记则中止
指令链示例:
int:exec check @s(flag=hasKey); give @s Reward_Item 1; int:flag remove hasKey @s只有在玩家拥有 "hasKey" 时,才给予奖励并移除标记。
冷却示例:
int:exec check !@s(flag=cooldown); doSomething; int:flag add cooldown @s只有在玩家没有冷却标记时才执行,然后添加该标记。
/int:flag
为实体附加简单的字符串标记。标记会持久存在于实体上,并可用于过滤实体查询。
/int:flag add <名称> <目标...>— 为一个或多个实体添加标记/int:flag remove <名称> <目标...>— 从一个或多个实体移除标记/int:flag list <目标...>— 列出一个或多个实体上的标记
目标是实体标识符:PlayerName、Entity#123 或 UUID。先使用 /int:exec foreach 展开选择器。
/int:exec foreach @e(radius=20,type=NPC) int:flag add hostile @s将所有附近的 NPC 标记为 "hostile"
int:check @s(flag=hasKey); say This runs only if the player has the "hasKey" flag
/int:entityanim
在目标实体上播放或停止动画。
语法: /int:entityanim <目标> <动画> [槽位]
目标: PlayerName、Entity#123 或 UUID 字符串。在指令方块中,使用 $p 来指定触发玩家。从命令行中,使用 /int:exec foreach @s int:entityanim @s <动画> 来指定自己。
动画:
- 任意动画名称(例如
Walk、Hurt、Sleep) random或*— 从实体的模型中选择一个随机动画stop或cancel— 停止指定槽位中的动画
槽位 (可选,默认为 action):movement、status、action、face、emote
/int:entityanim Steve Walk/int:exec foreach @s int:entityanim @s random emote/int:entityanim Steve stop action

/int:particle
在指定位置或实体上生成粒子效果。支持偏移和方向旋转。
语法: /int:particle <粒子类型> [--target=?] [--x=?] [--y=?] [--z=?] [--dx=?] [--dy=?] [--dz=?] [--duration=?] [--direction=?]
位置:
--target—PlayerName、Entity#123或 UUID。基础位置是该实体的位置。在指令方块中,使用--target=$p在触发玩家处生成。--x/y/z— 绝对世界坐标。如果同时设置了--target,这些值会覆盖对应的坐标轴。- 不带位置参数 — 默认为世界原点(0, 0, 0)。
偏移量 (可选):
--dx、--dy、--dz— 在基础位置上应用的偏移量。
其他:
--duration— 生成器运行的时间,单位为秒 (默认值:1.0)--direction— 旋转生成器方向:up、down、north、south、east、west
/int:particle IceBall_Explosion "--target=$p"在触发玩家处生成(指令方块上下文)
/int:particle IceBall_Explosion "--target=$p" --dy=1.5在玩家上方 1.5 格处生成
/int:particle IceBall_Explosion --x=10 --y=64 --z=20 --duration=3绝对位置,持续 3 秒
/int:particle IceBall_Explosion "--target=$p" --direction=up方向朝上(适用于定向效果)
/int:tp
将单个实体传送至世界坐标或另一个实体处。与 /int:exec foreach 配合使用可实现多实体传送。
语法:
/int:tp <目标> <x> <y> <z> [--yaw=?] [--pitch=?]— 传送至坐标(~用于相对坐标)/int:tp <目标> <目标位置>— 传送至另一实体的位置
目标: PlayerName、Entity#123 或 UUID。
/int:tp Steve 100 64 200将 Steve 传送到绝对坐标
/int:tp Steve ~ ~10 ~将 Steve 垂直向上传送 10 格
/int:tp Steve Alex将 Steve 传送到 Alex 的位置
/int:exec foreach @a int:tp @s 0 100 0将所有玩家传送至 0,100,0
实体查询
你可能已经熟悉其他游戏中的类似系统,但它提供了一种基于条件来指定玩家和 NPC 的方法,而不是直接指定它们。支持 /int:exec、/int:check、/int:flag 以及在交互方块指令内部使用。
/int:exec say @p
> 说出最近玩家的名字
/int:exec say @a
> 说出所有玩家的名字
/int:exec say @e(radius=5)
> 说出 5 格内所有实体的名字/UUID
/int:exec foreach @e(radius=200,type=NPC) say hi @s
> 对每个匹配的 NPC 执行一次 "say hi <uuid>"
选择器
@s— 自身(执行指令的实体)@p— 最近玩家@a— 所有玩家@r— 随机玩家@e— 所有实体(需要半径过滤器,否则默认为 0 格)@l— 你正在看的实体;@l(radius=N)延长作用范围 (默认 8 格)
选择器过滤器
radius— 仅限 X 格内的实体。如果包含其他过滤器则必须启用;默认为 0 格。limit— 将结果限制为 X 个实体sort—nearest、random或idtype— 按实体类型过滤:player、npcmodel— 按模型 ID 过滤memory— 按记忆组过滤(例如kweebec、trork)tag— 仅包含具有特定标记的实体(参见/int:flag)shape— 查询形状:sphere、tube或box(默认值:tube)height— 圆柱体/长方体查询的高度 (默认值:与半径相同)
下一阶段计划功能
- 更多触发类型
- exec 指令的更新,支持在特定位置、方向或实体处执行
- 其他改进指令
正在加载版本记录…





正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。