👀 视线(View)#

#bs.view:help

Execute commands based on what an entity is looking at.

../../_images/view.png

“愿景是看到事物可能的样子,而不是现在的样子。”

—格雷琴·鲁宾(Gretchen Rubin)


🔧 函数#

你可以在下方找到此模块中的所有可用函数。


瞄准的方块#

#bs.view:at_aimed_block {run:<command>,with:{}}

在实体瞄准的方块处执行命令,并自动对齐坐标(align xyz)。

输入:

执行 as <entities>:以该实体的眼睛为视线起点。

函数宏

  • 参数

    • run:在目标方块位置执行的命令。

    • with:可选设置(参见下方的高级用法)。

示例:更改你正在注视的方块。

# Once (will run if you are targeting a block)
function #bs.view:at_aimed_block {run:"setblock ~ ~ ~ minecraft:sponge",with:{}}
高级用法

该系统是 #bs.raycast:run 函数的简化特定用例。它内部依赖于该函数,允许你读取其输出,并通过修改其输入来灵活地改变其行为。详见此处

不建议使用进度检测

此函数可以placed_block 进度一起使用来检测方块放置,但由于与 Minecraft 原生检测相比可能存在精度差异,不推荐这样做。此外,同一游戏刻内快速移动鼠标可能导致瞄准错误的方块。

贡献者:Aksiome


瞄准的实体#

#bs.view:as_aimed_entity {run:<command>,with:{}}

以当前实体瞄准的实体为执行者执行指令。

输入:

执行 as <entities>:以该实体的眼睛为视线起点。

函数宏

  • 参数

    • run:以目标实体身份运行的命令。

    • with:可选设置(参见下方的高级用法)。

示例:以你注视的实体身份执行命令。

# Once (will run if you are targeting an entity)
function #bs.view:as_aimed_entity {run:"say I am sorry, are you hitting on me?",with:{}}
#bs.view:at_aimed_entity {run:<command>,with:{}}

以当前实体瞄准的实体为执行位置执行指令。

输入:

执行 as <entities>:以该实体的眼睛为视线起点。

函数宏

  • 参数

    • run:在目标实体处运行的命令。

    • with:可选设置(参见下方的高级用法)。

示例:在你注视的实体位置执行命令。

# Once (will run if you are targeting an entity)
function #bs.view:at_aimed_entity {run:"particle minecraft:heart ~ ~2 ~ 0 0 0 0 1",with:{}}
高级用法

该系统是 #bs.raycast:run 函数的简化特定用例。它内部依赖于该函数,允许你读取其输出,并通过修改其输入来灵活地改变其行为。详见此处

性能提示

在 Minecraft 中,谓词可以检测玩家是否正在注视某个实体。如果只需要简单的玩家特定检查,建议使用 被注视的实体 函数。

贡献者:Aksiome


瞄准点#

#bs.view:at_aimed_point {run:<command>,with:{}}

在射线命中的终点处执行命令。

输入:

执行 as <entities>:以该实体的眼睛为视线起点。

函数宏

  • 参数

    • run:在命中点执行的命令。

    • with:可选设置(参见下方的高级用法)。

示例:在你瞄准的位置执行命令。

# Once (will run if you are aiming at a solid block or entity)
function #bs.view:at_aimed_point {run:"particle minecraft:flame ~ ~ ~ 0 0 0 0 1 force",with:{}}
高级用法

该系统是 #bs.raycast:run 函数的简化特定用例。它内部依赖于该函数,允许你读取其输出,并通过修改其输入来灵活地改变其行为。详见此处

贡献者:Aksiome


方块放置位置#

#bs.view:at_block_placement {run:<command>,with:{}}

根据方块的碰撞箱和其法线方向,精确地得到放置方块的位置,并对齐坐标(align xyz),执行命令。

输入:

执行 as <entities>:以该实体的眼睛为视线起点。

函数宏

  • 参数

    • run:在方块放置位置执行的命令。

    • with:可选设置(参见下方的高级用法)。

示例:在玩家将要放置方块的位置设置方块。

# Once (will run if you are targeting a block)
function #bs.view:at_block_placement {run:"setblock ~ ~ ~ minecraft:sponge",with:{}}
高级用法

该系统是 #bs.raycast:run 函数的简化特定用例。它内部依赖于该函数,允许你读取其输出,并通过修改其输入来灵活地改变其行为。详见此处

贡献者:Aksiome


视线是否畅通(as → at)#

#bs.view:can_see_ata {with:{}}

验证从实体当前位置到执行位置之间能否被视线穿过。

输入:

执行 as <entities>:要检查的实体

执行 at <entity>positioned <x> <y> <z>:要检查的目标位置。

函数宏

  • 参数

    • with:可选设置(参见下方的高级用法)。

输出:

返回值:检查是否成功(1 或 0)。

示例:查看最近的实体是否能看见你。

# Once

execute at @s as @e[distance=0.1..,sort=nearest,limit=1] store result score #result bs.data run function #bs.view:can_see_ata {with:{}}
execute if score #result bs.data matches 1 run say You're not hiding very well...
高级用法

该系统是 #bs.raycast:run 函数的简化特定用例。它内部依赖于该函数,允许你读取其输出,并通过修改其输入来灵活地改变其行为。详见此处

贡献者:Aksiome、Leirof


是否位于视野内(as → at)#

#bs.view:in_view_ata {angle:<value>}

判断某个位置是否在实体的视野范围(从实体眼睛发出的锥体)内。

输入:

执行 as <entities>:正在检查其视野的实体

执行 at <entity>positioned <x> <y> <z>:用于判断目标是否位于视野锥内的位置。

函数宏

  • 参数

    • angle:表示视野的角度。这是圆锥开口的角度,基于世界坐标计算,而非 fov 选项。

输出:

返回值:检查是否成功(1 或 0)。

示例:检查坐标 0 5 0 是否在你的视野内。

# Once
execute as @s positioned 0 5 0 run function #bs.view:in_view_ata {angle:90}

贡献者:Aksiome、Leirof


注视的实体#

#bs.view:as_looked_entity {run:<command>}

以玩家正在看着的实体为执行者执行命令。

输入:

执行 as <players>:以该玩家的眼睛作为视线原点。

函数宏

  • 参数

    • run:以被注视实体身份执行的命令。

标签 bs.view.is_lookable:必须添加到可被注视的实体上的标签。

示例:让玩家正注视的盔甲架发光。

# Once
tag @e[type=minecraft:armor_stand] add bs.view.is_lookable
function #bs.view:as_looked_entity {run:"effect give @s minecraft:glowing 1 0 true"}
#bs.view:at_looked_entity {run:<command>}

在玩家正在看着的实体处执行命令。

输入:

执行 as <players>:以该玩家的眼睛作为视线原点。

函数宏

  • 参数

    • run:在注视实体处执行的命令。

标签 bs.view.is_lookable:必须添加到可被注视的实体上的标签。

示例:在玩家注视的盔甲架处生成粒子。

# Once
tag @e[type=minecraft:armor_stand] add bs.view.is_lookable
function #bs.view:at_looked_entity {run:"particle minecraft:crit ~ ~2 ~ 0 0 0 0 1"}

技术限制

由于此函数依赖于特定于玩家的谓词,它专门为玩家设计。此外,为了优化性能,同时只允许最多255个实体拥有 bs.view.is_lookable 标签。

贡献者:Aksiome


🏷️ 标签#

以下为此模块中所有可用的标签。


视线可穿透#

#bs.view:can_see_through

确定方块能否被视线穿透。

贡献者:Aksiome


💬 这对你有帮助吗?

欢迎在下方留下你的问题和反馈!