👀 View#
#bs.view:help
Execute commands based on what an entity sees.
“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:<command>,with:{}}
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 originFunction macro:
arguments
run: command to run at the targeted block position
with: optional settings (see advanced usage below)
Example: 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:{}}
Advanced usage
This system is a simplified, specific use case of the #bs.raycast:run function. It internally relies on it, allowing you to read its output and providing the flexibility to alter its behavior by modifying its input. Learn more here
Avoid advancements
This function can be used with the placed_block advancement to detect block placement, but this is discouraged due to potential precision differences compared to Minecraft’s native detection. Additionally, rapid mouse movements within the same tick may cause the wrong block to be targeted.
Credits: Aksiome
Aimed entity#
- #bs.view:as_aimed_entity {run:<command>,with:{}}
Run a command as the entity that is aimed by the current entity.
- Inputs:
Execution
as <entities>: entity whose eyes determine the vision originFunction macro:
arguments
run: command to run as the targeted entity
with: optional settings (see advanced usage below)
Example: run a command as the entity you are looking at
# 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:{}}
Run a command at the entity that is aimed by the current entity.
- Inputs:
Execution
as <entities>: entity whose eyes determine the vision originFunction macro:
arguments
run: command to run at the targeted entity
with: optional settings (see advanced usage below)
Example: run a command at the entity 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:{}}
Advanced usage
This system is a simplified, specific use case of the #bs.raycast:run function. It internally relies on it, allowing you to read its output and providing the flexibility to alter its behavior by modifying its input. Learn more here
Performance tip
In Minecraft, predicates can check if a player is looking at an entity. If you only need a simple player-specific check, you should consider using the looked entity functions.
Credits: Aksiome
Aimed point#
- #bs.view:at_aimed_point {run:<command>,with:{}}
Run a command at the point that was hit by a raycast.
- Inputs:
Execution
as <entities>: entity whose eyes determine the vision originFunction macro:
arguments
run: command to run at the hit point
with: optional settings (see advanced usage below)
Example: 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:{}}
Advanced usage
This system is a simplified, specific use case of the #bs.raycast:run function. It internally relies on it, allowing you to read its output and providing the flexibility to alter its behavior by modifying its input. Learn more here
Credits: Aksiome
Block placement#
- #bs.view:at_block_placement {run:<command>,with:{}}
Run a command at the precise coordinates where a block would align if placed, considering the collision block and its normal.
- Inputs:
Execution
as <entities>: entity whose eyes determine the vision originFunction macro:
arguments
run: command to run at the block placement position
with: optional settings (see advanced usage below)
Example: set a block as if the player was placing it
# Once (will run if you are targeting a block)
function #bs.view:at_block_placement {run:"setblock ~ ~ ~ minecraft:sponge",with:{}}
Advanced usage
This system is a simplified, specific use case of the #bs.raycast:run function. It internally relies on it, allowing you to read its output and providing the flexibility to alter its behavior by modifying its input. Learn more here
Credits: Aksiome
Can see “as to at”#
- #bs.view:can_see_ata {with:{}}
Determine if an entity, from its current position, can have an unobstructed view to the execution position.
- Inputs:
Execution
as <entities>: entities to checkExecution
at <entity>orpositioned <x> <y> <z>: position to check for visibilityFunction macro:
arguments
with: optional settings (see advanced usage below)
- Outputs:
Return: whether the check is successful (1 or 0)
Example: see if the nearest entity is able to see you
# 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...
Advanced usage
This system is a simplified, specific use case of the #bs.raycast:run function. It internally relies on it, allowing you to read its output and providing the flexibility to alter its behavior by modifying its input. Learn more here
Credits: Aksiome, Leirof
In view “as to at”#
- #bs.view:in_view_ata {angle:<value>}
Determine if an entity has a specific position within its field of view, which is represented as a cone originating from the entity’s eye.
- Inputs:
Execution
as <entities>: entities whose field of view is being checkedExecution
at <entity>orpositioned <x> <y> <z>: position to check if within the field of view coneFunction macro:
arguments
angle: angle of the field of view cone, based on world coordinates (not the fov option)
- Outputs:
Return: whether the check is successful (1 or 0)
Example: 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:<command>}
Run a command as the entity a player is looking at.
- Inputs:
Execution
as <players>: player whose eyes determine the vision originFunction macro:
arguments
run: 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
Example: 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:<command>}
Run a command at the entity a player is looking at.
- Inputs:
Execution
as <players>: player whose eyes determine the vision originFunction macro:
arguments
run: 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
Example: 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
💬 Did it help you?
Feel free to leave your questions and feedbacks below!