本篇教程由作者设定未经允许禁止转载。

教程注意事项

本篇教程针对版本为1.12.2,不使用addon或是mcr等。教程只针对一些寻求简单方法进行自定义物品添加的魔改作者。


教程的优势是非常简单、稳定,不追求复杂的自定义效果。教程的缺点是这并非是一个通用的方法,非1.12.2版本可能没有任何参考意义;且该方法无法添加自定义工具。如果你能接受以上缺点,请继续阅读。

前言

给游戏内添加自制物品一直是整合包魔改中的一个热点,而添加的方式是个非常大的问题。我曾考虑过使用addon,尽管在addon添加物品时可进行非常详细的自定义,但是综合下来我认为它不够符合我的要求,我需要一种直接以模组形式在游戏中注册物品的方式,而不是行为包。在经过寻找之后,我终于找到了这样一种方法,可直接以模组的形式向游戏中注册物品,并支持resource loader,因此有了这篇教程。

需要提前注意的是路径问题,若开启版本隔离,游戏主要内容都会存储在version中的版本文件夹里,但这可能会导致bug。使用前建议用启动器只安装一个纯净版,确认.minecraft文件夹中为游戏主体内容

使用模组

自定义MC:本教程的核心模组,可以极为简单的方式向游戏中注册武器、防具、物品、方块等信息,几乎是傻瓜级别的使用难度。

Material Changer:1.12.2版本用来修改武器、防具等物品的攻击伤害、耐久度、防御等数据的模组;若你有其他办法修改可不使用此模组。

Resource Loader:加载自定义材质、model等信息的工具,但直接修改模组文件也可达到相同的功能,建议使用它而非修改模组文件,修改模组文件在很多时候是不被允许的。

案例:添加一把武器

使用自定义MC模组向游戏内注册物品

下载自定义MC(只需要模组本体,不需要作者的资源包)之后,将其放入mod文件夹直接打开游戏使模组生成配置文件。配置文件如下:

# Configuration file

图片物品 {
    # 图片物品的数量/个 [default: 1]
    S:图片物品=0
}


多材质方块 {
    # 多材质方块的数量/块 [default: 1]
    S:多材质方块=0
}


大型武器 {
    # 大型武器的数量/个 [default: 1]
    S:大型武器=0
}


弓箭 {
    # 弓箭的数量/个 [default: 1]
    S:弓箭=0
}


方块 {
    # 方块的数量/块 [default: 1]
    S:方块=0
}


武器 {
    # 武器的数量/个 [default: 1]
    S:武器=1
}


物品 {
    # 物品的数量/个 [default: 1]
    S:物品=0
}


称号 {
    # 称号的数量/个 [default: 1]
    S:称号=0
}


装备 {
    # 装备的数量/套 [default: 1]
    S:装备=0
}

当修改等号的数字之后,此模组便会向游戏自动注册一个物品并分配给它ID;为0则为不添加物品。这里武器=1,即向游戏内注册一个武器的物品。再次重启游戏后,便可在游戏中看到一个武器被添加,其伤害为0,攻速为1.6,耐久度为2,攻击方式与剑完全一致。查询其ID,可得custommc:wqs0

使用Resource Loader添加物品信息

此过程可直接通过修改模组完成,如果你不想使用Resource Loader的话。

利用Resource Loader覆盖加载asset的原理,进入.minecraft\resources\custommc文件夹中(没有的文件夹一律自行新建,后续不再赘述),新建3个文件夹:lang、models、textures。lang文件用于添加物品名称;models用于添加物品分类及材质路径;textures用于存储材质。

lang文件添加物品名称

添加物品名称的方式非常简单,如同大多数语言文件——lang文件做法一样,在此新建一个.lang文件,并将其命名为zh_CN。打开它,输入如下代码:

item.wqs0.name=测试武器

将这把武器命名为测试武器。若你不理解lang文件的命名规则,最简单直接的方法是记录该物品在游戏内的名字,其本身与lang文件需要的格式完全一致;换而言之,使用模组向游戏内添加物品而没有语言文件时,物品的名称就是lang文件需要用到的代码。此时,物品命名已经完成。

model文件夹添加物品分类和材质路径

进入models文件夹,并新建一个item文件夹,进入item文件夹,新建一个json格式的文件,命名为wqs0,与武器ID一致。打开json文件,输入如下代码:

{
    "parent": "item/handheld",
    "textures": {
        "layer0": "custommc:items/wqs0"
    }
}

parent即为物品的分类,武器通常为handheld,而道具通常为generated,这些为原版设定;若你的整合包中安装了斯巴达武器,你可以在斯巴达武器的MOD文件中翻查它的模组model文件,列如你将它设置为spartanweaponry:item/greatsword_wood,那么这个武器就会在游戏中变成斯巴达武器的大剑模型;此操作对任何模组都有效。

