弹射物¶
本文介绍minecraft:projectile行为包组件的全部字段,以及如何制作自定义弹射物实体。
注意
此组件的文档大部分来自对原版实体的反向工程分析,请以实际测试结果为准。
顶层字段¶
on_hit 行为¶
on_hit对象定义了弹射物命中时触发的一个或多个行为:
arrow_effect¶
赋予目标箭矢效果(具体行为待明确)。
teleport_owner¶
将发射者传送到命中位置。
catch_fire¶
点燃目标(具体行为待明确)。
ignite¶
点燃目标(具体行为待明确)。
remove_on_hit¶
命中任何物体后销毁弹射物。
douse_fire¶
熄灭目标身上的火焰(具体行为待明确)。
impact_damage¶
命中时对目标造成伤害:
| 字段 | 类型 | 说明 |
|---|---|---|
damage | Integer 或 [min, max] | 伤害值,可以是固定值或范围 |
knockback | Boolean | 是否击退 |
catch_fire | Boolean | 是否点燃目标 |
max_critical_damage | Decimal | 最大暴击伤害 |
min_critical_damage | Decimal | 最小暴击伤害 |
power_multiplier | Decimal | 速度对伤害的乘数 |
semi_random_diff_damage | Boolean | 基于伤害和速度随机化伤害值 |
channeling | Boolean | 召唤闪电 |
filter | String | 仅影响指定标识符的实体 |
destroy_on_hit | Boolean | 命中后销毁弹射物 |
definition_event¶
命中时触发指定事件:
| 字段 | 类型 | 说明 |
|---|---|---|
affect_projectile | Boolean | 对弹射物本身触发事件 |
affect_shooter | Boolean | 对发射者触发事件 |
affect_target | Boolean | 对被命中实体触发事件 |
affect_splash_area | Boolean | 对区域内所有实体触发事件 |
splash_area | Decimal | 区域半径 |
event_trigger | Object | 事件对象(含event、target、filters字段) |
stick_in_ground¶
命中后插入地面:
| 字段 | 类型 | 说明 |
|---|---|---|
shake_time | Decimal | 插入后的震动时间 |
spawn_aoe_cloud¶
命中后生成区域效果云:
| 字段 | 类型 | 说明 |
|---|---|---|
radius | Decimal | 云的半径 |
radius_on_use | Decimal | 每次施加效果后半径变化量 |
potion | Integer | 药水效果ID(见下方药水ID表) |
particle | String | 粒子发射器名称;"dragonbreath"允许玻璃瓶收集 |
duration | Integer | 云存在时间(秒) |
color | [r, g, b] | 粒子颜色 |
affect_owner | Boolean | 是否对发射者施加效果 |
reapplication_delay | Integer | 效果再次施加的间隔(刻) |
药水ID表¶
| 药水 | 普通 | 延长 | 增强(II级) |
|---|---|---|---|
| 水瓶 | 0 | — | — |
| 粗制药水 | 1 | 2 | — |
| 浑浊药水 | 3 | — | — |
| 奇怪药水 | 4 | — | — |
| 夜视药水 | 5 | 6 | — |
| 隐身药水 | 7 | 8 | — |
| 跳跃药水 | 9 | 10 | 11 |
| 防火药水 | 12 | 13 | — |
| 迅捷药水 | 14 | 15 | 16 |
| 迟缓药水 | 17 | 18 | — |
| 水下呼吸药水 | 19 | 20 | — |
| 治疗药水 | 21 | — | 22 |
| 伤害药水 | 23 | — | 24 |
| 剧毒药水 | 25 | 26 | 27 |
| 再生药水 | 28 | 29 | 30 |
| 力量药水 | 31 | 32 | 33 |
| 虚弱药水 | 34 | 35 | — |
| 衰变药水 | 36 | — | — |
| 神龟药水 | 37 | 38 | 39 |
| 缓降药水 | 40 | 41 | — |
| 迟缓IV药水 | 42 | — | — |
spawn_chance¶
命中时有概率生成实体:
| 字段 | 类型 | 说明 |
|---|---|---|
first_spawn_percent_chance | Decimal | 第一次生成的概率 |
second_spawn_percent_chance | Decimal | 第二次生成的概率 |
first_spawn_count | Integer | 第一次生成的数量 |
second_spawn_count | Integer | 第二次生成的数量 |
spawn_definition | String | 要生成的实体标识符 |
spawn_baby | Boolean | 是否生成幼年形态 |
particle_on_hit¶
命中时生成粒子:
| 字段 | 类型 | 说明 |
|---|---|---|
particle_type | String | 粒子发射器名称 |
num_particles | Integer | 粒子数量 |
on_entity_hit | Boolean | 命中实体时生成 |
on_other_hit | Boolean | 命中其他物体时生成 |
mob_effect¶
命中时对目标施加状态效果:
| 字段 | 类型 | 说明 |
|---|---|---|
effect | String | 状态效果标识符 |
duration | Integer | 效果持续时间(刻) |
durationeasy | Integer | 简单难度下的持续时间(刻) |
durationnormal | Integer | 普通难度下的持续时间(刻) |
durationhard | Integer | 困难难度下的持续时间(刻) |
amplifier | Integer | 效果等级 |
ambient | Boolean | 是否为环境效果(粒子半透明) |
visible | Boolean | 是否显示粒子 |
grant_xp¶
命中时生成经验球(而非直接给予经验):
| 字段 | 类型 | 说明 |
|---|---|---|
minXP | Integer | 最小经验值 |
maxXP | Integer | 最大经验值 |
xp | Integer | 固定经验值(设置后忽略min/max) |
freeze_on_hit¶
| 字段 | 类型 | 说明 |
|---|---|---|
shape | String | "sphere"或"cube" |
snap_to_block | Boolean | 对齐到方块 |
size | Integer | 冻结范围大小 |
注意事项¶
创建自定义弹射物(如自定义箭矢、三叉戟变体或全新弹射物)时,建议设置合适的运行时标识符,否则可能出现视觉异常、击退方向错误或可以徒手击杀箭矢等问题。