⚠️ You are reading a doc of an undergoing development version. Information can be out of date and/or change at any time. ⚠️

👀 View#

#bs.view:help

Execute commands based on what an entity sees.

../_images/view.png

“Vision is the act of seeing things as they could be, not as they are.”

—Gretchen Rubin


🔧 Functions#

You can find below all functions available in this module.


Aimed block#

#bs.view:at_aimed_block

Run a command at the aligned coordinates of the block an entity is aiming at.

Inputs:

Execution as <entities>: Entity whose eyes determine the vision origin.

Macro Var run [string]: Command to run at the targeted block position.

Macro Var with [compound]: Optional settings (see advanced usage below).

Change the block you are looking at:

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

Credits: Aksiome


Aimed entity#

#bs.view:as_aimed_entity

Run a command as the entity that is aimed by the current entity.

Inputs:

Execution as <entities>: Entity whose eyes determine the vision origin.

Macro Var run [string]: Command to run as the targeted entity.

Macro Var with [compound]: Optional settings (see advanced usage below).

Run a command as the entity that you are looking at:

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

Run a command at the entity that is aimed by the current entity.

Inputs:

Execution as <entities>: Entity whose eyes determine the vision origin.

Macro Var run [string]: Command to run at the targeted entity.

Macro Var with [compound]: Optional settings (see advanced usage below).

Run a command at the entity that you are looking at:

# 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:{}}

Performance tip

In Minecraft, predicates can check if a player is looking at an entity. If you only need a simple player specific check without the additional functionalities of the raycast, you should consider using the Looked entity functions.

Credits: Aksiome


Aimed point#

#bs.view:at_aimed_point

Run a command at the point that was hit by the raycast.

Inputs:

Execution as <entities>: Entity whose eyes determine the vision origin.

Macro Var run [string]: Command to run at the hit point.

Macro Var with [compound]: Optional settings (see advanced usage below).

Run a command at the point you are looking at:

# 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:{}}

Credits: Aksiome


Can see “as to at”#

#bs.view:can_see_ata

Determine if an entity, from its current position, can have an unobstructed view to the execution position.

Inputs:

Execution as <entities>: Entities that are being checked.

Execution at <entity> or positioned <x> <y> <z>: Position you want to check for visibility.

Macro Var with [compound]: Optional settings (see advanced usage below).

Outputs:

Return: Whether the check is a success or a failure (1 or 0).

See if the nearest entity is able to see you:

# Once

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

Credits: Aksiome, Leirof


In view “as to at”#

#bs.view:in_view_ata

Determine if an entity has the execution position in its view angle.

Inputs:

Execution as <entities>: Entities that are being checked.

Execution at <entity> or positioned <x> <y> <z>: Position you want to check if it’s within the field of view.

Macro Var angle [number]: Angle that represents the field of view (based on the world and not the fov option).

Check whether the position 0 5 0 is in your field of view::

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

Credits: Aksiome, Leirof


Looked entity#

#bs.view:as_looked_entity

Run a command as the entity a player is looking at.

Inputs:

Execution as <players>: Player whose eyes determine the vision origin.

Macro Var run [string]: Command to run as the looked at entity.

Tag bs.view.is_lookable: Tag that must be added to entities that can be looked at.

Make the armor_stand the player is looking at glow:

# 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 a command at the entity a player is looking at.

Inputs:

Execution as <players>: Player whose eyes determine the vision origin.

Macro Var run [string]: Command to run at the looked at entity.

Tag bs.view.is_lookable: Tag that must be added to entities that can be looked at.

Summon particles at the armor_stand the player is looking at:

# 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"}

Technical limitations

As this function relies on a player specific predicate, it is exclusively designed for players. Additionally, to optimize performance, only a maximum of 255 entities are allowed to have the bs.view.is_lookable tag simultaneously.

Credits: Aksiome


Placed block#

#bs.view:at_placed_block

Run a command at the aligned coordinates of the block to be placed.

Inputs:

Execution as <entities>: Entity whose eyes determine the vision origin.

Macro Var run [string]: Command to run before the targeted block position.

Set a block as if the player was placing it:

# Once (will run if you are targeting a block)
function #bs.view:at_placed_block {run:"setblock ~ ~ ~ minecraft:sponge"}

Avoid the advancement

This function simulates block placement but is discouraged for use with the placed_block advancement due to potential differences in precision compared to Minecraft. Rapid mouse movements during the same tick may also result in the wrong block being targeted.

Credits: Aksiome


💬 Did it help you?

Feel free to leave your questions and feedbacks below!