二、PluginMachineRecipe
再来说说更复杂,但功能也更多的PluginMachineRecipe。该mod会自带ExamplePluginMachineRecipe1.json(即前面那个工作台的插件)与ExamplePluginMachineRecipe2.json(即前面热能采掘机的插件)两个模板插件。这儿只对ExamplePluginMachineRecipe1.json作说明,并且与前面插件相同的条目我就不再赘述了。
编写这类插件时,首先json文件中的“plugin_type”一定要写“plugin_machine_recipe”
略去几个前面提到过的条目后,“plugin_background_texture”中需填写NEI插件背景图片所在的资源路径,默认的是NEI自带的那种灰色背景,如果某个机器的Gui不是这种灰色的,那需要修改这个值。
“plugin_gui_texture”是机器Gui材质文件的资源路径
“plugin_gui_class”表示Gui机器所在.class文件的路径(即java中的包名+类名,最后不需要加上.class的后缀名),比如原版工作台就填“net.minecraft.client.gui.inventory.GuiCrafting”,其他mod的机器可以通过用解压缩软件打开mod的jar文件寻找。对于用CustomStuff2制作的带有Gui的“机器”,这儿需填写“custom_stuff2.modid.gui_name”,其中modid表示用CS2制作的mod的modid,gui_name表示CS2中gui的名称。
“plugin_recipe_identifier”表示该机器配方的标识符,用于让NEI识别并过滤配方。这个的值可以随意写,但一定不能和其他插件的值重复,不然点击Gui中的特定位置时,可能会跳转到别的NEI插件,而不是你自定义的这个NEI插件。
“plugin_transfer_rect”表示Gui中跳转查看该NEI插件所有配方的矩形的位置。其中有多个参数,分别表示x,y坐标和矩形的长宽。
“plugin_progress_bar”表示插件中进度条的显示,这个json没有进度条,所以是空。具体格式参见ExamplePluginMachineRecipe2.json,其中参数依次表示Gui中的x,y坐标、材质文件中的x,y坐标、进度条宽度、高度、进度条显示完全所需的tick数,和进度条显示的方向(默认的0代表自左向右显示,1表示向下,2表示向左,3表示向上;设置为4-7表示进度条方向为0-3,但是此时显示的是由满进度减少为零进度)。
“plugin_gui_offset”:由于NEI插件显示的页面材质只是将Gui材质的部分截取出来(比如截取的高度只有65),所以可能会出现Gui材质在NEI插件中错位的情况。修改这个值可以调节材质的位移进行补偿。(默认值为5和11)
“plugin_recipes”表示该机器全部的处理配方。“inputs”表示一条配方的输入,可以写多个物品,其下属参数分别表示物品名称、堆叠个数、是否匹配矿物辞典和在NEI插件中的x,y坐标。“outputs”表示一条配方的输出,同样可以写多个物品,参数意义和输入基本一样,不过“oredict_search”项与输入物品中的“oredict”项略有不同:由于同样的输入只能有唯一的输出,因此输出物品的矿物辞典匹配只代表在查询其配方(即对它按R键)的时候,是否同一矿典的物品都会匹配到这条配方,而不代表在输出产物的位置处循环显示同一矿典的多个物品(这点与输入物品的矿典匹配不同)。“strings”表示在该配方显示的时候同时写出的文字,这个json为空,具体格式可见ExamplePluginMachineRecipe2.json,同样可以写多个值,不过需注意,此时"string"项中填写的也是非本地化文本,并且支持格式化输入,(具体格式可参考ExamplePluginMachineRecipe2.json和此模组的语言文件),格式化输入时,"string"项由非本地化名称与任意长度的参数以”_,”两个字符相连接。