欢迎来到我的世界玩家社区Wiki!如需参与编辑,请每一位编辑者务必仔细阅读Wiki方针
全站通知:

载具引擎(VVE)/mc载具

阅读

    

2022-08-13更新

    

最新编辑:HangBack

阅读:

  

更新日期:2022-08-13

  

最新编辑:HangBack

来自我的世界玩家社区WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
HangBack
原版-书与笔.png
本页面内容并不完整,可能有错误或者遗漏的地方
我的世界玩家社区WIKI 欢迎您帮助我们完善这个页面

介绍

vve对mc中的载具进行了自己的定义。一辆载具通过vehicles:_spawn函数解析数据模板生成。

构成
  玩家 根实体 cube 引导文本
数量 <VOLUME> 1 <VOLUME> 1

构成的概念

玩家

正在骑乘载具的玩家vehicle_state分数为1。玩家坐上载具的一瞬间,如果该载具拥有快捷栏UI,玩家快捷栏原本的物品

会被转移到背包其它位置(背包充足时),或以掉落物形式掉落(背包已满时)。玩家可以向载具根实体发送<控制信号>。

根实体

整辆载具的代表实体。其Pos即为载具的坐标,Rotation即为载具的朝向,roll记分板

分数即为载具的横滚角

根实体的记分板-载具的速度
记分项 rotation_u rotation_v rotation_w
描述
速度方向的水平角度 速度方向的竖直角 速度大小
根实体的记分板-载具的角速度
记分项 vehicle_vr0 vehicle_vr1 vehicle_sp
描述
速度方向的水平角度 速度方向的竖直角 速度大小

载具的众多属性数据也以记分板或nbt的形式储存在根实体上,原理请参考vehicles:spawn/set函数。

刚生成的载具根实体可以使用[tag=vehicle_nsp]选中。生成2tick以后的载具可以使用[tag=vehicle]来选中其根实体。正在被骑乘的载具的根实体vehicle_state分数大于等于1

cube

实现载具效果的部件,由两个实体构成:uaec实体功能实体

uaec实体Pos即为cube的坐标,以局部坐标的形式储存在uaec实体vehicle_uvehicle_vvehicle_w记分板上。 对于一般cube,其朝向和横滚角与根实体同步。 对于可转动cube,其朝向以局部视角坐标的形式储存在功能实体vehicle_r0vehicle_r1记分板上,其横滚角储存在功能实体roll记分板上。 cube的uaec实体可以使用[tag=vehicle_cube]来选中。cube的功能实体可以使用[tag=vehicle_dsp]来选中。

引导文本

引导文本是载具在静止状态下,在座椅上生成的实体,用以显示文本,提示玩家右键进入载具。可以使用[tag=vehicle_lead]来选中引导文本

标签vehicle_entity

可以使用[tag=vehicle_entity]来选中所有与载具相关的实体(根实体uaec实体功能实体引导文本)。

标签result

用于指代刚被生成的一辆载具的根实体
#20220001*&&&&*
示例
#导入示例载具模板库(只需执行一次)
function vehicles:_class
#生成载具
data modify storage math:io input set from storage math:class vehicles[{id:"first_car"}]
function vehicles:_spawn
execute at @e[tag=result,limit=1] run setblock ~ ~2 ~ diamond_block

这个例子可以生成一辆示例车,并在其头顶放置一块钻石块。

上级实体与附属实体

上级实体与附属实体是一种实体间的关系。上级实体拥有唯一确定的vehicle_id分数,与它的附属实体的int分数相同(附属实体可以有多个)。玩家骑乘载具时,载具根实体是玩家的附属实体。载具所有cubeuaec实体功能实体都是载具根实体的附属实体。引导文本是载具根实体的附属实体。
#20220002*&&&&*
示例 1
#以载具根实体为执行者
scoreboard players operation temp int = @s vehicle_id
execute as @e[tag=vehicle_dsp] if score @s int = temp int run tag @s add tmp
kill @e[tag=tmp,limit=1,sort=random]
tag @e remove tmp

这个例子可以随机清除该载具的一个功能实体
#20220003*&&&&*
示例 2
#以骑乘载具的玩家为执行者
scoreboard players operation temp int = @s vehicle_id
execute as @e[tag=vehicle] if score @s int = temp int run tag @s add tmp
execute positioned 85 93 45 as @e[tag=tmp,limit=1] rotated as @s run function vehicles:_tp
tag @e remove tmp

这个例子可以将玩家骑乘的载具传送到坐标85 93 45的位置,并保持朝向不变。

配对实体

配对实体是另外一种实体间的关系。一对配对实体拥有相同的且唯一确定的vehicle_cpid分数。同属于一个cube的uaec实体功能实体是配对实体关系。
#20220004*&&&&*
示例 1
#以uaec为执行者
scoreboard players operation temp int = @s vehicle_cpid
execute as @e[tag=vehicle] if score @s int = temp int run tag @s add tmp
kill @e[tag=tmp,limit=1]
tag @e remove tmp

这个例子可以清除改uaec实体所在cube的功能实体
#20220005*&&&&*
示例 2
#以uaec为执行者
scoreboard players operation temp int = @s vehicle_cpid
execute as @e[tag=vehicle] if score @s int = temp int run tag @s add tmp
kill @e[tag=tmp,limit=1]
tag @e remove tmp

这个例子可以清除玩家骑乘载具的propeller[1]