本条基于 Minecraft 1.20.1 + Forge,Mojang 映射名。
LevelRenderer(net.minecraft.client.renderer.LevelRenderer)是客户端的世界渲染器,renderLevel() 负责每帧绘制方块、实体、粒子等。
实体渲染链路
renderLevel() → ClientLevel.entitiesForRendering() → getEntities().getAll()(LevelEntityGetterAdapter)→ EntityLookup 的 byId → 视锥剔除 → EntityRenderDispatcher 绘制
与实体储存的关系
- 只读客户端自己的实体表,和服务端 ServerLevel 的存储没有直接关系;客户端实体由网络包同步而来。
- 遍历用的是增强 for 循环(见 Iterable.forEach)。
- 不读 EntityTickList:不 tick 的实体照样会被渲染。
- 实体从 EntityLookup 中移除后就不会再被遍历,也就不会被画出来。