本条基于 Minecraft 1.20.1 + Forge,Mojang 映射名。
Iterable.forEach(java.lang.Iterable#forEach(Consumer))是 Java 8 加入的默认方法,对每个元素执行给定操作。
与实体储存的关系
LevelEntityGetter.getAll()返回Iterable<T>,实际是 EntityLookup 中byId.values()的只读包装(GuavaIterables.unmodifiableIterable)。- EntityCommand(/forge entity list)就是用
level.getEntities().getAll().forEach(e -> ...)统计实体,统计结果完全取决于byId里有什么。 - 客户端 LevelRenderer 对
ClientLevel.entitiesForRendering()(同样是getAll())用的是增强 for 循环,走iterator()而不是forEach。 - EntityTickList 自带的
forEach(Consumer)只是同名方法,遍历的是 tick 名单。
备注
因为是只读包装,不能通过 getAll() 的迭代器删除实体。