1.19.2-3.6.17 版本后,AoA3的自定义爆炸系统被添加,用于优化原版爆炸,用于添加灵活度更高的其他爆炸。
爆炸信息
一个标准的AoA3自定义爆炸拥有以下爆炸信息数据:
中文名 | 变量名 | 释义 | 默认值 |
---|---|---|---|
基准损害 | baseDamage | 爆炸对周围实体造成的基准伤害值 爆炸对周围方块造成的基准破坏力 | 20 |
基准击退 | baseKnockback | 爆炸对周围实体造成的基准击退力 | 1 |
立方半径 | squareRadius | 爆炸对周围方块/实体的影响的计算方式,可以在水平、竖直方向上单独定义 一旦被填写,爆炸范围就会变成各棱与坐标轴平行的长方体,同时“半径”参数失效 | null |
半径 | radius | 爆炸对周围方块/实体的影响的计算方式 在“立方半径”未填写的情况下,爆炸范围是半径为该参数值的球体 | 10 |
穿透力度 | penetrationPower | 爆炸射线对周围方块的穿透能力 当爆炸射线穿透方块时,该项数值越大,爆炸射线被方块的削减越小 | 100 |
方块掉落概率 | blockDropChance | 被爆炸破坏的每个方块的掉落概率 | 1 |
爆炸音效 | explosionSound | 爆炸时发出的音效 | entity.generic.explode |
是否影响爆炸物来源 | affectsOwner | 是否会使爆炸发出者受到本次爆炸的影响 | false |
是否不伤害实体 | noEntityDamage | 是否不会对爆炸范围内的实体造成伤害 | false |
是否不击退实体 | noEntityKnockback | 是否不会对爆炸范围内的实体造成击退 | false |
是否不破坏方块 | noBlockDamage | 是否不会对爆炸范围内的方块造成破坏 | false |
单个游戏刻内爆炸完成 | singleTickExplosion | 是否会在一个游戏刻内完成本次爆炸的所有操作 | null |
若使用“半径”参数,则爆炸有效半径 = 半径
若使用“立方半径”参数,则爆炸有效半径 = ( 水平爆炸范围 + 竖直爆炸范围 ) / 2
一个标准的AoA3自定义爆炸拥有以下爆炸信息谓词:
中文名 | 谓词名 | 释义 | 默认值 |
---|---|---|---|
受影响实体谓词 | affectedEntityPredicate | 定义爆炸范围满足怎样条件的实体会被影响 | true |
受影响方块谓词 | affectedBlockPredicate | 定义爆炸范围满足怎样条件的方块会被影响 | true |
击退速度函数 | knockbackVelocityFunction | 定义被爆炸波及的实体会以怎样的速度计算击退 | 1 |
伤害倍率函数 | damageModFunction | 定义被爆炸波及的实体会以怎样的方式计算伤害 | 1 |
穿透倍率函数 | penetrationModFunction | 定义被爆炸波及的方块会以怎样的方式计算穿透 | 1 |
实体效果 | entityEffectConsumer | 定义被爆炸波及的实体会受到怎样的额外效果 | 无 |
方块效果 | blockEffectConsumer | 定义被爆炸波及的方块会受到怎样的额外效果 | 无 |
爆炸后函数 | afterExplodingFunction | 定义爆炸后额外产生的效果 | 无 |
粒子 | particleConsumer | 定义爆炸产生的粒子效果 | 爆炸有效半径 ≥ 4,且会破坏方块时,多次生成粒子效果 否则,只生成一次粒子效果,在单个游戏刻内生成完毕 |
爆炸条件
不满足以下爆炸条件的爆炸无法发生:
爆炸有效半径必须大于0,同时小于256,否则会报错。
爆炸必须至少满足“伤害实体”“击退实体”“破坏方块”三者之一,全不满足时报错。
爆炸对方块的效果
【以下内容仅记录默认情况下爆炸产生的效果,有可能其他位置被修改】
方块掉落
被爆炸破坏的方块会根据“方块掉落概率”决定是否抽取其战利品表。
抽取时,如果本次爆炸物来源/爆炸物为玩家,那么会算作玩家破坏了方块。
如果“单个游戏刻内爆炸完成”,那么方块的掉落物会在爆炸全部计算完毕后统一生成。
爆炸对实体的效果
【以下内容仅记录默认情况下爆炸产生的效果,有可能其他位置被修改】
影响实体的条件
在默认情况下,爆炸只能对其波及范围内、满足如下条件的实体产生影响:
不无视爆炸对其影响的
满足“受影响实体谓词”定义的条件的
非本次爆炸物来源的
非本次爆炸物的
持续性爆炸
AoA3自定义的爆炸系统可以使单次爆炸不在一个游戏刻内爆炸完成。
每个持续性爆炸都需要设置每个游戏刻尝试炸掉的方块数量。
持续性爆炸时,每个游戏刻都会尝试炸掉该数量的方块(默认1000个)。执行完毕后,会统一生成本次得到的掉落物。
每个游戏刻的爆炸产生的对方块的破坏力无法叠加,但是每一步爆炸都会影响这一步爆炸范围内的所有实体。
如果本次持续性爆炸已经爆炸超过30秒(600 tick),或爆炸波及范围内的方块已经全部被炸光,就不会继续爆炸。
在默认情况下,爆炸有效半径 ≤ 50格的爆炸会在单个游戏刻内爆炸完成,否则会持续多个游戏刻。
优势
相较于原版爆炸,AoA3自定义的爆炸系统有如下优势:
直接获取爆炸波及范围内的所有方块和实体,避免了“爆炸射线”因其离散的特性导致的问题。
使用了比原版爆炸更优的算法,拥有更高的自由度(如震击爆炸、破片爆炸),能有效降低卡顿。
资料分支: | 1.18 + |
资料分类: | 内部设定:世界型运算 |