前言
自定义物品4这个MOD可以使用简单的JSON文件创建方块,物品,GUI等等,支持forge1.10——1.12版本。而我在学习此模组的顺便将此模组英文wiki翻译,希望能帮助到使用此模组的玩家们。
此Wiki中的代码为json,但使用JavaScript插入。
正文
入门
要开始CS4,你需要在你安装的minecraft的mods目录下创建一个新的文件夹(译注:名称可以自定义,建议英文)。在该文件夹中创建一个名为cs4mod.json的文件,内容如下:
{
"id": "mymod",
"name": "My Mod",
"version": "1.0.0"
}
“id”是你的MOD的ID,可替换其他字符。该ID必须只包含小写字母(a-z)、数字(0-9)和下划线。
“name”是你的MOD的名字,(译注:将会在模组菜单中显示)可替换其他字符。
“verstion”是你MOD的版本,1.0.0替换为你的MOD的版本。(译注:请注意并不是游戏版本,另外要加双引号)
你现在可以启动Minecraft,它将创建必要的文件让你的MOD工作。注意,你的MOD只会在第二次启动Minecraft后出现在模组菜单中。现在应该在cs4mod.json旁边有一个叫做cs4mod的文件夹。(译注:1.12还有一个asset文件夹)
这就是了。你已经设置好了一切。
要改变你的MOD的版本,请先编辑cs4mod.json文件,删除cs4mod文件夹并启动Minecraft。确保在Minecraft第二次启动前不要加载世界,因为你的MOD在那之前不会被加载。
添加内容
要添加内容,你必须创建一个名为main.json的新文件。这个文件包含所有被添加到游戏中的内容。然而你可以将任何东西外包给另一个文件。每个json文件都由命名的列表组成,这些列表中的每个条目都会添加一个或多个相同类型的东西,例如成型的配方。
对于一个简单的熔炼配方,文件可能看起来像这样:
{
"content": [
{
"type": "smeltingRecipe",
"entries": [
{
"input": "minecraft:stone",
"result": "minecraft:obsidian"
}
]
}
]
}
列表的名称以及这里的内容完全是任意的,只是增加了一点其他结构。你可以有一个配方的列表,另一个是燃料的列表。
这就是你需要做的,添加一些内容。
--------------------------------------------------译注--------------------------------------------------
"content"译为内容,表示你要写出一个东西;
"type"译为类型,表示一个类型,比如是工作台有序还是无序,熔炉等等。"smeltingRecipe"应是熔炉配方;
"input"译为输入,意义是熔炉的物品槽中添加什么东西,这里的"minecraft:stone"是原版中的石头;
"result"译为结果或输出,意义是熔炉的成品槽,这里的"minecraft:obsidian"是原版的黑曜石;
所以,这个json的意义就是在熔炉中添加一个将石头烧制成黑曜石的配方。
---------------------------------------------------------------------------------------------------------
如果你想使用多个文件,而不是挤在一个里面,例如将配方放在它自己的文件中,你可以这样做:
{
"content": [
{
"file": "recipes.json"
}
]
}
以这种方式加载的文件与main.json的工作方式完全相同。这意味着你可以让一个文件加载另一个文件,而这个文件本身又加载一些文件。例如,你可以让recipes.json加载 crafting_recipes.json 和 smelting_recipes.json。
--------------------------------------------------译注--------------------------------------------------
"file"译为文件,将你的存储配方的(文件名称).json写在里面,main.json就会自动加载你的json。
---------------------------------------------------------------------------------------------------------
你也可以给一个内容条目添加条件,只有在满足条件时才加载该内容。例如,你可以只在加载一个特定的mod时添加某些配方可以联动了(囍):
{
"content": [
{
"file": "recipes.json",
"requireModsLoaded": ["chesttransporter"],
"requireModsNotLoaded": ["morefurnaces"],
}
]
}
这对文件和条目都有效。
只有在满足所有条件的情况下才会加载内容。在上面的例子中, 含有chesttransporter模组时recipes.json必须被加载,而含有morefurnaces模组则不能。
Json格式
这是一个关于如何在json中指定某些东西的列表。
资源位置
资源定位用于定义纹理、模型的位置,或者用于项目或块的标识符。有两种方法来定义一个资源位置。
简短的版本:
"minecraft:stone"
"minecraft:textures/gui/bars.png"
较长的版本:
{
"domain" : "minecraft",
"path" : "stone"
}
{
"domain" : "minecraft",
"path" : "textures/gui/bars.png"
}
复合型NBT标签(暂译)
一个复合型NBT标签被定义为一个包含NBT数据的字符串:
"{display:{Name:\"Some Obsidian\"}}"
ItemStack
有多种方法来指定一个ItemStack:
{
"item" : "minecraft:stone",
"metadata" : 10,
"amount" : 42,
"nbt" : "{display:{Name:\"Some Obsidian\"}}"
}
除项目外,其他都是可选的。元数据默认为0,数量默认为1。
对于某些配方,你可能想允许所有的元数据变体。这可以像这样做:
{
"item": "minecraft:stone",
"metadata": "all",
"amount": 42
}
或者像这样:
{
"item": "minecraft:stone@all",
"amount": 42
}
也有一个定义项目堆栈的简短版本。然而那样的话,你只能定义项目和元数据:
"minecraft:stone"
"minecraft:stone@1"
"minecraft:stone@all"
这将定义一个数量为 1 的堆栈。省略元数据部分将默认为元数据 0。
实例
以下是一个熔炉配方。输入和结果都是ItemStack:
{
"input": "minecraft:stone@all",
"result": {
"item": "minecraft:obsidian",
"amount": 3,
"nbt": "{display:{Name:\"Custom Obsidian\"}}"
}
}
其他待更新……
其他
此篇教程为机翻加上个人润色,如有不对的地方请指出,作者会进行修改。