本文档由 WvT Studio @阿特我自己 制作,未经授权禁止以任何形式进行引用或转载,版权所有,侵权必究!
当前修订版本:1.3.1
加入学习交流群:132538683
索引:
内置对象
系统相关
事件相关
实体相关
组件相关
实体查询
方块相关
指令相关
组件列表
事件列表
内置对象
内置对象是对脚本引擎所返回的对象结构概览
EntityObject
代表一个实体
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。实体对象可以是”entity”或”item_entity” |
__identifier__ | String | 只读-对象的命名空间标识符。例如:若该对象的类型为”entity”,且指向一个原版牛,则该属性的值为”minecraft:cow” |
id | Positive Integer | 只读-所指向的实体的唯一ID |
ComponentObject
代表一个组件
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”component” |
__identifier__ | String | 只读-对象的命名空间标识符。例如:若该对象的类型为”component”,且代表坐标组件,则该属性的值为”minecraft:position” |
data | Object | 只读-组件所包含的数据 |
EventDataObject
代表一个事件所传递的数据
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”event_data” |
__identifier__ | String | 只读-对象的命名空间标识符。例如:若该对象的类型为”event_data”,且代表一个发送聊天消息事件,则该属性的值为”minecraft:display_chat_event” |
data | Object | 只读-事件所传递的数据 |
QueryObject
代表一个实体查询器
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”query” |
query_id | Positive Integer | 只读-所指向的实体查询器的唯一ID |
LevelObject
代表一个存档
可以通过server.level和client.level获得该对象
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”level” |
level_id | Positive Integer | 只读-所指向的level的唯一ID |
ItemStackObject
代表容器中的一组物品
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”item_stack” |
__identifier__ | String | 只读-对象的命名空间标识符。例如:若该对象的类型为”item_stack”,且代表一组草方块,则该属性的值为”minecraft:grass” |
item | String | 只读-物品的标识符。空物品的标识符为”minecraft:undefined” |
count | String | 只读-该组物品的数量 |
BlockObject
代表世界中的一个方块
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”block” |
__identifier__ | String | 只读-对象的命名空间标识符。例如:若该对象的类型为”block”,且代表一个基岩方块,则该属性的值为”minecraft:bedrock” |
ticking_area | Object | 只读-方块所在的常加载区域 |
block_position | Object | 只读-该方块的坐标,该对象包含x, y, z三个属性。该对象也作为其唯一标识符的一部分 |
常加载区域
有两种类型的常加载区域对象:实体和世界。当一个函数调用一个常加载区域时,可以将任一类型作为参数。
EntityTickingAreaObject
代表世界中的实体所在的常加载区域,例如玩家周围的区块
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”entity_ticking_area” |
entity_ticking_area_id | Positive Integer | 只读-该常加载区域的UUID |
LevelTickingAreaObject
代表世界中所定义的常加载区域,例如使用 /tickarea 指令添加的常加载区域
该对象的结构如下:
属性
名称 | 类型 | 描述 |
---|---|---|
__type__ | String | 只读-对象的类型。该属性的值将会是”level_ticking_area” |
level_ticking_area_id | String | 只读-该常加载区域的UUID |
系统相关
加入版本:1.9.0.3
client.registerSystem(MajorVersion, MinorVersion)
注册一个客户端并获取对应的System对象
属性
名称 | 类型 | 描述 |
---|---|---|
MajorVersion | Integer | 脚本引擎的主要版本 |
MinorVersion | Integer | 脚本引擎的修订版本 |
返回值
类型 | 值 | 描述 |
---|---|---|
Object | 注册的客户端所对应的System对象,该对象包含如下三个属性 名称 类型 描述 initialize Method 当世界已经准备好,但还未进入世界时,执行此方法 update Method 每tick(20/1秒)执行一次此方法,需要保证耗时低于50ms,否则游戏会卡顿 shutdown Method 当执行此客户端脚本的玩家退出世界时,执行此方法 |
加入版本:1.9.0.3
server.registerSystem(MajorVersion, MinorVersion)
注册一个客户端并获取对应的System对象
属性
名称 | 类型 | 描述 |
---|---|---|
MajorVersion | Integer | 脚本引擎的主要版本 |
MinorVersion | Integer | 脚本引擎的修订版本 |
返回值
类型 | 值 | 描述 |
---|---|---|
Object | 注册的服务端所对应的System对象,该对象包含如下三个属性 名称 类型 描述 initialize Method 当世界已经准备好,但还未进入世界时,执行此方法 update Method 每tick(20/1秒)执行一次此方法,需要保证耗时低于50ms,否则服务器可能停止工作 shutdown Method 当所有玩家都退出世界时,执行此方法 |
事件相关
以下均为System对象的方法
加入版本:1.12.0.2
registerEventData(EventIdentifier, EventData)
注册一个自定义事件到脚本引擎,并指定其事件数据的模板
自定义事件在使用前必须先注册
参数
名称 | 类型 | 描述 |
---|---|---|
EventIdentifier | String | 自定义事件的标识符,使用命名空间格式,且命名空间不能为”minecraft” |
EventData | Object | 一个包含正确所需属性及初始值的事件数据模板/td> |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 成功注册自定义事件 |
Object | null | 在注册自定义事件时出现了错误 |
加入版本:1.12.0.2
createEventData(EventIdentifier)
创建一个事件数据的模板,包含事件数据所需的所有属性及其初始值
自定义事件必须先注册
参数
名称 | 类型 | 描述 |
---|---|---|
EventIdentifier | String | 事件的标识符 |
返回值
类型 | 值 | 描述 |
---|---|---|
EventDataObject | 所获得的事件数据对象 | |
Object | null | 在创建事件数据时出现了错误 |
加入版本:1.9.0.3
broadcastEvent(EventIdentifier, EventData)
广播一个事件并传递数据,服务端和客户端都可监听到该事件
参数
名称 | 类型 | 描述 |
---|---|---|
EventIdentifier | String | 将要广播的事件的标识符 |
EventData | EventDataObject | 通过createEventData()获取并修改的数据对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 事件广播成功 |
Object | null | 广播事件时出现了问题 |
加入版本:1.9.0.3
listenForEvent(EventIdentifier, CallbackObject)
为指定事件注册事件监听器
参数
名称 | 类型 | 描述 |
---|---|---|
EventIdentifier | String | 将要监听的事件的标识符,可以是内置事件,也可以是脚本中自定义的事件 |
CallbackObject | Object | 回调的对象,当监听到事件时会调用该对象,该对象需要接收一个EventDataObject对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 成功为该事件注册事件监听器 |
Object | null | 注册事件监听器时出现了错误 |
实体相关
以下均为System对象的方法
加入版本:1.9.0.3
createEntity()
创建一个空实体,暂且不将其放到世界中
返回值
类型 | 值 | 描述 |
---|---|---|
EntityObject | 新创建的实体的EntityObject对象 | |
Object | null | 创建实体时出现了问题 |
加入版本:1.9.0.3
createEntity(Type, TemplateIdentifier)
创建实体并指定类型和JSON模板
参数
名称 | 类型 | 描述 |
---|---|---|
Type | String | 实体的类型,必须是”entity”和”item_entity”之一 |
TemplateIdentifier | String | 实体标识符,可以是内置的,也可以是行为包定义的,如”minecraft:cow” |
返回值
类型 | 值 | 描述 |
---|---|---|
EntityObject | 新创建的实体的EntityObject对象 | |
Object | null | 创建实体时出现了问题 |
加入版本:1.9.0.3
destroyEntity(EntityObject)
直接移除一个实体。该方法并不会触发实体死亡的事件
参数
名称 | 类型 | 描述 |
---|---|---|
EntityObject | EntityObject | 一个实体所对应的EntityObject对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 该实体被成功移除 |
Object | null | 移除实体时出现了点问题 |
加入版本:1.9.0.3
isValidEntity(EntityObject)
检查给定的EntityObject对象是否对应一个有效实体
参数
名称 | 类型 | 描述 |
---|---|---|
EntityObject | EntityObject | 一个实体所对应的EntityObject对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 是一个有效实体 |
Boolean | false | 不是一个有效实体 |
Object | null | 验证实体时出现了错误 |
组件相关
以下均为System对象的方法
加入版本:1.9.0.3
registerComponent(ComponentIdentifier, ComponentData)
注册一个自定义组件
参数
名称 | 类型 | 描述 |
---|---|---|
ComponentIdentifier | String | 自定义组件的标识符。需要使用命名空间,如”my_pack:my_custom_component” |
ComponentData | Object | 一个JavaScript对象,用于定义组件的所有属性及属性的默认值 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 成功注册 |
Object | null | 注册组件时出现了错误 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
createComponent(Target, ComponentIdentifier)
创建指定的组件,并将其添加到指定的目标中
参数
名称 | 类型 | 描述 |
---|---|---|
Target | Object | 目标对象,该对象可以是EntityObject、LevelObject、BlockObject等 |
ComponentIdentifier | String | 要添加的组件的标识符,可以是内置组件,也可以是自定义组件,如”minecraft:position” |
返回值
类型 | 值 | 描述 |
---|---|---|
ComponentObject | 组件对象 | |
Object | null | 创建组件时出错 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
hasComponent(Target, ComponentIdentifier)
检查所给的目标是否具有指定的组件
参数
名称 | 类型 | 描述 |
---|---|---|
Target | Object | 目标对象,该对象可以是EntityObject、LevelObject、BlockObject等 |
ComponentIdentifier | String | 要检查的组件的标识符 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 该实体具有所指定的组件 |
Boolean | false | 该实体没有所指定的组件 |
Object | null | 传入了未知组件,或其他错误 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
getComponent(Target, ComponentIdentifier)
从指定目标中获得指定的组件
参数
名称 | 类型 | 描述 |
---|---|---|
Target | Object | 目标对象,该对象可以是EntityObject、LevelObject、BlockObject等 |
ComponentIdentifier | String | 要获取的组件的标识符 |
返回值
类型 | 值 | 描述 |
---|---|---|
ComponentObject | 获取到的组件的ComponentObject对象 | |
Object | null | 实体没有该组件,或出现其他错误 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
applyComponentChanges(Target, ComponentObject)
将组件应用回指定目标
参数
名称 | 类型 | 描述 |
---|---|---|
Target | Object | 目标对象,该对象可以是EntityObject、LevelObject、BlockObject等 |
ComponentObject | Object | 一个组件所对应的ComponentObject对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 该组件已成功应用 |
Object | null | 应用组件时出现错误 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
destroyComponent(Target, ComponentIdentifier)
从指定目标中移除组件
参数
名称 | 类型 | 描述 |
---|---|---|
Target | Object | 目标对象,该对象可以是EntityObject、LevelObject、BlockObject等 |
ComponentIdentifier | String | 所要移除的组件的标识符 |
返回值
类型 | 值 | 描述 |
---|---|---|
Boolean | true | 该组件已成功从实体中删除 |
Object | null | 实体没有该组件,或出现了其他错误 |
实体查询
以下均为System对象的方法
加入版本:1.9.0.3
registerQuery()
注册一个没有过滤规则的实体查询器,默认将捕获所有实体
返回值
类型 | 值 | 描述 |
---|---|---|
QueryObject | 实体查询器对象 | |
Object | null | 注册实体查询器时出错 |
加入版本:1.9.0.3
registerQuery(Component, ComponentField1, ComponentField2, ComponentField3)
注册一个实体查询器并给定一个过滤规则
过滤规则是一个组件,当实体拥有该组件且组件的属性相符时,该实体将会被捕获
参数
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
Component | String | 将用于过滤实体的组件的标识符 | |
ComponentField1 | String | x | 第一个 组件中的属性 的名称。默认情况下将设置为”x” |
ComponentField2 | String | y | 第二个 组件中的属性 的名称。默认情况下将设置为”y” |
ComponentField3 | String | z | 第三个 组件中的属性 的名称。默认情况下将设置为”z” |
返回值
类型 | 值 | 描述 |
---|---|---|
QueryObject | 实体查询器对象 | |
Object | null | 注册实体查询器时出错 |
加入版本:1.9.0.3
addFilterToQuery(Query, ComponentIdentifier)
为给定的实体查询器添加一个过滤规则
参数
名称 | 类型 | 描述 |
---|---|---|
Query | QueryObject | 实体查询器对象 |
ComponentIdentifier | String | 将要添加到过滤规则的组件的标识符,可以是内置组件,也可以是脚本中自定义的组件 |
加入版本:1.9.0.3
getEntitiesFromQuery(Query)
从给定的实体查询器中获取所有符合规则的实体
参数
名称 | 类型 | 描述 |
---|---|---|
Query | QueryObject | 一个实体查询器的Query对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
Array | array | 一组EntityObjects对象,包含所有符合规则的实体 |
Object | null | 获取实体时出现了问题 |
加入版本:1.9.0.3
getEntitiesFromQuery(Query, ComponentField1_Min, ComponentField2_Min, ComponentField3_Min, ComponentField1_Max, ComponentField2_Max, ComponentField3_Max)
从给定的实体查询器中获取所有符合规则的实体
除了需要符合实体查询器的过滤规则外,还手动指定了如下规则
参数
名称 | 类型 | 描述 |
---|---|---|
Query | QueryObject | 一个实体查询器的Query对象 |
ComponentField1_Min | Decimal | 在注册实体查询器时,所指定的 第一个属性 的最小值 |
ComponentField2_Min | Decimal | 在注册实体查询器时,所指定的 第二个属性 的最小值 |
ComponentField3_Min | Decimal | 在注册实体查询器时,所指定的 第三个属性 的最小值 |
ComponentField1_Max | Decimal | 在注册实体查询器时,所指定的 第一个属性 的最大值 |
ComponentField2_Max | Decimal | 在注册实体查询器时,所指定的 第二个属性 的最大值 |
ComponentField3_Max | Decimal | 在注册实体查询器时,所指定的 第三个属性 的最大值 |
返回值
类型 | 值 | 描述 |
---|---|---|
Array | array | 一组EntityObject对象,包含所有符合规则的实体 |
Object | null | 获取实体时出现了问题 |
指令相关
加入版本:1.12.0.2
executeCommand(Command, Callback)
在服务端执行一个指令,指令将会在当前帧结束时被查询并执行
指令的所有输出都会被发送到Callback监听器
参数
名称 | 类型 | 描述 |
---|---|---|
Command | String | 需要执行的指令(包含斜杠) |
Callback | Object | 在指令执行完毕之后的回调对象,结构如下: 属性 名称 类型 描述 data Object 返回的数据 command String 执行的命令 |
方块相关
Script Engine 无法获取未加载的区块内的方块,可以通过实体的 tick_world 组件获取常加载区域,或在游戏内使用 /tickarea 指令添加一个存档级别的常加载区域有
加入版本:1.12.0.2
getBlock(TickingArea, x, y, z)
获取常加载区域内的一个方块
参数
名称 | 类型 | 描述 |
---|---|---|
TickingArea | TickingAreaObject | 方块所在的常加载区域 |
x | Integer | 方块的x坐标 |
y | Integer | 方块的y坐标 |
z | Integer | 方块的z坐标 |
返回值
类型 | 值 | 描述 |
---|---|---|
BlockObject | object | 一个包含了方块数据的对象 |
Object | null | 在检索方块时出现错误 |
加入版本:1.12.0.2
getBlock(TickingArea, PositionObject)
获取常加载区域内的一个方块
参数
名称 | 类型 | 描述 |
---|---|---|
TickingArea | TickingAreaObject | 方块所在的常加载区域 |
PositionObject | Object | 一个包含x, y, z三个属性的坐标对象 |
返回值
类型 | 值 | 描述 |
---|---|---|
BlockObject | 一个包含了方块数据的对象 | |
Object | null | 在检索方块时出现错误 |
加入版本:1.12.0.2
getBlocks(TickingArea, xMin, yMin, zMin, xMax, yMax, zMax)
获取常加载区域内的一片方块
参数
名称 | 类型 | 描述 |
---|---|---|
xMix – zMax | Integer | 起始坐标与终止坐标 |
返回值
类型 | 值 | 描述 |
---|---|---|
Array | 包含该片区域的方块对应的BlockObject的数组 | |
Object | null | 在检索方块时出现错误 |
加入版本:1.12.0.2
getBlocks(TickingArea, MinimumPositionObject, MaximumPositionObject)
获取常加载区域内的一片方块
参数
名称 | 类型 | 描述 |
---|---|---|
MinimumPositionObject | Object | 起始坐标的对象,包含x, y, z三个属性 |
MaximumPositionObject | Object | 终止坐标的对象,包含x, y, z三个属性 |
返回值
类型 | 值 | 描述 |
---|---|---|
Array | 包含该片区域的方块对应的BlockObject的数组 | |
Object | null | 在检索方块时出现错误 |
组件列表
存档组件
存档的组件通过 getComponent() 方法获得,EntityObject 参数传入 server.level 或 client.level
加入版本:1.12.0.2
minecraft:ticking_areas
该组件包含当前世界中使用 /tickarea 指令定义的所有的常加载区域
属性
该组件的数据是所有常加载区域的key-value对
key 是常加载区域的名称
value 是其对应的LevelTickingAreaObject
加入版本:1.12.0.2
minecraft:weather
该组件包含当前世界的天气
属性
名称 | 类型 | 描述 |
---|---|---|
do_weather_cycle | Boolean | 是否进行天气轮换 |
rain_level | Decimal | 雨的级别,范围:0 ~ 1 |
rain_time | Integer | 雨水的持续时间(单位:tick) |
lightning_level | Decimal | 闪电的级别,范围:0 ~ 1 |
lightning_time | Integer | 闪电的持续时间(单位:tick) |
方块组件
方块的组件也通过getComponent()方法获得,EntityObject参数传入一个BlockObject
加入版本:1.12.0.2
minecraft:blockstate
该组件包含方块的所有状态,包括材质、方向等等
属性
不同的方块有不同的属性,请自己测试或等待作者收集属性表
服务端组件
加入版本:1.12.0.2
minecraft:armor_container
此组件表示一个实体的装甲栏的所有物品,物品顺序由上至下
注意:目前为止(1.12.0.2)装甲栏为只读模式,无法修改
属性
组件数据为一个包含了所有物品对应的ItemStackObject的数组
加入版本:1.9.0.3
minecraft:attack
实体的攻击伤害
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
damage | Range [a, b] | 近战攻击造成的伤害的范围,负值将会治愈实体 | |
effect_name | String | 攻击附带的药水效果 | |
effect_duration | Decimal | 0.0 | 药水效果的持续时间(单位:秒) |
加入版本:1.9.0.3
minecraft:collision_box
实体的碰撞箱体积
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
width | Decimal | 1.0 | 宽度(单位:方块) |
height | Decimal | 1.0 | 高度(单位:方块) |
加入版本:1.9.0.3
minecraft:damage_sensor
实体如何对指定类型的伤害作出反应
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
on_damage | List | 当受到指定类型的伤害时所要触发的事件的列表,允许为实体定义和事件指定过滤器 | |
deals_damage | Boolean | true | 是否对实体造成伤害 |
cause | String | 指定类型的伤害 |
加入版本:1.9.0.3
minecraft:equipment
定义实体可持有的装备以定义实体的战利品列表
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
table | String | 装备列表的JSON文件的路径,相对于行为包的根目录 | |
slot_drop_chance | List | 可以从该物品栏中删除装备物品的物品栏列表 |
加入版本:1.9.0.3
minecraft:equippable
定义实体可装备的物品及数量
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
accepted_items | List | 可用的物品列表 | |
interact_text | String | 使用触控设备与其交互时显示的文本 | |
item | String | 当实体装备物品时将触发的事件 | |
on_equip | String | 当实体装备物品时将触发的事件 | |
on_unequip | String | 当实体卸下物品时将触发的事件 | |
slot | Integer | 0 | 物品栏的序号 |
加入版本:1.9.0.3
minecraft:explode
控制实体的爆炸方式及变量
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
fuseLength | Range [a, b] | [0.0, 0.0] | 爆炸耗时的随机时间范围 |
power | Decimal | 3.0 | 爆炸半径 |
maxResistance | Decimal | false | 方块的最大抗爆阻力 |
fuseLit | Boolean | false | 是否已被点着 |
causesFire | Boolean | false | 是否引起火灾 |
breaks_blocks | Boolean | true | 是否破坏方块 |
fireAffectedByGriefing | Boolean | false | causesFire是否受到游戏规则的影响 |
destroyAffectedByGriefing | Boolean | false | breaks_blocks是否受到游戏规则的影响 |
加入版本:1.12.0.2
minecraft:hand_container
此组件表示一个实体手上所持有的物品
注意:目前为止(1.12.0.2),手持物内容为只读模式。如果实体是玩家,则0对应左手,1对应右手
属性
组件数据为一个包含了所有物品对应的ItemStackObject的数组
加入版本:1.9.0.3
minecraft:healable
定义玩家如何治疗实体
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
force_use | Boolean | false | 是否可以强制使用物品,无论实体是否已处于健康状态 |
filters | MinecraftFilter | 用于定义此触发器条件的过滤器组 | |
items | Array | 可用于治疗实体的物品的JSON数组 属性 名称 类型 默认值 描述 item String 物品的标识符 heal_amount Integer 1 治愈的生命值 filters Minecraft Filter 过滤器组,用于定义使用此物品修复实体的条件 |
加入版本:1.12.0.2
minecraft:hotbar_container
玩家的快捷物品栏所包含的所有物品,按照从左到右的顺序
注意:目前为止(1.12.0.2),快捷物品栏为只读模式
属性
组件数据为一个包含了所有物品对应的ItemStackObject的数组
加入版本:1.12.0.2
minecraft:health
定义实体当前和最大生命值。将组件应用回实体后,实体状态将发生改变,如果当前生命值小于等于0将会死亡
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
value | Integer | 1 | 当前生命值 |
max | Integer | 10 | 最大生命值 |
加入版本:1.9.0.3
minecraft:interact
定义玩家与实体的交互方式
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
spawn_entities | Array | 发生交互时要生成的实体标识符的数组 | |
on_interact | String | 发生交互时要触发的事件标识符 | |
particle_on_start | JSON Object | 将在交互开始时触发的粒子效果 名称 类型 默认值 描述 particle_type String 将产生的粒子类型的标识符 particle_y_offset Decimal 0.0 y轴偏移 particle_offset_towards_interactor/td> Boolean false 粒子是否会更接近进行交互的人 | |
cooldown | Decimal | 0.0 | 可再次与实体交互的冷却时间(单位:秒) |
swing | Boolean | false | 如果为true,则玩家将在与此实体交互时执行“swing”动画 |
use_item | Boolean | false | 如果为true,则交互将使用物品 |
hurt_item | Integer | 0 | 与实体交互时,物品消耗的耐久度 |
interact_text | String | 使用触摸屏设备时,交互按钮显示的文本(如上马、上船) | |
add_items | JSON Object | Loot table,其中包含成功交互后添加到玩家库存中的项目 名称 类型 默认值 描述 table String 战利品表文件路径,相对于行为包根目录 | |
spawn_items | JSON Object | 在成功交互时,物品会掉落在地面上 名称 类型 默认值 描述 table String 战利品表文件路径,相对于行为包根目录 | |
transform_to_item | String | 使用的项目将在成功交互后转换为此项目。格式:itemName:auxValue | |
play_sounds | Array | 交互发生时要播放的声音标识符的数组 |
加入版本:1.9.0.3
minecraft:inventory
定义实体的库存(类型、大小,限制等)。目前还不能更改库存内容。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
container_type | String | none | 实体的库存的类型,可以是”horse”, ‘minecart_chest”, “minecart_hopper”, “inventory”, “container”, “hopper”其中之一 |
inventory_size | Integer | 5 | 物品栏数量 |
can_be_siphoned_from | Boolean | false | 是否可以与漏斗交互 |
private | Boolean | false | 是否只有实体可以访问 |
restrict_to_owner | Boolean | false | 是否只能由其所有者或其自身访问 |
additional_slots_per_strength | Integer | 0 | 每个额外强度,该实体可获得的物品栏数 |
加入版本:1.12.0.2
minecraft:inventory_container
此组件表示一个实体的仓库内容
注意:目前为止(1.12.0.2),仓库内容为只读模式。如果实体是玩家,则0~8对应快捷物品栏,9~16对应第一行物品栏,17~24对应第二行物品栏,25~32对应第三行物品栏
属性
组件数据为一个包含了所有物品对应的ItemStackObject的数组
加入版本:1.9.0.3
minecraft:lookat
使实体看向另一个实体
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
filters | Minecraft Filter | player | 该实体将会看向的实体 |
look_cooldown | Range [a, b] | [0.0, 0.0] | 实体寻找目标的冷却时间范围 |
look_event | String | 当过滤器内的实体看向该实体时所触发的事件 | |
mAllowInvulnerable | Boolean | false | 无敌的实体(例如,处于创造模式的玩家)是否可以被视为有效目标 |
searchRadius | Decimal | 10.0 | 此实体看向另一个实体的最大距离 |
setTarget | Boolean | 实体是否将攻击目标设置为看向他的实体 |
加入版本:1.9.0.3
minecraft:nameable
实体是否可被命名及显示方式
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
name | String | 实体的当前名称 | |
name_actions | JSON Object | 实体的特殊名称,以及被命名为特殊名称后触发的事件 名称 类型 描述 on_named String 当实体被命名为特殊名称时触发的事件 name_filter List 特殊名称列表 | |
default_trigger | String | 在实体被命名时触发的事件 | |
alwaysShow | Boolean | false | 是否始终显示名称 |
allowNameTagRenaming | Boolean | true | 是否可以使用命名牌重命名该实体 |
加入版本:1.9.0.3
minecraft:position
实体的坐标
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
x | Decimal | 0.0 | X轴(东西方向)位置 |
y | Decimal | 0.0 | Y轴(高度)位置 |
z | Decimal | 0.0 | Z轴(南北方向)位置 |
加入版本:1.9.0.3
minecraft:rotation
实体的头部和身体的旋转角度
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
x | Decimal | 0.0 | 头部的垂直旋转角度 |
y | Decimal | 0.0 | 身体的水平旋转角度 |
加入版本:1.9.0.3
minecraft:shooter
定义实体的远程攻击,此组件并不允许实体使用远程攻击,它只用于定义实体射击的弹药类型
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
def | String | 用作远程攻击弹药的实体标识符,该实体必须具有能够作为弹药射击的弹药组件 | |
auxVal | Integer | -1 | 要对命中实体应用的药水效果的数字ID |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
minecraft:spawn_entity
控制实体生成实体或物品的能力(如鸡下蛋的能力)
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
should_leash | Boolean | false | 如果为true,被生成的实体将会绑定到其父级/跟随其的父母 |
num_to_spawn | Integer | 1 | 每次生成的实体数量 |
min_wait_time | Integer | 300 | 生成实体或物品的最小冷却时间(单位:秒) |
max_wait_time | Integer | 600 | 生成实体或物品的最大冷却时间(单位:秒) |
spawn_sound | String | “egg” | 生成实体或物品时要播放的声音的标识符 |
spawn_item | String | “egg” | 要生成的物品的标识符 |
spawn_entity | String | 要生成的实体的标识符 | |
spawn_method | String | “born” | 生成实体或物品的方法 |
spawn_event | String | 生成实体或物品时触发的事件 | |
filters | Minecraft Filter | 如果存在,则指定实体仅在过滤器计算结果为true时才会生成 | |
single_use | Boolean | true | 如果为true,则此实体将只生成一次实体 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
minecraft:teleport
控制实体传送自身的能力(类似于末影人)
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
darkTeleportChance | Decimal | 0.01 | 实体在夜晚的传送几率(范围:0.0 ~ 1.0) |
lightTeleportChance | Decimal | 0.01 | 实体在白天的传送几率(范围:0.0 ~ 1.0) |
maxRandomTeleportTime | Decimal | 20.0 | 传送的冷却时间的最大值(单位:秒) |
minRandomTeleportTime | Decimal | 0.0 | 传送的冷却时间的最小值(单位:秒) |
randomTeleportCube | Vector [a, b, c] | [32.0, 16.0, 32.0] | 随机传送范围,实体将传送到此立方体区域内的任意位置 |
randomTeleports | Boolean | true | 如果为true,则实体将随机传送 |
targetDistance | Decimal | 16.0 | 实体在追逐目标时传送的最大距离 |
target_teleport_chance | Decimal | 1.0 | 实体的随机传送几率 |
客户端组件
加入版本:1.9.0.3
minecraft:molang
MoLang组件可以访问实体中的MoLang变量。要了解有关MoLang
varibles的更多信息,请查看附加文档。在脚本中,您可以获取和设置实体的JSON文件中定义的这些变量。由于MoLang变量的格式化(例如entity.isgrazing),您必须使用对象上的[]运算符来访问变量。
事件列表
客户端事件
可监听事件
加入版本:1.9.0.3
minecraft:client_entered_world
只要玩家加入世界,就会触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 玩家的 EntityObject 对象,一但玩家断开连接,该对象将会失效 |
加入版本:1.9.0.3
minecraft:hit_result_changed
当光标(十字准星、触控模式的圆圈中心)从指向一个方块或空气变为指向一个实体时,触发此事件。最多1000格距离
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 指向的实体 |
position | Vector [a, b, c] | 指向的实体的坐标 |
加入版本:1.9.0.3
minecraft:hit_result_continuous
每tick都会触发该事件,并告诉你光标(十字准星、触控模式的圆圈中心)指向的实体或方块,最大距离1000格
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 指向的实体(如果存在) |
position | Vector [a, b, c] | 指向的实体或方块的坐标 |
加入版本:1.9.0.3
minecraft:pick_hit_result_changed
当鼠标指针(PC的鼠标指针、其他平台的虚拟指针)从指向一个实体变为指向一个方块或空气时,触发此事件,最大距离1000格
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 指向的实体(如果存在) |
position | Vector [a, b, c] | 指向的实体的坐标 |
加入版本:1.9.0.3
minecraft:pick_hit_result_continuous
每tick都会触发该事件,并告诉你鼠标指针(PC的鼠标指针、其他平台的虚拟指针)指向的实体或方块,最大距离1000格
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 指向的实体(如果存在) |
position | Vector [a, b, c] | 指向的实体或方块的坐标 |
可触发事件
加入版本:1.9.0.3
minecraft:display_chat_event
向运行该客户端脚本的玩家的聊天框发送一条消息
属性
名称 | 类型 | 描述 |
---|---|---|
message | String | 要发送的消息 |
加入版本:1.9.0.3
minecraft:load_ui
向运行该客户端脚本的特定玩家显示UI界面,此事件将界面添加到UI堆栈的顶部,触发后UI将立即显示
属性
名称 | 类型 | 描述 |
---|---|---|
path | String | HTML文件的路径,相对于资源包根目录 |
options | JSON Object | 选项。你可以通过将其值设置为true或false来改变界面选项 名称 描述 always_accepts_input 如果为true,只要界面处于UI栈中,将始终接受并处理输入,即使有其他自定义UI显示在其上方 render_game_behind 如果为true,游戏将在界面下继续显示 absorbs_input 如果为true,输入将不会穿透到下方界面 is_showing_menu 如果为true,界面将会被视为暂停菜单,此时游戏的暂停菜单将不会显示在该界面的上方 should_steal_mouse 如果为true,该界面将捕获鼠标指针并限制其移动到该UI界面 force_render_below 如果为true,则即使另一个屏幕位于其上并且将在其上显示(包括HUD),也将显示此屏幕 render_only_when_topmost 如果为true,则仅当该界面处于UI栈顶时才会显示 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
minecraft:send_ui_event
将UI事件发送到运行该脚本的特定玩家的UI引擎。触发事件后,将立即发送该UI事件。
属性
名称 | 类型 | 描述 |
---|---|---|
eventIdentifier | String | UI事件的标识符 |
data | String | UI事件的数据 |
加入版本:1.9.0.3
minecraft:spawn_particle_attached_entity
在客户端创建跟随实体的粒子效果,仅当前客户端可见
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
effect | String | 粒子效果的标识符 | |
entity | Object | 要附加到的实体的对象 | |
offset | Vector [a, b, c] | [0, 0, 0] | 粒子效果相对于实体中心的偏移 |
加入版本:1.9.0.3
minecraft:spawn_particle_in_world
在客户端创建静态粒子效果,仅当前客户端可见。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
effect | String | 粒子效果的标识符 | |
offset | Vector [a, b, c] | [0, 0, 0] | 粒子效果的坐标 |
加入版本:1.9.0.3 最后改动版本:1.12.0.2
minecraft:unload_ui
关闭UI,事件数据仅包含一个字符串,即UI的名字
加入版本:1.12.0.2
minecraft:script_logger_config
此事件用于为客户端脚本打开和关闭各种级别的日志记录。请注意,打开/关闭日志记录不仅限于广播事件的脚本,它将影响所有客户端脚本,包括应用于世界的其他行为包中的脚本。有关日志记录的详细信息,请参阅“调试”部分。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
log_errors | Boolean | false | 是否记录error级别的日志 |
log_warnings | Boolean | false | 是否记录warning级别的日志 |
log_information | Boolean | false | 是否记录information级别的日志 |
服务端事件
可监听事件
加入版本:1.12.0.2
minecraft:block_destruction_started
当玩家开始破坏一个方块时触发(创造模式直接破坏不会触发)
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 正在破坏此方块的玩家 |
block_position | Object | 被破坏的方块的坐标,包含x, y, z三个属性 |
加入版本:1.12.0.2
minecraft:block_destruction_stopped
当玩家停止破坏一个方块时触发(创造模式直接破坏不会触发)
当方块被完全破坏时也会触发该方法,但destruction_progress为0。
1.12.0.2的bug: 当方块被破坏后鼠标指针指向空气方块时,会再次触发一次该方法,且触发于真数据之前,本次触发除player以外的属性都为脏数据(x=0,y=0,z=0,进度=0)
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 停止破坏此方块的玩家 |
block_position | Object | 被破坏的方块的坐标,包含x, y, z三个属性 |
destruction_progress | Decimal | 停止破坏此方块时,方块已经被破坏的进度,范围:0.0 ~ 1.0 |
加入版本:1.12.0.2
minecraft:entity_acquired_item
当实体获得物品时触发
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 获得物品的实体 |
item_stack | ItemStackObject | 获得的物品 |
acquisition_method | String | 获得物品的方式 “picked_up” -> 捡起 “filled” -> 因装水获得水桶、因放置水桶获得桶 待补充… |
acquired_amount | Integer | 获得的物品数量 |
secondary_entity | String | 影响该物品的实体。如玩家与村民完成交易(购买物品)时,entity是玩家,secondary_entity是村民 |
加入版本:1.12.0.2
minecraft:entity_carried_item_changed
当实体的手持物改变时触发(在两个空物品栏之间切换不会触发)
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 改变了手持物的实体 |
previous_carried_item | ItemStackObject | 上一个手持物 |
carried_item | ItemStackObject | 当前手持物 |
加入版本:1.9.0.3
minecraft:entity_created
当玩家除外的实体加入到世界时触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 刚刚创建的实体 |
加入版本:1.9.0.3
minecraft:entity_death
实体正常死亡时会触发此事件,删除实体时不会触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 刚刚死亡的实体 |
加入版本:1.12.0.2
minecraft:entity_dropped_item
当实体丢出物品时会触发
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 丢出物品的实体 |
item_stack | ItemStackObject | 丢出的物品 |
加入版本:1.12.0.2
minecraft:entity_equipped_armor
当实体的装甲栏装上/卸下了一个装备时触发
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 装上/卸下装备的实体 |
item_stack | ItemStackObject | 被装备的物品。如果是被卸下的,则标识符为”minecraft:undefined” |
加入版本:1.9.0.3
minecraft:entity_start_riding
当实体乘上另一个实体时触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 乘坐者 |
ride | EntityObject | 被乘坐的实体 |
加入版本:1.9.0.3
minecraft:entity_stop_riding
当实体停止乘坐另一个实体时,触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 被乘坐的实体 |
exit_from_rider | Boolean | 是否为乘坐者自行决定停止骑行的 |
entity_is_being_destroyed | Boolean | 是否因为乘坐者死亡而停止骑行的 |
switching_rides | Boolean | 是否是因为乘坐者乘上了其他实体 |
加入版本:1.9.0.3
minecraft:entity_tick
每个实体每tick都会触发此事件,玩家实体除外
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 触发此事件的实体 |
加入版本:1.12.0.2
minecraft:entity_use_item
当实体使用物品时触发
属性
名称 | 类型 | 描述 |
---|---|---|
entity | EntityObject | 使用物品的实体 |
item_stack | ItemStackObject | 将要被使用的物品 |
use_method | String | 使用物品的方式 “place” -> 放置。放置方块/怪物蛋等 “interact” -> 交互。使用骨粉等 “pour_bucket” -> 放置水桶、岩浆桶、鱼桶 “fill_bucket” -> 往桶装水/岩浆/鱼、往炼药锅装水 待补充… |
加入版本:1.9.0.3
minecraft:player_attacked_entity
当玩家攻击实体时,触发此事件
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 玩家 |
attacked_entity | EntityObject | 被攻击的实体 |
加入版本:1.12.0.2
minecraft:player_destroyed_block
当玩家破坏了一个方块时触发(创造模式直接破坏不会触发)
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 破坏该方块的玩家 |
block_position | Object | 被放置的方块的坐标,包含x, y, z三个属性 |
block_identifier | String | 方块的标识符 |
加入版本:1.12.0.2
minecraft:piston_moved_block
当活塞移动方块时触发
属性
名称 | 类型 | 描述 |
---|---|---|
piston_position | Object | 活塞主体(非活塞臂)的坐标 |
block_position | Object | 移动后的方块坐标 |
piston_action | String | 活塞移动方块的方式 “extended” -> 推动 “retracted” -> 拉回 |
加入版本:1.12.0.2
minecraft:play_sound
当播放了一段音效时会触发
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
sound | String | 声音的标识符 | |
volume | Decimal | 1.0 | 音量 |
pitch | Decimal | 1.0 | 音高 |
position | Vector [a, b, c] | [0, 0, 0] | 播放声音的坐标 |
加入版本:1.12.0.2
minecraft:player_placed_block
当玩家放置一个方块时触发
属性
名称 | 类型 | 描述 |
---|---|---|
player | EntityObject | 放置该方块的玩家 |
block_position | Object | 被放置的方块的坐标,包含x, y, z三个属性 |
加入版本:1.10.0.3
minecraft:weather_changed
当天气发生变化的时候触发
属性
名称 | 类型 | 描述 |
---|---|---|
dimension | String | 天气发生变化的世界维度(主世界、末地、地狱等) |
raining | Boolean | 新天气是否有雨 |
lightning | Boolean | 新天气是否有闪电 |
可触发事件
加入版本:1.9.0.3
minecraft:display_chat_event
在服务端向所有玩家的聊天框发送一条消息
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
message | String | 要发送的消息 |
加入版本:1.9.0.3
minecraft:execute_command
在服务端执行一条斜杠指令
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
command | String | 要执行的指令(不带斜杠) |
加入版本:1.12.0.2
minecraft:play_sound
播放一段音效
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
sound | String | 要播放的音效的标识符 | |
volume | Decimal | 1.0 | 音量 |
pitch | Decimal | 1.0 | 音高 |
position | Vector [a, b, c] | [0, 0, 0] | 播放声音的坐标 |
加入版本:1.9.0.3
minecraft:spawn_particle_attached_entity
在服务端创建跟随实体的粒子效果,所有玩家都可见。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
effect | String | 粒子效果的标识符 | |
entity | EntityObject | 要附加到的实体的对象 | |
offset | Vector [a, b, c] | [0, 0, 0] | 粒子效果相对于实体中心的偏移 |
加入版本:1.9.0.3
minecraft:spawn_particle_in_world
在服务端创建静态粒子效果,所有玩家都可见。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
effect | String | 粒子效果的标识符 | |
offset | Vector [a, b, c] | [0, 0, 0] | 粒子效果的坐标 |
加入版本:1.12.0.2
minecraft:script_logger_config
此事件用于为服务器脚本打开和关闭各种级别的日志记录。请注意,打开/关闭日志记录不仅限于广播事件的脚本,它将影响所有服务器脚本,包括应用于世界的其他行为包中的脚本。有关日志记录的详细信息,请参阅“调试”部分。
属性
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
log_errors | Boolean | false | 是否记录error级别的日志 |
log_warnings | Boolean | false | 是否记录warning级别的日志 |
log_information | Boolean | false | 是否记录information级别的日志 |