layer0并不需要修改;texture为物品的材质路径,此处填写为items/,wqs0则为材质的命名。保存wqs0.json文件,此时只剩下添加贴图的工作了。

texture文件夹添加物品材质

进入.minecraft\resources\custommc\textures文件夹中,新建一个items文件夹,与上文路径保持一致。将你做好的武器贴图放置在此处,命名为wqs0。需要保持命名相同的已用同样颜色的字体标记。此时便大功告成,你可以进入游戏查看这把武器了。

物品贴图为动图的添加方法

首先你得将武器的贴图画为动图,多数材质包通常会画8张(并不是8张独立的图片,而是8个材质为1张图片),具体建议自行翻阅模组或材质包的png图片。如果你想要使得自己的材质为动图,那就同样在textures文件夹中,新建一个.mcmeta文件,其命名规则为:若你的武器贴图名称为wqs1,则此文件的名称应为wqs1.png.mcmeta。使用vscode(或其他软件)打开之后,写入以下代码:

{
"animation":
{
"frametime": 2,
"interpolate": false
}
}

这里的frametime指的是动画播放的循环时间,多数材质包会使用8张贴图,将其设置为2,但你可根据自己的贴图数量自行修改数值。

而interpolate项通常不使用为false。

使用Material Changer修改武器数值

添加模组开始游戏,找在config文件夹中找到materialchanger.json文件,在changer处修改武器数值:

changer {
    #  [default: ]
    S:changer <
        ATTACK_DAMAGE;custommc:wqs0;999
        DURABILITY;custommc:wqs0;-1
    >
    }

attack damage为武器伤害,分号后面的是武器ID,999则为攻击力;durability为武器耐久,-1为无限耐久,0以上为实际耐久数值。修改完后重启游戏。

此时你便可在游戏中找到你添加的名为测试武器的武器,伤害为999,无限耐久,攻速1.6,与MC中传统的剑在使用上完全一致。

案例:添加一套盔甲

既然模组已经向游戏内注册了物品,当然可以轻松的注册盔甲,这里盔甲添加的教程较为简单,主要是为了解决你可能会遇到的贴图问题。

尽管模组作者声称,模组对防具材质贴图的支持只能使用一张图片(但无论是原版还是模组的防具材质都是使用两张图片),但……这怎么能难到我呢?在强大的resource loader的帮助下,可轻松解决这个问题。

理论上材质包加载也可实现。

添加盔甲材质

需要注意的是,此模组配置文件对防具的添加为1套,也就是说添加一套盔甲只需要将数字改为1即可。

进入.minecraft\resources\custommc\textures\models\armor文件夹(需自行创建),将你画好的盔甲贴图放置于此。命名规则为:armor0_layer_1armor0_layer_2。无论是你自制材质还是使用其他的材质,盔甲的贴图永远为两份,layer_1包含了头盔、胸甲、鞋子,layer_2为裤子,所以必有两张贴图。armor0则是custommc模组本身向游戏中注册盔甲所使用的统称代码,只有在替换材质的时候用得上,使用custommc注册10套盔甲,那么每一套的统称代码就依此类推,比如第二套为armor1。将材质命名好之后,此时的盔甲材质便已添加完成,下一步是向游戏内添加图标材质。

添加盔甲图标材质

与武器共用贴图的设定不同,防具的材质与图标贴图是分开的,在完成了防具材质的添加后,还必须为游戏内的图标添加材质。

.minecraft\resources\custommc\models\item文件夹中,新建tk0、kj0、kz0和xz0一共4个json文件,具体用途跟上文武器篇的一样,这里不再赘述了,每个json文件中填入的内容如下:

{
  "parent": "item/generated",
  "textures": {
    "layer0": "custommc:items/tk0"
  }
}
{
  "parent": "item/generated",
  "textures": {
    "layer0": "custommc:items/kj0"
  }
}
{
  "parent": "item/generated",
  "textures": {
    "layer0": "custommc:items/kz0"
  }
}
{
  "parent": "item/generated",
  "textures": {
    "layer0": "custommc:items/xz0"
  }
}

这里的parent为generated,防具拿在手上时仍然算一个道具。至于代码、命名等问题,完全参照武器篇的规则。

填写完成之后,进入.minecraft\resources\custommc\textures\items文件夹(就是存储武器贴图的路径),将你画好的盔甲图标放在这里。一定要注意命名对应,否则会出现游戏内图标混乱的问题。

添加盔甲名称

与武器篇完全一致,不再赘述。

修改盔甲数值

同样依赖于material changer,可参考模组自身的例子,不再赘述。

收尾

使用此方法添加的武器、物品、防具等,在本质上与模组(非addon)添加的物品在使用上完全没有区别,可套用crt等魔改模组进行更复杂的功能设定。如果要添加盔甲,则需要略微修改model文件即可。