🔗 链接(Link)#
#bs.link:help
通过链接实体的位置和旋转方向来构建相连的实体结构。
“看不见的线是最强的纽带。”
—弗里德里希·尼采
重要
此模块使用了缩放的整数,当坐标值高于 2,000,000 时可能会溢出。
🔧 函数#
你可以在下方找到此模块中的所有可用函数。
创建链接#
- #bs.link:create_link_ata
在执行函数的实体和最接近执行位置的实体之间创建链接。
- 输入:
执行
as <实体>: 你想要链接到父实体的子实体。执行
at <实体>或positioned <x> <y> <z>: 使用最近的实体作为父实体。- 输出:
分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。分数
@s bs.link.l[x,y,z,h,v]: 相对于父实体的局部位置和旋转。分数
@s bs.link.to: 链接到的父实体的 ID。
示例:将盔甲架链接到最近的羊:
# Once
execute as @e[type=armor_stand] at @e[type=sheep,limit=1,sort=nearest] run function #bs.link:create_link_ata
重要
你通常应该避免修改输出分数,因为它们作为其他链接函数的参数。因此,建议仅让 Bookshelf 来处理它们。
制作人员:Aksiome、Leirof
模仿行为#
- #bs.link:imitate_pos_and_rot
将实体放置在关联的位置和局部旋转处。在循环中重复此操作可模拟父实体的移动和旋转。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。分数
@s bs.link.l[h,v]:相对于父实体的局部旋转。- 输出:
状态:移动实体以保持其相对于父实体的相对位置和局部旋转。
示例:让盔甲架模仿你的移动:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_pos_and_rot
- #bs.link:imitate_pos
将实体放置在相关联的位置处。在循环中重复此操作可模拟父实体的移动。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。- 输出:
状态:移动实体以保持其相对于父实体的相对位置。
示例:让盔甲架模仿你的移动:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_pos
- #bs.link:imitate_rot
将实体放置在其局部旋转处。在循环中重复此操作可模拟父实体的旋转。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.l[h,v]:相对于父实体的局部旋转。- 输出:
状态:移动实体以保持其相对于父实体的局部旋转。
示例:让盔甲架模仿你的移动:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_rot
- #bs.link:imitate_pos_[x|y|z]
将实体放置在相关联的位置的某轴处。在循环中重复此操作可模拟父实体在单个轴上的移动。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x|y|z]:相对于父实体的位置。- 输出:
状态:移动实体以保持其在单个轴上相对于父实体的相对位置。
示例:让盔甲架模仿你的移动:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_pos_x
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_pos_y
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_pos_z
- #bs.link:imitate_rot_[h|v]
将实体放置在其水平或垂直局部旋转处。在循环中重复此操作可模拟父实体在单个旋转轴上的旋转。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.l[h|v]:相对于父实体的局部旋转。- 输出:
状态:移动实体以保持其在单个旋转轴上相对于父实体的局部旋转。
示例:让盔甲架模仿你的移动:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_rot_h
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:imitate_rot_v
重要
虽然链接的行为函数可以叠加使用,但不建议这样做,因为这涉及重复获取坐标、执行计算和应用它们。请考虑创建自定义行为。
制作人员:Aksiome、Leirof
保持局部坐标#
- #bs.link:keep_local_pos
保持相对于父实体的局部坐标。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.l[x,y,z]:相对于父实体的局部坐标。- 输出:
状态:移动实体以保持其相对于父实体的局部坐标。
示例:让盔甲架锁定到你的旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:keep_local_pos
What is a Local Position?
与相对坐标不同,此参考系考虑实体的旋转。因此,当父实体旋转时,子实体会围绕它旋转。对于熟悉 Minecraft 命令的人来说,可以通过 ^ 符号使用局部坐标。
制作人员:Aksiome、Leirof
镜像平面#
- #bs.link:mirror_[x|z]_plane
沿平面镜像实体的位置和旋转。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。分数
@s bs.link.l[h,v]:相对于父实体的局部旋转。- 输出:
状态:移动实体以使其镜像父实体的相对位置和旋转。
示例:让盔甲架沿平面镜像你的位置和旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:mirror_x_plane
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:mirror_z_plane
制作人员:Aksiome
镜像点#
- #bs.link:mirror_point_ata
围绕给定点镜像实体的位置和旋转。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。执行
at <实体>或positioned <x> <y> <z>:实体被镜像的点的位置。- 输出:
状态:移动实体以使其围绕给定点镜像父实体的位置和旋转。
示例:让盔甲架围绕 0 0 0 镜像你的位置和旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] positioned 0 0 0 run function #bs.link:mirror_point_ata
制作人员:Aksiome
关系#
- #bs.link:as_children {run:<command>}
以父实体的子实体为执行者执行命令。
- 输入:
执行
as <实体>:以父实体为执行者,该实体必须有有效子实体。- 输出:
返回值:如果执行者没有链接的子实体则失败。
示例:对所有盔甲架的子实体执行命令:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
function #bs.link:as_children {run:"say Hello World"}
- #bs.link:as_parent {run:<command>}
以子实体的父实体为执行者执行命令。
- 输入:
执行
as <实体>:以子实体为执行者,该实体必须有有效父实体。- 输出:
返回值:如果执行者没有链接的父实体则失败。
示例:对盔甲架的父实体执行命令:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
execute as @n[type=armor_stand] run function #bs.link:as_parent {run:"say Hello World"}
- #bs.link:at_children {run:<command>}
在父实体的子实体位置执行命令。
- 输入:
执行
as <实体>:以父实体为执行者,该实体必须有有效子实体。- 输出:
返回值:如果执行者没有链接的子实体则失败。
示例:在所有盔甲架子实体的位置执行命令:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
function #bs.link:at_children {run:"summon lightning_bolt"}
- #bs.link:at_parent {run:<command>}
在子实体的父实体位置执行命令。
- 输入:
执行
as <实体>:以子实体为执行者,该实体必须有有效父实体。- 输出:
返回值:如果执行者没有链接的父实体则失败。
示例:在盔甲架的父实体位置执行命令:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
execute as @n[type=armor_stand] run function #bs.link:at_parent {run:"summon lightning_bolt"}
制作人员:Aksiome
移除链接#
- #bs.link:remove_link
移除实体之间的现有链接。当在父实体上执行时,它会从链接中移除所有子实体。它不会重置实体的
bs.id。- 输入:
执行
as <实体>:你想要取消链接的子实体或父实体。- 输出:
分数
<子实体> bs.link.[...]:重置所有链接相关的分数。
示例:将最近的盔甲架与一只羊取消链接:
# Once
execute as @e[type=armor_stand] at @e[type=sheep,limit=1,sort=nearest] run function #bs.link:create_link_ata
execute as @n[type=armor_stand] run function #bs.link:remove_link
制作人员:Aksiome
反向行为#
- #bs.link:reverse_pos_and_rot
确定父实体的旋转和移动,并以相反方向重现它们。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。分数
@s bs.link.l[h,v]:相对于父实体的局部旋转。- 输出:
状态:实体以与父实体移动和旋转相反的方向移动和旋转。
示例:让盔甲架反转你的移动和旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_pos_and_rot
- #bs.link:reverse_pos
确定父实体的移动,并以相反方向重现它。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。- 输出:
状态:实体以与父实体移动相反的方向移动。
示例:让盔甲架做出与你移动相反的动作:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_pos
- #bs.link:reverse_rot
确定父实体执行的旋转,并以相反方向重现它。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.l[h,v]:相对于父实体的局部旋转。- 输出:
状态:实体以与父实体旋转相反的方向旋转。
示例:让盔甲架反转你的旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_rot
- #bs.link:reverse_pos_[x|y|z]
确定父实体沿单个轴的移动,并以相反方向重现它。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.r[x|y|z]:相对于父实体的位置。- 输出:
状态:实体沿单个轴以与父实体移动相反的方向移动。
示例:让盔甲架沿一个轴做出与你移动相反的动作:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_pos_x
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_pos_y
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_pos_z
- #bs.link:reverse_rot_[h|v]
确定父实体沿旋转轴执行的旋转,并以相反方向重现它。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。分数
@s bs.link.l[h|v]:相对于父实体的局部旋转。- 输出:
状态:实体以与父实体旋转相反的方向旋转。
示例:让盔甲架沿旋转轴反转你的旋转:
# Once
execute as @e[type=armor_stand] run function #bs.link:create_link_ata
# In a loop
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_rot_h
# Or
execute as @e[predicate=bs.link:has_link] run function #bs.link:reverse_rot_v
重要
虽然链接的行为函数可以叠加使用,但不建议这样做,因为这涉及重复获取坐标、执行计算和应用它们。请考虑创建自定义行为。
制作人员:Aksiome、Leirof
更新链接#
- #bs.link:update_link
更新表示实体与其父实体之间链接的分数。
- 输入:
执行
as <实体>:对实体执行,实体必须链接到另一个实体。- 输出:
分数
@s bs.link.r[x,y,z]: 相对于父实体的位置。分数
@s bs.link.l[x,y,z,h,v]: 相对于父实体的局部位置和旋转。
示例:更新盔甲架链接:
# Once
execute as @e[type=armor_stand,predicate=bs.link:has_link] run function #bs.link:update_link
重要
在使用其他函数时通常不需要调用此函数。但是如果你想移动子实体,以修改它和父实体的关系,则需要更新链接以确保更改生效。
制作人员:Aksiome、Leirof
👁️ 谓词#
你可以在下方找到此模块中的所有可用谓词。
有链接#
bs.link:has_link
判断实体是否有 bs.link.to 分数。
制作人员:Aksiome
链接相等#
- bs.link:link_equal
查找具有与输入值相同
bs.link.to的实体。- 输入:
分数
$link.to bs.in:要检查的值。
示例:查找具有 bs.link.to 等于 1 的实体:
scoreboard players set $link.to bs.in 1
execute as @n[predicate=bs.link:link_equal] run say I'm the one
制作人员:Aksiome
🎓 自定义行为#
此模块允许你组合多个行为来创建你自己优化的自定义行为。
要创建新行为,你首先需要创建一个新的函数标签。该标签必须以 #bs.link:behaviors/setup 开头并以 #bs.link:behaviors/apply 结尾。在这两个函数之间,你可以自由使用 #bs.link:behaviors 文件夹中提供的任何行为。
示例:这是 #bs.link:mirror_x_plane 在 bookshelf 中的实现方式:
{
"values": [
"#bs.link:behaviors/setup",
"#bs.link:behaviors/reverse_pos_x",
"#bs.link:behaviors/imitate_pos_y",
"#bs.link:behaviors/imitate_pos_z",
"#bs.link:behaviors/reverse_rot_h",
"#bs.link:behaviors/imitate_rot_v",
"#bs.link:behaviors/apply"
]
}
💬 这对你有帮助吗?
欢迎在下方留下你的问题和反馈!