本篇教程由作者设定使用 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>);
本教程到此结束