MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

用户:MashKJo/1.21.1模组开发教程/3.注册:修订间差异

跳到导航 跳到搜索
无编辑摘要
无编辑摘要
无编辑摘要
第19行: 第19行:


之后,我们就可以调用方法#registryOrThrow来获取我们想要的注册表了,注意到其要求的唯一参数的类型是ResourceKey<? extends Registry<? extends E>>,这个实际上就是确定我们到底想要哪个注册项的注册表——体现为第二层泛型参数。实际上所有注册表都需要这么一个ResourceKey<Registry<?>>(注册表资源键,Registry Resource Key),用于标识它对应的注册项类型。所有注册表资源键(包括固有注册表和可写注册表)都可以在Registries类下找到。
之后,我们就可以调用方法#registryOrThrow来获取我们想要的注册表了,注意到其要求的唯一参数的类型是ResourceKey<? extends Registry<? extends E>>,这个实际上就是确定我们到底想要哪个注册项的注册表——体现为第二层泛型参数。实际上所有注册表都需要这么一个ResourceKey<Registry<?>>(注册表资源键,Registry Resource Key),用于标识它对应的注册项类型。所有注册表资源键(包括固有注册表和可写注册表)都可以在Registries类下找到。
== ResourceKey和ResourceLocation ==
ResourceKey分为两个部分:registryName和location,二者均为ResourceLocation。registryName我们暂且不做过多探讨,读者只需知道所有ResourceKey<Registry<?>>的registryName均为minecraft:root;location则代表该ResourceKey在这一registryName下的“唯一标识符”——是的,别被“location”“ResourceLocation”这种字眼蒙在鼓里了。
ResourceLocation分为两个String:namespace和path,转换成字符串形式即为<namespace>:<path>。默认的namespace即为minecraft,你在模组中自定义ResourceLocation的时候,该用的namespace就是你自己的模组的MODID了。
你可以通过ResourceLocation.fromNamespaceAndPath(namespace, path)来构造出一个ResourceLocation。特别地,如果你想指定namespace为默认值minecraft,可以直接调用#withDefaultNamespace。
ResourceLocation意为“资源路径”,它当然有指代一个具体资源文件的作用——具体地说,一个字符串形式为namespace:path的ResourceLocation实际上在通常情况下,代表一个位于路径assets/namespace/path的资源文件;例如,minecraft:textures/item/apple.png则代表路径为assets/minecraft/textures/item/apple.png的一个文件——即苹果的纹理文件。
当然,上面讲的只是一般的通用情况,实际应用中,Minecraft相关代码基本都会对ResourceLocation做一些中间处理,由此你可以根据当前的代码上下文,省略文件后缀名乃至一部分中间路径。因此读者遇到这种情况时,如果拿不准,最好先看看Minecraft的代码是怎么处理这个ResourceLocation的。
而当ResourceLocation应用于一个ResourceKey的location时,它则是起到“作为唯一标识符”的作用了。例如,物品注册表的资源键的location即为minecraft:item。也正因为这个用途,ResourceLocation在Yarn映射表中的名称为“Identifier”。
== 遍历注册表 ==
使用for-each循环即可。
行政员、​优秀编辑者、​界面管理员、​监督员、​管理员、​小部件编辑者
3,417

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单