命名空间
这不是一个新概念,但是我想我应重申一下什么是“命名空间”。游戏中的大多数东西都有一个命名空间,以便在我们加入了
something
的同时一个mod(或地图,或其他)也加入了something
时来区分它们两个。当你要为某个东西命名时,例如一个战利品表,你还需要指定这个东西所属的命名空间。如果你不指定命名空间,我们默认它是minecraft
。这意味着something
和minecraft:something
是一回事。——Dinnerbone评论于命名空间
命名空间
命名空间是内容的区界。它是为了防止潜在的内容冲突或无意中覆盖了相同名称的对象。
例如,两个数据包里都有一个名为start
的函数。向游戏加入这两个数据包,如果没有命名空间,这两个函数就会发生冲突。当它们具有one
和two
两个不同的命名空间时,则函数将变为one:start
和two:start
,不再冲突。
minecraft
命名空间
minecraft
命名空间游戏本身使用minecraft
命名空间。当没有指定命名空间时,将默认为minecraft
[仅Java版]。只有当项目需要覆盖或修改现有的“minecraft”数据或将内容加入到原版标签时,才应该使用minecraft
命名空间。比如在minecraft:load
函数标签中加入函数。
自定义命名空间
不同的项目或内容创作(例如数据包、资源包、mod等),命名空间应该是不同的,仅当需要覆盖其他项目,或是追加标签的时候,才使用与其他项目相同的命名空间。
为了防止潜在的冲突,命名空间应该尽可能的特殊。
避免使用一堆字母的组合。例如,一个名为“nuclear craft”的项目不应该使用命名空间
nc
,因为太简单了。避免使用过于模糊的词语。
battle_royale
也不能提供便于查找的信息,不过player_name
_battle_royale
会更好些。
这些不当的命名空间都会减少项目的适应程度,并在将多个项目加入到游戏时给调试带来困难。
其他内置的命名空间
虽然本地化键名并不使用命名空间ID,但游戏的默认资源包声明了realms
命名空间来储存面向Realms的语言文件(位于assets/realms/lang/
<语言代码>
.json
),而minecraft
命名空间储存与游戏相关的语言文件。Realm的jar文件本身也在realms
命名空间中声明了它的en_us.json
语言文件及各种纹理。
在命令参数类型中,还有一个brigadier
命名空间存在于brigadier中。[5]
最后更新于