渲染与生成

[!INFO] 注册真源:client/ClientProxy.java:36-51、_SpecialMobs.java:166-358

渲染注册(16 个)

ClientProxy.registerRenderers() 用 RenderingRegistry.registerEntityRenderingHandler 注册:

12 个替换种渲染器(每个 MONSTER_KEY 一个):

注册名 渲染器
Entity_SpecialBlaze RenderSpecialBlaze
Entity_SpecialCaveSpider RenderSpecialSpider
Entity_SpecialCreeper RenderSpecialCreeper
Entity_SpecialEnderman RenderSpecialEnderman
Entity_SpecialGhast RenderSpecialGhast
Entity_SpecialPigZombie RenderSpecialZombie
Entity_SpecialSilverfish RenderSpecialSilverfish
Entity_SpecialSkeleton RenderSpecialSkeleton
Entity_SpecialSlime RenderSpecialSlime
Entity_SpecialSpider RenderSpecialSpider
Entity_SpecialWitch RenderSpecialWitch
Entity_SpecialZombie RenderSpecialZombie

[!NOTE] 渲染器按基类注册,94 个亚种变体共用其父种的渲染器 —— 因此只有 12 个渲染器而非 106 个。CaveSpider 复用 Spider 的 RenderSpecialSpider,PigZombie 与 Zombie 共用 RenderSpecialZombie。

4 个额外渲染器:EntitySpecialFishHook → RenderSpecialFishHook、EntitySpecialSpitball → RenderSpecialSpitball、EntityLavaMonster → RenderLavaMonster,以及纹理动态替换用的爆炸/纹理消息(network/)。

刷怪蛋机制

registerMobs() 开头通过反射抢占原版刷怪蛋 id(_SpecialMobs.java:170-175):

eggIdClaimer = EntityRegistry.class.getDeclaredMethod("validateAndClaimId", int.class);
eggIdClaimer.setAccessible(true);

受 Properties.GENERAL/spawn_eggs 开关控制。抢占成功后,每个变体在 :275 用 EntityRegistry.findGlobalUniqueEntityId() 分配全局唯一蛋 id,并按 MONSTER_KEY_COLORS[](12 个基种色)与 MONSTER_TYPE_COLORS[][](94 个亚种色)着色 —— 这两个颜色数组与 MONSTER_KEY/MONSTER_TYPES 严格一一对应。

LavaMonster 生成

LavaMonster 无条件注册,但其生成受配置控制:允许生成的群系列表在 _SpecialMobs.java:340-353 逐个列出(BiomeGenBase.extremeHills、extremeHillsEdge、forest、forestHills、taiga、taigaHills、swampland、river、frozenRiver、icePlains、iceMountains、beach、jungle、jungleHills)。

[!NOTE] 注意这是白名单(14 个群系)。想在地狱/下界生成需自行改配置,默认不在列表内。

关联:特殊生物总表 · 配置项