资源标识

资源

资源是游戏使用的额外数据,存储在数据文件中,而不是代码中。Minecraft 主要有两个资源系统:逻辑客户端用于模型、纹理和本地化等视觉内容的 assets,以及逻辑服务端用于配方和战利品表等游戏内容的 data。资源包控制前者,数据包控制后者。

Mod 资源目录中 assets 与 data 的职责分工及 ResourceLocation 命名空间与路径

原创说明图,依据 Forge 1.21.x 官方文档 绘制。

在默认 Mod 开发工具包中,assets 和 data 目录位于项目的 src/main/resources 下。

启用多个资源包或数据包时,它们会被合并。一般来说,堆栈上层包中的文件会覆盖下层文件;但对于本地化文件和标签等某些文件,实际会合并其内容。Mod 在自己的 resources 目录中定义资源包和数据包,但它们被视为“Mod Resources”包的子集。Mod 资源包不能禁用,但可被其他资源包覆盖。Mod 数据包可以使用原版 /datapack 命令禁用。

所有资源路径和文件名都应使用蛇形命名(小写字母,单词之间用 _ 分隔);1.11 及以上版本强制执行这一规则。

ResourceLocation

Minecraft 使用 ResourceLocation 标识资源。一个 ResourceLocation 包含命名空间和路径两部分,通常指向 assets/<namespace>/<ctx>/<path> 中的资源,其中 ctx 是根据 ResourceLocation 的使用方式而定的上下文路径片段。以字符串读写时,其形式为 <namespace>:<path>。如果省略命名空间和冒号,读取为 ResourceLocation 时命名空间始终默认为 "minecraft"。

Mod 应当将资源放在与 Mod ID 同名的命名空间中。例如,ID 为 examplemod 的 Mod 应分别把资源放在 assets/examplemod 和 data/examplemod 中,指向这些文件的 ResourceLocation 形如 examplemod:<path>。这不是强制要求;在某些情况下使用不同的命名空间,甚至多个命名空间,可能更合适。ResourceLocation 也用于资源系统之外,因为它很适合唯一标识对象,例如注册表。

原文:Resources。