User Tools

Site Tools


zh_cn:tutorial:registry

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
zh_cn:tutorial:registry [2024/08/27 05:07] – [注册表键] solidblockzh_cn:tutorial:registry [2025/12/13 17:41] (current) peqb
Line 1: Line 1:
 ====== 注册表介绍 ====== ====== 注册表介绍 ======
  
-Minecraft 使用**注册表系统**处理游戏内的几乎一些,作为模组开发者,需要将添加到游戏的绝大多数内容注册进去,这有利于+Minecraft 使用**注册表系统**处理游戏内的几乎所有内容,作为模组开发者,需要将添加到游戏的绝大多数内容注册进去,这样做的好处是
   * 让游戏知道你的内容存在   * 让游戏知道你的内容存在
   * 在客户端和服务器之间验证游戏内容   * 在客户端和服务器之间验证游戏内容
Line 15: Line 15:
 ===== 注册表类型 ===== ===== 注册表类型 =====
  
-注册内容时,你需要指定将内容加入哪个注册表。基本的游戏提供所有原版内容的注册表,可以在 ''Registries''(1.19.3 以上)或 ''Registry''(1.19.2 以下)中找到。+注册内容时,你需要指定将内容加入哪个注册表。游戏本身(原版)提供所有基础内容的注册表,可以在 ''Registries''(1.19.3 以上)或 ''Registry''(1.19.2 以下)中找到。
  
 例如,你很有可能会使用用于物品的 ''Registries.ITEM''(1.19.3 以上)/''Registry.ITEM''(1.19.2 以下)和用于方块的 ''Registries.BLOCK''(1.19.3 以上)/''Registry.BLOCK''(1.19.2 以下)。 例如,你很有可能会使用用于物品的 ''Registries.ITEM''(1.19.3 以上)/''Registry.ITEM''(1.19.2 以下)和用于方块的 ''Registries.BLOCK''(1.19.3 以上)/''Registry.BLOCK''(1.19.2 以下)。
Line 23: Line 23:
 ===== 基本用法  ===== ===== 基本用法  =====
 ==== 注册你的内容 ==== ==== 注册你的内容 ====
-使用 ''<yarn class_2378>.<yarn method_10230>'' 将你的内容注册到注册表。记住每个内容不注册超过 1 次。基本的语法是:+使用 ''<yarn class_2378>.<yarn method_10230>'' 将你的内容注册到注册表。注意同一内容不可重复注册。基本的语法是:
  
 <code java> <code java>
Line 60: Line 60:
 ==== 获取对象的 ID ==== ==== 获取对象的 ID ====
  
-''<yarn method_10221>'' 返回注册表内与对象关联的 ''<yarn class_2960>'',如果这个项不存在, ''<yarn class_2348>'' 返回默认的注册表 ID,''<yarn class_2370>'' 返回 null。例如:+''<yarn method_10221>'' 返回注册表内与对象关联的 ''<yarn class_2960>'',如果项不存在, ''<yarn class_2348>'' 返回默认的注册表 ID,''<yarn class_2370>'' 返回 null。例如:
  
 <code java> <code java>
Line 69: Line 69:
  
 ==== 注册表键 ===== ==== 注册表键 =====
-有些类型的注册表不是静态存储在 ''Registries'' 类中的。例如,你无法在 ''Registries'' 类中找到生物群系的注册表或战利品表的注册表。但是这些注册表在 Minecraft 中确实存在,这是因为这些注册表是//动态//的:在不同世界之间加载,因为是由数据包定义。相比之下,//静态//的注册表,例如 ''Registries.ITEM'' 和 ''Regitries.BLOCK''不是由数据包定义的,所以不管在哪个世界都保持不变。+有些类型的注册表不是静态存储在 ''Registries'' 类中的。例如,你无法在 ''Registries'' 类中找到生物群系的注册表或战利品表的注册表。但是这些注册表在 Minecraft 中确实存在,这是因为这些注册表是//动态//的:在不同世界之间加载,因为是由数据包定义。相比之下,//静态//的注册表,例如 ''Registries.ITEM'' 和 ''Regitries.BLOCK'',不是由数据包定义的,所以不管在哪个世界都保持不变。
  
 但是,每个注册表都有个**注册表键**(''RegistryKey''),可以在 ''RegistrKeys'' 类中找到。可以通过 ''RegistryWrapper.WrapperLookup''(如果有 ''World'' 对象,通常是 ''world.getRegistryManager'',注册[[commands|命令]]时则通常是 ''CommandRegistryAccess'')对象根据注册表键找到注册表。参见下面的例子,假设你有 ''World'' 对象。 但是,每个注册表都有个**注册表键**(''RegistryKey''),可以在 ''RegistrKeys'' 类中找到。可以通过 ''RegistryWrapper.WrapperLookup''(如果有 ''World'' 对象,通常是 ''world.getRegistryManager'',注册[[commands|命令]]时则通常是 ''CommandRegistryAccess'')对象根据注册表键找到注册表。参见下面的例子,假设你有 ''World'' 对象。
zh_cn/tutorial/registry.txt · Last modified: 2025/12/13 17:41 by peqb