本条基于 Minecraft 1.20.1 + Forge,Mojang 映射名。
EntityLookup<T>(net.minecraft.world.level.entity.EntityLookup)是实体真正的主表,LevelEntityGetterAdapter 的 visibleEntities 就是它。
结构
byId:Int2ObjectMap(Int2ObjectLinkedOpenHashMap),实体 ID → 实体byUuid:Map(HashMap),UUID → 实体add/remove同时更新两份索引,由实体管理器的startTracking/stopTracking调用(与 LevelCallback 的onTrackingStart/onTrackingEnd同处)。
所在链路
- say @e:EntitySelector 按类型遍历
byId,按 UUID 查byUuid - /forge entity list:EntityCommand 遍历
getAllEntities() - LevelRenderer:LevelRenderer 通过
ClientLevel.entitiesForRendering()遍历getAllEntities()
备注
与 EntityTickList 是两套独立的容器:这里决定实体能否被查到、被渲染,那里只决定是否被 tick。