Mmc秒杀圈百科 

实体注册表

由 朝武芳乃管理员 最后编辑于 2026-10-04 01:17 · 当前版本 v1
标签:技术正经内容forge
你尚未登录。登录后可编辑本页与创建新条目 —— 登录 或 注册账号。

本条基于 Minecraft 1.20.1 + Forge,Mojang 映射名。

实体注册表是登记所有实体类型(EntityType)的注册表。注意:它登记的是“类型”,不是世界里的实体实例。

位置

  • 原版:BuiltInRegistries.ENTITY_TYPE(Registry<EntityType<?>>),键是 minecraft:zombie 这样的 ResourceLocation。
  • Forge:ForgeRegistries.ENTITY_TYPES(IForgeRegistry<EntityType<?>>),模组一般用 DeferredRegister.create(ForgeRegistries.ENTITY_TYPES, MODID) 注册。
  • 注册阶段结束后注册表会冻结,运行时无法再正常添加新类型。

EntityType 里有什么

实体工厂(EntityType.EntityFactory)、碰撞箱尺寸、分类(MobCategory)、追踪距离与更新间隔等。生成实体时由 EntityType.create(level) 调用工厂创建实例。

与实体储存的区别

  • 实体实例存放在 EntityLookup、EntityTickList 等容器中(见 ServerLevel),与注册表无关;从注册表里拿不到“世界上有哪些实体”。
  • 读档时,实体 NBT 里的 id 会先在注册表中查到 EntityType,再创建实体并加入上述容器。

所在链路

  • EntityCommand(/forge entity list):用 ForgeRegistries.ENTITY_TYPES.getKey(e.getType()) 把实体按类型名分组,过滤器匹配的也是注册表的键。
  • EntitySelector:@e[type=...] 会把类型名解析为 EntityType,再作为 EntityTypeTest 过滤实体。
你对本条的回应 · 登录后可表态

讨论(0)

讨论不进入条目正文的版本历史,适合提出修改建议、指出问题或补充来源。
还没有人讨论这个条目。你可以提出修改建议、指出问题或补充来源。

发表话题

请先 登录 后再参与讨论。