资源
资源是游戏使用的额外数据,它存储在数据文件中而不是代码中。资源包含在classpath的assets的目录中。该目录在默认的模组开发工具包中位于项目的src/main/resources目录下。它包括模型,纹理和本地化文件等内容。
启用多个资源包时,这几个资源包将合并。通常,堆栈顶部的资源包中的文件会覆盖栈内的内容; 但是,对于某些文件,例如本地化文件,数据实际上是按内容合并的。模组实际上也在其resources目录中定义了资源包,但它们被视为“默认”资源包的子集。模组资源包无法被禁用,但可以通过其他资源包覆盖它们。
所有资源都应具有蛇式命名法的路径和文件名(小写,对于单词边界使用“_”)(译者注:举例 example_mod_texture 即 snake_case),这在1.11及更高版本中是强制执行的。
ResourceLocation
Minecraft使用 ResourceLocation 识别资源。一个 ResourceLocation 包含两部分:命名空间和路径。它通常指向资源 assets/<namespace>/<ctx>/<path>,其中ctx是特定于上下文的路径片段,它取决于如何使用 ResourceLocation。当一个 ResourceLocation 作为一个字符串被写入或者从一个字符串读入时,它会被视为<namespace>:<path>。如果省略了命名空间和冒号,那么当字符串被读入时ResourceLocation,命名空间几乎总是默认为"minecraft"。模组应该将其资源放入一个与其modid同名的命名空间(例如,带有id的模组 examplemod 应该将其资源放在 assets/examplemod,并使得 ResourceLocation 指向这些文件,看起来像 examplemod:<path>)。这不是必需的,并且在某些情况下,可能需要使用不同的(或甚至多于一个)命名空间。ResourceLocation 也在资源系统之外使用,因为它们恰好是唯一标识对象(例如注册表)的好方法。