关于 MC 的 Forge 模组开发(四):创造模式物品栏与合成表
关于 MC 的 Forge 模组开发(四):创造模式物品栏与合成表
私下我又制作了一个物品 “C++”,暂不放图。
一、创造模式物品栏
大家肯定不喜欢把东西堆在杂项里面,毕竟是自己的物品,肯定安排一个专属物品栏。
现在我们就来干这个事情。
首先新建 groups 包,和 items 放在一块,然后在下面新建 OIGroup 和 ModGroup 两个类。

OIGroup 的内容如下:
public class OIGroup extends ItemGroup {
public OIGroup(){ super("oi_group"); }
public ItemStack makeIcon(){
return new ItemStack(ItemRegistry.c__.get());
}
}
这里我们先让它继承自原版的 ItemGroup,并提供一个构造函数,调用父类的构造函数,参数是注册名。
然后我们复写 makeIcon 方法,它返回用作图标的物品,其返回值是 ItemStack(你可以简单地理解为,ItemStack 和 Item 的区别就是,Item 只是物品,ItemStack 则是占据一个物品栏的物品,它多出了数量和 NBT 的概念,并由一个 Item 实例代表其中所有的物品),调用 ItemRegistry 中注册的物品的 get() 方法。
这里用我们新写的 “C++" 物品作为图标,当然,你也可以替换为其他物品。
然后进入到 ModGroup,我们要在这里声明我们创造模式物品栏的示例:
public class ModGroup {
public static final ItemGroup oiGroup=new OIGroup();
}
名字随意就好了,现在我们回到已有的物品中,更改它们的创造模式物品栏。
以 IncompleteC__ 为例,打开后将 super(new Properties().group(ItemGroup.MATERIALS)) 改为 super(new Properties().tab(ModGroup.oiGroup)) 即可。
先别急着启动,我们到汉化文件中给物品栏加上名字:
itemGroup.oi_group: OI
然后启动游戏,就会发现物品栏多出了翻页功能,翻过去就是我们的 OI 物品栏啦!
如果汉化没加载成功,请检查一下语法,比如 , 是否正确,我不会告诉你我卡这卡了十分钟~。
现在看看我们的物品栏吧!
二、合成配方
合成配方的制作和我们之前的部分不太一样,它是通过数据包的方式加载的。
就像为原版制作数据包一样,我们要为 mod 制作数据包。
你可能注意到了,在 resources 目录下还有一个 pack.mcmeta 文件,这其实就是数据包的一部分,尽管你可以保持默认。
我们新建一个 data 文件夹,然后在里面建立对应的文件目录。
对于我们需要的配方,它就是这样:data/olympiadininformatics/recipes。
请不要用 IDEA 一次性建立这个文件夹,它不会建立为多层,而仅仅是一个名为:data.olympiadininformatics.recipes 的文件夹。天知道我搁这卡了多久
现在我们创建一个 json 文件,名称随意,我选择和物品同名:c__.json。
我们接下来添加一个配方,用九个 “残缺的C++” 合成 “C++”,就像锭合成块一样。
c__.json 中内容如下:
{
"type": "minecraft:crafting_shaped",
"pattern": [
"111",
"111",
"111"
],
"key": {
"1": {
"item": "olympiadininformatics:incompletec__"
}
},
"result": {
"item": "olympiadininformatics:c__",
"count": 1
}
}
type 是合成的类型,在这里,我们是有序合成,其他都以后可能会涉及。
pattern 就是合成表的形式,其中物品用字符表示,不需要的位置用空格代替。
key 存贮每个字符代表的物品,当然,不一定是物品,也可以是指定的 tag(或者矿辞?)。
resault 是返回的物品,其中 count 表示数量。
现在进入游戏,就可以发现配方生效了!
三、一些其他的事
参考链接:

浙公网安备 33010602011771号