天境辅助实体

基本信息

本页收录不进入生物群系刷怪表、供玩法系统使用的 5 个实体。

注册名 实体 ID 类 基类 碰撞箱 用途
aether_legacy:floating_block 25 EntityFloatingBlock Entity 0.98 × 0.98 浮空方块(重力矿石等)
aether_legacy:tnt_present 26 EntityTNTPresent Entity 0.98 × 0.98 节日炸弹
aether_legacy:mini_cloud 24 EntityMiniCloud EntityFlying 0.5 × 0.45 迷你境云
aether_legacy:parachute 31 EntityParachute Entity 1.0 × 1.0 跳伞伞体
aether_legacy:aether_item 32 EntityAetherItem EntityItem — 特殊的掉落物实体

功能

浮空方块(EntityFloatingBlock)

天境的浮空方块机制载体,实现 IEntityAdditionalSpawnData(EntityFloatingBlock.java:19)以便同步方块数据。关联的方块基类是 com.gildedgames.the_aether.blocks.util.BlockFloating —— 天境中重力矿石与魔淬重力晶矿都基于它(见天境矿石)。

物理逻辑(onUpdate,EntityFloatingBlock.java:53-66):

if (this.getBlock() == null || this.getBlock() == Blocks.air) { ... }
this.motionY += 0.04D;
this.moveEntity(this.motionX, this.motionY, this.motionZ);
this.motionX *= 0.9800000190734863D;
this.motionY *= 0.9800000190734863D;

即持续的向上加速度 0.04/tick 配合 0.98 的速度阻尼,让方块在浮空岛下方悬浮而不落地。构造时速度归零(EntityFloatingBlock.java:41)。

节日炸弹(EntityTNTPresent)

EntityTNTPresent 是圣诞节内容的爆炸物,fuse 字段会被写入与读出 NBT(EntityTNTPresent.java 的 writeEntityToNBT / readEntityFromNBT),因此爆炸倒计时能正确存档。

onUpdate(EntityTNTPresent.java:41-61):

  1. 重力 -0.04D/tick,速度阻尼 0.98
  2. 落地时 motionY *= -0.5D(弹跳)
  3. fuse 递减到 0 时服务端 setDead() 并 explode()
  4. 未到 0 时每 tick 生成 smoke 粒子

爆炸强度 0.4(EntityTNTPresent.java:64):

float f = 0.4F;
this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, f, true);

getShadowSize() 返回 0.0F(EntityTNTPresent.java),即不渲染影子。

迷你境云(EntityMiniCloud)

EntityMiniCloud extends EntityFlying(EntityMiniCloud.java:16),实现 IEntityAdditionalSpawnData,碰撞箱 0.5 × 0.45(:33),可飞行。

跳伞伞体(EntityParachute)

EntityParachute 由玩家使用云落伞跳伞时生成,实现 IEntityAdditionalSpawnData(EntityParachute.java:15),碰撞箱 1.0 × 1.0(:24)。类中引用了 explode 音效(EntityParachute.java:52),用于落地或失效。

伞体的颜色由伞的种类决定 —— ItemAetherParachute.java:30 把 this == ItemsAether.golden_parachute 的布尔值传给 EntityParachute 构造,因此金黄伞与寒风伞的伞体外观不同。

特殊掉落物实体(EntityAetherItem)

EntityAetherItem extends EntityItem(EntityAetherItem.java:7),只有 26 行,唯一的覆写是:

@Override
public boolean isEntityInvulnerable() {
    return true;
}

(EntityAetherItem.java:22-25)即天境掉落物实体免疫一切伤害(火焰、爆炸、虚空等都无法摧毁)。它与原版 EntityItem 的区别仅在于此。

数值

数值名 值 来源
浮空方块碰撞箱 0.98 × 0.98 EntityFloatingBlock.java:32
浮空方块上升加速度 +0.04/tick EntityFloatingBlock.java:63
浮空方块速度阻尼 0.98 EntityFloatingBlock.java:65-66
炸弹碰撞箱 0.98 × 0.98 EntityTNTPresent.java:15
炸弹重力 -0.04/tick EntityTNTPresent.java:45
炸弹落地弹跳系数 -0.5 EntityTNTPresent.java:51
炸弹爆炸强度 0.4 EntityTNTPresent.java:64
炸弹影子大小 0.0 EntityTNTPresent.java getShadowSize
迷你境云碰撞箱 0.5 × 0.45 EntityMiniCloud.java:33
伞体碰撞箱 1.0 × 1.0 EntityParachute.java:24
天境物品实体免疫伤害 是 EntityAetherItem.java:22-25

交互

实体 交互
浮空方块 只能用镐采下方块;掉落物即浮空方块
炸弹 落地弹跳,冒烟,引信到时爆炸
伞体 玩家跳伞时生成,落地消失
天境物品实体 无法被任何伤害摧毁

相关条目