前言
在数据包中,常常会遇到需要探测视线所指的实体。然而使用谓词 looking_at 来判定只能判断玩家看到了什么实体,却无法标记玩家看到的实体。
那么怎样才能变得更强呢?那就只有穷举啦!
数据包说明
玩家正在注视的实体的 UUID 会被记录到玩家的记分板 weaila0~weaila3 这四个记分板上,而实体的 UUID 会被记录到其自身的
weaila_uuid0~weaila_uuid3。
记分板上。由此可以容易判断出哪个实体时玩家所指的实体。
该数据包自带高亮玩家所指的实体,并在快捷栏显示该实体的 UUID。因此数据包作者请修改标签
#weaila:action, 并覆盖原有内容。
代码示例
/scoreboard players operation #t weaila_uuid0 = @s weaila0
/scoreboard players operation #t weaila_uuid1 = @s weaila1
/scoreboard players operation #t weaila_uuid2 = @s weaila2
/scoreboard players operation #t weaila_uuid3 = @s weaila3
/execute as @e if score @s weaila_uuid0 = #t weaila_uuid0 if score @s weaila_uuid1 = #t weaila_uuid1 if score @s weaila_uuid2 = #t weaila_uuid2 if score @s weaila_uuid3 = #t weaila_uuid3 run effect give @s glowing 1 0 true
原理
将每个实体的 UUID 的每个比特都对应一个标签,然后通过进度来判断玩家注视的实体是否有这些标签,有的话就给玩家加上相应分数。每刻结尾重置分数。
使用方式
下载后,将文件放入存档 datapacks 文件夹即可。