载具引擎(VVE)/spec函数
阅读
2022-08-16更新
最新编辑:HangBack
阅读:
更新日期:2022-08-16
最新编辑:HangBack
介绍
spec函数是以NBT形式表示的,在spec系统中用于处理载具特殊行为的函数,其格式为:spec函数名:函数参数值
。有些spec函数只对特定类型的cube
生效。
注册并编写自定义spec函数
spec函数位于data/vehicles/functions/spec
下,spec函数的调用位于data/vehicles/functions/specs_check
下。
- 编写自定义spec函数,首先应确定该函数的操作对象。如果操作对象为
cube
的uaec
,请打开specs_check/spec_sloop
;如果操作对象为cube
的功能实体,请打开specs_check/spec_stmp
;如果操作对象为载具根实体,请打开specs_check/spec_tmp
。 - 确定自定义spec函数名,在上一步打开的mcfunction的首行添加以下命令:
execute if data storage math:io temp_list[0].$spec函数名$ run function vehicles:spec/$spec函数名$
- 在
data/vehicles/functions/spec
下创建$spec函数名$.mcfunction,并编写对应的spec功能。
自带spec函数列表
cmd
- 输入:[TAG_Int,TAG_Int]
- 限制:模型
cube
- 描述:让该
cube
的胡萝卜钓竿模型CustomModelData
在cmd[0]
到
之间递增变化。cmd[1]
- 示例:
{cube:"wheel",actions:[{cmd:[0,2]}]}
这个例子中,wheel
块的功能实体CustomModelData
随tick
依次为:0,1,2,0,1,2......
-cmd
- 输入:[TAG_Int,TAG_Int]
- 限制:模型
cube
- 描述:让该
cube
的胡萝卜钓竿模型CustomModelData
在-cmd[0]
到
之间递增变化。-cmd[1]
- 示例:
{cube:"wheel",actions:[{-cmd:[0,2]}]}
这个例子中,wheel
块的功能实体CustomModelData
随tick
依次为:2,1,0,2,1,0......
add_cmd
- 输入:TAG_Int
- 限制:模型
cube
- 描述:让该
cube
的胡萝卜钓竿模型CustomModelData
增加int
。 - 示例:
{cube:"wheel",actions:[{add_cmd:1}]}
这个例子中,wheel
块的功能实体CustomModelData
随tick
依次为:0,1,2,3,4,5......
set_cmd
- 输入:TAG_Int
- 限制:模型
cube
- 描述:让该
cube
的胡萝卜钓竿模型CustomModelData
变为int
。 - 示例:
{cube:"wheel",actions:[{set_cmd:2}]}
这个例子中,wheel
块的功能实体CustomModelData
随tick
依次为:2,2,2,2,2,2......
add_phi
- 输入:TAG_Double
- 限制:可转动模型
cube
- 描述:让该
cube
绕轴旋转double
。 - 示例:
{cube:"propeller",actions:[{add_phi:25.0d}]}
这个例子中,propeller
块以25°/gt
的角速度旋转。
set_phi
- 输入:TAG_Double
- 限制:可转动模型
cube
- 描述:设置该
cube
横滚角为double
。 - 示例:
{cube:"propeller",actions:[{set_phi:0.0d}]}
这个例子中,propeller
块的横滚角始终为0°
,不进行旋转。
phiv_to
- 输入:[TAG_Double,TAG_Double]
- 限制:可转动模型
cube
- 描述:让该
cube
开始加速/减速旋转,直到角速度变为phiv_to[0]
,phiv_to[1]
为正值且大于1
,为影响变速快慢的惯性。 - 示例:
{cube:"propeller",actions:[{phiv_to:[25.0d,30.0d]}]}
这个例子中,propeller
块以30
的惯性质量,加速到25°/gt
的角速度。
add_rot0
- 输入:TAG_Double
- 限制:可转动模型
cube
- 描述:为该
cube
相对于载具的局部视角坐标的水平角度增加double
。 - 示例:
{cube:"what",actions:[{T:10,add_rot0:90.0d}]}
这个例子中,what
块的的朝向时而向前,时而向左,时而向后,时而向右。
add_rot1
- 输入:TAG_Double
- 限制:可转动模型
cube
- 描述:为该
cube
相对于载具的局部视角坐标的竖直角度增加double
。 - 示例:
{cube:"what",actions:[{T:10,add_rot1:90.0d}]}
这个例子中,what
块的的朝向时而向前,时而向上,时而向后,时而向下。
set_rot
- 输入:[TAG_Double,TAG_Double]
- 限制:可转动模型
cube
- 描述:将该
cube
相对于载具的局部视角坐标设置为set_rot[]
。 - 示例:
{cube:"what",actions:[{set_rot:[0.0d,0.0d]}]}
这个例子中,what
块的朝向始终跟随载具朝向,指向前。
set_pos
- 输入:[TAG_Double,TAG_Double,TAG_Double]
- 限制:非vehicle
- 描述:将该
cube
相对于载具的局部坐标设置为set_pos[]
。 - 示例:
{cube:"door",actions:[{set_pos:[1.0d,0.0d,0.0d]}]}
这个例子中,door
块的位置变为了载具左边1
格的位置。
tag_add
- 输入:TAG_Int
- 限制:无
- 描述:
int
在0
到9
之间,分别可以为载具根实体添加vehicle_T0
、vehicle_T1
、vehicle_T2
、vehicle_T3
、vehicle_T4
、vehicle_T5
、vehicle_T6
、vehicle_T7
、vehicle_T8
、vehicle_T9
的状态标签,并移除其反标签。 - 示例:
{cube:"whatever",actions:[{tag_add:0}]}
这个例子中,载具根实体拥有vehicle_T0
,没有not_vehicle_T0
。
tag_rmv
- 输入:TAG_Int
- 限制:无
- 描述:调用
0
到9
号计时器,为载具根实体计时。 - 示例:
{cube:"whatever",actions:[{time_add:{0:1,2:3}}]}
这个例子中,载具根实体的0
号计时器的值为0,1,2......
,2
号计时器的值为0,3,6......
time_set
- 输入:{0: TAG_Int, 1: TAG_Int, 2: TAG_Int, 3: TAG_Int, 4: TAG_Int, 5: TAG_Int, 6: TAG_Int, 7: TAG_Int, 8: TAG_Int, 9: TAG_Int}
- 限制:无
- 描述:调用
0
到9
号计时器,为载具根实体计时。 - 示例:
{cube:"whatever",actions:[{time_set:{0:0,1:1}}]}
这个例子中,载具根实体的0
号计时器的值为0
,1
号计时器的值为1
。
play_sound
- 输入:TAG_String
- 限制:无
- 描述:在该
cube
位置播放id
为string
的音效素材。 - 示例:
{cube:"propeller",actions:[{T:20,playsound:"bca7"}]}
这个例子中,propeller
块每秒会播放"bca7"
音效。
particle
- 输入:{id: TAG_String, uvw: [TAG_Double,TAG_Double,TAG_Double], rot: [TAG_Double,TAG_Double]}
- 限制:无
- 描述:在相对于载具的局部坐标为
uvw[]
的位置,生成id为string的粒子效果,其中rot
为可选填项,用于把相对于载具的局部视角坐标作为参数传入粒子。 - 示例:
{cube:"whatever",actions:[{particle:{id:"flame_fow",uvw:[0.0d,0.0d,1.0d],rot:[0.0d,0.0d]}}]}
这个例子中,载具会在前方1
格位置生成向前运动的火焰粒子。