特殊生物总表

[!INFO] 注册真源:_SpecialMobs.java:161 registerMobs() 数据源:_SpecialMobs.java:65 MONSTER_KEY[]、:68 MONSTER_TYPES[][]

Special Mobs 不添加全新生物,而是为 12 种原版敌对生物各提供 1 个替换种 + N 个亚种变体。

[!IMPORTANT] 注册是双层循环 + 反射加载类名,不能用 grep registerModEntity 计数。循环体内只有 1 处 EntityRegistry.registerModEntity 调用(_SpecialMobs.java:240 与 :269),但实际注册 106 个实体。

类名由字符串拼接而成:toast.specialMobs.entity.<key小写>.Entity_Special<Key> 与 Entity<变体名><Key>。任一类缺失只会静默 ClassNotFoundException 跳过(:252 打印 debug),不报错。

完整清单(106 个)

原版生物 MONSTER_KEY 亚种数 实体总数 亚种名
烈焰人 Blaze 8 9 Cinder, Conflagration, Ember, Hellfire, Inferno, Jolt, Smolder, Wildfire
洞穴蜘蛛 CaveSpider 6 7 Baby, Flying, Mother, Tough, Web, Witch
苦力怕 Creeper 14 15 Armor, Dark, Death, Dirt, Doom, Drowning, Ender, Fire, Gravel, Gravity, Jumping, Lightning, Mini, Splitting
末影人 Enderman 7 8 Blinding, Cursed, Icy, Lightning, Mini, Mirage, Thief
恶魂 Ghast 7 8 Baby, Faint, Fighter, King, Mini, Queen, Unholy
猪灵 PigZombie 6 7 Brutish, Fishing, Giant, Hungry, Plague, Vampire
蠹虫 Silverfish 5 6 Blinding, Fishing, Flying, Poison, Tough
骷髅 Skeleton 9 10 Brutish, Fire, Gatling, Giant, Ninja, Poison, Sniper, Spitfire, Thief
史莱姆 Slime 7 8 Blackberry, Blueberry, Caramel, Grape, Lemon, Strawberry, Watermelon
蜘蛛 Spider 13 14 Baby, Desert, Flying, Ghost, Giant, Hungry, Mother, Pale, Poison, Small, Tough, Web, Witch
女巫 Witch 6 7 Domination, Rage, Shadows, Undead, Wilds, Wind
僵尸 Zombie 6 7 Brutish, Fire, Fishing, Giant, Hungry, Plague
合计 12 94 106

亚种最多的三种:Creeper 14 种、Spider 13 种、Skeleton / Blaze 各 8–9 种。

命名规则

  • 替换种:注册名 Special<Key>,类 Entity_Special<Key>(如 SpecialCreeper)
  • 亚种:注册名 <变体名><Key>,类 Entity<变体名><Key>(如 JumpingCreeper、PoisonSpider)

额外注册实体(3 个)

在双层循环之外单独注册:

注册名 类 位置
SMFishHook EntitySpecialFishHook _SpecialMobs.java:308
SMSpitball EntitySpecialSpitball _SpecialMobs.java:309
LavaMonster EntityLavaMonster _SpecialMobs.java:357

实体注册总计 109 个。

[!WARNING] 源缺陷:_SpecialMobs.java:311 有一行被注释掉的注册 // EntityRegistry.registerModEntity(EntitySpecialFireball.class, "SMFireball", id++, this, 64, 10, true);,而 EntitySpecialFireball 类在仓库中根本不存在。这是「注释掉的示例代码」与「引用不存在的类」叠加 —— 统计实体数时若把它算进去会多出 1 个既未注册也无实现的幽灵实体。

辅助类(非独立实体)

entity/ 下另有 4 个不单独注册的类:

类 继承 用途
EntityAILavaMonsterAttack EntityAIBase LavaMonster 的 AI 目标
EntityAINinja EntityAIBase Ninja 骷髅的 AI 目标
EntityMeleeGhast Entity_SpecialGhast Ghast 变体的近战行为混入
EntityMountGhast Entity_SpecialGhast Ghast 变体的骑乘行为混入

这解释了「文件数 113 > 注册数 106」的差额:entity/ 下 Entity*.java 共 113 个 = 106 注册实体 + 3 额外注册 + 4 辅助类。

关联:配置项 · 兼容适配 · 网络消息