本篇教程由作者设定使用 CC BY-NC-SA 协议。

该教程适用于CraftTweaker,未知API是否向下兼容

教材部分来自Bilibili的"酒石酸酱"的投稿视频"Minecraft模组介绍-CraftTweaker,MineTweaker,ModTweaker全介绍-12p"(av13038655)

部分例题来自mcbbs的"http://www.mcbbs.net/thread-304800-1-1.html"

该教程部分由编辑者自行编辑.全文使用(咸猫)Chenwe_i_lin个人名义发布,并使用CC BY-NC-ND声明协议进行保护

==================================================

OD(OreDictionary,即矿物词典)是一种Forge创建合成的方式,主要用于MOD对其他MOD的矿物合成进行一定的支持,举个例子:IC和IE都有铜,但是如果他们不通用,就会很让人困扰.Forge矿物词典(Forge Ore Dictionary)是一种让不同模组的矿物通用的系统,例如在世界中采集到不同的铜矿,可以用来合成同样的物品,甚至可以混搭使用!(重生原话+微小修改,重生酱你可以给我过吗qwq)

大部分mod,如IC2,TE,TiC,RC,FR等均采用了矿物辞典登记自己的矿物,如IC2的铜锭登记为IngotCopper,TE铜矿登记为OreCopper
OD在多mod通用方面起着重要作用

==========概念部分结束================================

①.OD在zs脚本中的应用

(1).多mod情况下,比如IC+TE,当你想用青铜等两mod兼有的矿物编写配方的时候……物品名称只能对应一个物品,而平时两个mod的青铜是通用的……
可见,仅用物品标记是不行的...

例如:

recipes.addShaped(<IC2:itemPartAlloy>*2,

    [[<minecraft:iron_ingot>,<minecraft:iron_ingot>,<minecraft:iron_ingot>],

    [<IC2:itemIngotCopper>,<IC2:itemIngotCopper>,<IC2:itemIngotCopper>],

    [<IC2:itemIngotTin>,<IC2:itemIngotTin>,<IC2:itemIngotTin>]]

);

但是这样只能用IC的桶和锡了...肿么办,我要用TE的啊!

哦,所以我们来吧:

import minetweaker.item.IItemStack;val one = [<ore:ingotIron>,<ore:ingotIron>,<ore:ingotIron>] as IItemStack;val two = [<ore:ingotIron>,<ore:ingotIron>,<ore:ingotIron>] as IItemStack;val three =[<ore:ingotTin>,<ore:ingotTin>,<ore:ingotTin>] as IItemStack;recipes.addShaped(<IC2:itemPartAlloy>*2,    [one,two,three]);

//减少游戏可玩性的合成XD

偷懒用了数组(滑稽)

这样,你用什么mod的铁铜锡都可以了,只要他们有注册自己的矿物到这个OD里面233

你还可以自己造个矿物词典!

②.自定义矿物词典

一个敢于魔改的好孩子,是要自己捏OD的!

(1).将某物添加到指定矿物词典

<矿物词典名称>.add(<物品标记>);

这是一个模板,和上次的一样,你能够直接丢进去!

(2).将某物从指定矿物词典移出

<矿物词典名称>.remove(<物品标记>);

该行,为模板↑

(3).单向替换OD(建立一个镜像,里面有A和B,A可以替换B,B不可以替换A)
<OD标记A>.mirror(<OD标记B>);

该↑行同上,为一个模板.

(4).OD归并(A的所有条目被添加到B下)

<OD标记A>.addAll(<OD标记B>);

该↑行同上,为一个模板.

(5)新增OD

输入一个没有的OD会被CT认为是添加了一个新的OD,你可以对这个OD进行很多奇妙的改进,但是就是这样,没什么好说的.

val odA = <ore:xianmao>;odA.add(<minecraft:iron_ingot>).addAll(<ore:ingotCopper>);

本教程到此结束