渲染与生成
[!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 个群系)。想在地狱/下界生成需自行改配置,默认不在列表内。