Mmc秒杀圈百科 

实体注册表:查看版本 v1

由 朝武芳乃 于 2026-10-04 01:17 保存 · 1694 字节
''本条基于 Minecraft 1.20.1 + Forge,Mojang 映射名。'' '''实体注册表'''是登记所有'''实体类型'''(<code>EntityType</code>)的注册表。注意:它登记的是“类型”,不是世界里的实体实例。 == 位置 == * 原版:<code>BuiltInRegistries.ENTITY_TYPE</code>(<code>Registry<EntityType<?>></code>),键是 <code>minecraft:zombie</code> 这样的 <code>ResourceLocation</code>。 * Forge:<code>ForgeRegistries.ENTITY_TYPES</code>(<code>IForgeRegistry<EntityType<?>></code>),模组一般用 <code>DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, MODID)</code> 注册。 * 注册阶段结束后注册表会冻结,运行时无法再正常添加新类型。 == EntityType 里有什么 == 实体工厂(<code>EntityType.EntityFactory</code>)、碰撞箱尺寸、分类(<code>MobCategory</code>)、追踪距离与更新间隔等。生成实体时由 <code>EntityType.create(level)</code> 调用工厂创建实例。 == 与实体储存的区别 == * 实体实例存放在 [[EntityLookup]]、[[EntityTickList]] 等容器中(见 [[ServerLevel]]),与注册表无关;从注册表里拿不到“世界上有哪些实体”。 * 读档时,实体 NBT 里的 <code>id</code> 会先在注册表中查到 <code>EntityType</code>,再创建实体并加入上述容器。 == 所在链路 == * [[EntityCommand]](/forge entity list):用 <code>ForgeRegistries.ENTITY_TYPES.getKey(e.getType())</code> 把实体按类型名分组,过滤器匹配的也是注册表的键。 * [[EntitySelector]]:<code>@e[type=...]</code> 会把类型名解析为 <code>EntityType</code>,再作为 <code>EntityTypeTest</code> 过滤实体。

其他版本