Guardian Snowman

基本信息

属性 值
注册名 EMT:archer
源码类 EntityArcher(emt/entity/EntityArcher.java)
显示名 Guardian Snowman
更新频率 / 追踪范围 80 / 3(emt/init/EMTEntities.java:34)

⚠️ 刷怪蛋双重注册缺陷

EntityArcher 是全模组唯一被注册两次刷怪蛋的实体:

// EMTEntities.java:34 —— registerModEntity 内部已分配 egg
EntityRegistry.registerModEntity(EntityArcher.class, "archer", entityIDs++, EMT.instance, 80, 3, true);
// EMTEntities.java:35 —— 随后又手工注册一次
registerEntityEgg(EntityArcher.class, 0x99111F, 0xE5685);

registerEntityEgg 用的是独立的 ID 空间(private static int startEID = 300; 起递增,EMTEntities.java:16),与 entityIDs++ 产生的 ID 不一定相同:

序列 机制 产出
entityIDs(初值 0) EntityRegistry 内部 ID 空间 一个刷怪蛋
startEID(初值 300) 手工 EntityList.IDtoClassMapping 第二个刷怪蛋

getUniqueEntityID() 会跳过已被占用的 ID(EntityList.getStringFromID(startEID) != null 时递增),所以两个 ID 不同 → 雪人在刷怪蛋选择界面出现两个条目,指向同一个 EntityArcher 类。

刷怪蛋颜色

主色 次色
0x99111F 0xE5685

⚠️ 次色 0xE5685 是 5 位十六进制数,超过 24-bit 颜色范围。EntityEggInfo 接受 int 传参故不会崩溃,但该值超出合法 RGB 编码,写入刷怪蛋贴图时行为未定义。这是源码中真实存在的数值异常,不是笔误转述。

相关条目