天境投射物

基本信息

天境投射物共 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

相关条目