天境投射物
基本信息
天境投射物共 8 个注册实体,全部在 EntitiesAether.initialization() 的 :81-98 注册。
| 注册名 | 实体 ID | 类 | 基类 | 碰撞箱 | 伤害 |
|---|---|---|---|---|---|
aether_legacy:golden_dart |
15 | EntityDartGolden |
EntityDartBase |
0.5 × 0.5 | 4 |
aether_legacy:poison_dart |
16 | EntityDartPoison |
EntityDartBase |
0.5 × 0.5 | 0(靠毒) |
aether_legacy:enchanted_dart |
17 | EntityDartEnchanted |
EntityDartBase |
0.5 × 0.5 | 6 |
aether_legacy:poison_needle |
18 | EntityPoisonNeedle |
EntityDartPoison |
继承 | 1 |
aether_legacy:crystal |
19 | EntityCrystal |
EntityFlying |
0.9 × 0.9 | 5 |
aether_legacy:phoenix_arrow |
27 | EntityPhoenixArrow |
EntityArrow |
— | 继承原版箭 |
aether_legacy:zephyr_snowball |
28 | EntityZephyrSnowball |
EntityProjectileBase |
0.25 × 0.25 | — |
aether_legacy:hammer_projectile |
29 | EntityHammerProjectile |
EntityProjectileBase |
0.25 × 0.25 | — |
aether_legacy:lightning_knife |
30 | EntityLightningKnife |
EntityProjectileBase |
0.25 × 0.25 | — |
碰撞箱来源:EntityDartBase.java:49/:56、EntityCrystal.java:53、EntityProjectileBase.java:40。伤害来源:EntityDartGolden.java:22、EntityDartPoison.java:24、EntityDartEnchanted.java:22、EntityPoisonNeedle.java:20。
功能
飞镖系统
EntityDartBase(568 行)是天境飞镖的抽象基类,继承 EntityArrow 并实现 IProjectile, IThrowableEntity(EntityDartBase.java:30)。三把飞镖由它派生:
| 飞镖 | 伤害 | 附加效果 | 来源 |
|---|---|---|---|
| 金琥珀镖箭 | 4 | 无 | EntityDartGolden.java:22 |
| 魔能镖箭 | 6 | 无 | EntityDartEnchanted.java:22 |
| 剧毒镖箭 | 0 | 施加醉酒(Inebriation)I 级 500 tick | EntityDartPoison.java:24、:35 |
剧毒镖箭伤害为 0 —— 它的全部效果来自毒药:.addPotionEffect(new EffectInebriation(PotionInebriation.inebriation.id, 500, 0))(EntityDartPoison.java:35)。
毒针 EntityPoisonNeedle extends EntityDartPoison(EntityPoisonNeedle.java:8),因此继承全部毒效,但直接伤害降为 1(:20)。
醉酒效果(PotionInebriation)
PotionInebriation 是天境自定义药水(PotionInebriation.java:23,extends Potion):
- 构造时
super(AetherConfig.getInebriationId(), true, 0x51297B)(PotionInebriation.java:36) - 药水 ID 由配置项
Sets the id for the Inebriation effect决定,默认 31(AetherConfig.java:122-123) - 颜色
0x51297B(深紫) - 第二个参数
true表示负面效果 - 药水名
effect.aether.inebriation(PotionInebriation.java:38) - 图标复用原版染料 1 号的图标:
"iconcrack_" + Item.getIdFromItem(Items.dye) + "_" + 1(PotionInebriation.java:89)
水晶弹(EntityCrystal)
EntityCrystal extends EntityFlying(EntityCrystal.java:21),实现 IEntityAdditionalSpawnData。它有 4 种类型(EnumCrystalType.java:5-8),每种有不同的音效与粒子:
| 枚举 | 死亡音效 | 死亡粒子 | 爆炸音效 | 爆炸粒子 |
|---|---|---|---|---|
FIRE |
random.fizz |
largesmoke |
random.explode |
flame |
ICE |
dig.glass |
— | dig.glass |
snowshovel |
THUNDER |
— | — | — | — |
CLOUD |
dig.glass |
— | dig.glass |
snowshovel |
THUNDER 使用无参构造(EnumCrystalType.java:7),四个字段全部为空字符串。
水晶弹命中后造成 5 点伤害(EntityCrystal.java:196、:207、:212)并施加 虚弱 I 级 10 tick(Potion.weakness.id, 10)。伤害来源名:
CLOUD类型:"icey_ball"(EntityCrystal.java:200),且对IAetherBoss免疫(!(entity instanceof IAetherBoss),:203)THUNDER类型:"lightning_ball"(EntityCrystal.java:211),且只对当前攻击目标生效(entity == this.getAttackTarget(),:208),命中后把目标拉近(moveTowardsTarget(entity, -0.3D),:213)
通用投射物基类
EntityProjectileBase(325 行)承载 3 个投射物:EntityZephyrSnowball(西风雪球)、EntityHammerProjectile(飞锤)、EntityLightningKnife(惊雷飞刀)。碰撞箱 0.25 × 0.25(EntityProjectileBase.java:40)。
- 惊雷飞刀由惊雷飞刀物品发射(
ItemLightningKnife.java:43) - 西风雪球由西风生物发射
凤舞长弓箭
EntityPhoenixArrow extends EntityArrow 并实现 IThrowableEntity(EntityPhoenixArrow.java:17),继承原版箭的全部机制,由凤舞长弓发射。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 金琥珀镖箭伤害 | 4 | EntityDartGolden.java:22 |
| 魔能镖箭伤害 | 6 | EntityDartEnchanted.java:22 |
| 剧毒镖箭伤害 | 0 | EntityDartPoison.java:24 |
| 剧毒镖箭毒效 | 醉酒 I 级 500 tick | EntityDartPoison.java:35 |
| 毒针伤害 | 1 | EntityPoisonNeedle.java:20 |
| 飞镖碰撞箱 | 0.5 × 0.5 | EntityDartBase.java:49 |
| 水晶弹碰撞箱 | 0.9 × 0.9 | EntityCrystal.java:53 |
| 水晶弹伤害 | 5 | EntityCrystal.java:200(icey_ball)与 :211(lightning_ball) |
| 水晶弹虚弱效果 | I 级 10 tick | EntityCrystal.java:196 |
| 通用投射物碰撞箱 | 0.25 × 0.25 | EntityProjectileBase.java:40 |
| 醉酒药水 ID | 31(可配置) | AetherConfig.java:122-123 |
| 醉酒药水颜色 | 0x51297B |
PotionInebriation.java:36 |
| 醉酒效果时长 | 500 tick | EntityDartPoison.java:35 |
| 水晶弹类型数 | 4 | EnumCrystalType.java:5-8 |