本篇教程由作者设定使用 CC BY-NC-SA 协议。
本教程将指导你如何创建自定义的太阳能板。
首先打开.minecraft文件夹下的config/solarflux/custom_panel.js,可以看到作者已经给了例子。
此文件使用JavaScript语法,但是你完全不需要了解JavaScript就可以进行修改。
这是一个自定义太阳能板的示例:
panel()
.name("my_panel")
.height(6 / 16.0)
.generation("120000")
.capacity("819200000")
.transfer("240000")
.buildAndRegister()
.langBuilder()
.put("en_us", "My Solar Panel")
.put("zh_cn", "我的太阳能板")
.build();
之后就是做填空题的方法了。首先将上面的代码复制进func init()后面的两个大括号中,然后修改各项参数即可。(你可以删掉大括号里原来的注释)
.name("my_panel") 这一行是你自定义的太阳能板的id,最后你得到的太阳能板的物品id是solarflix:custom_solar_panel_你此处填写的值,所以尽量不要把这个写的很长,因为本来id就已经够长了。将引号内的my_panel改成任何你想要的id即可。(必须是小写字母+下划线的形式)
.height(6 / 16.0) 这个表示太阳能板的厚度,一般6.0就可以,如果你想要让它看上去更厚一些就把分子调大。
.generation("120000") 这个表示你的太阳能板每tick产出多少FE。
.capacity("819200000") 这个表示你的太阳能板最大能够储存多少FE。
.transfer("240000") 这个表示你的太阳能板每tick可以传输多少FE。建议不要把这个设的比产出率还小。
.langBuilder() 后面就是给你的太阳能板设定物品名称了。
.put("en_us", "My Solar Panel") 这一句设定的是英文名称,My Solar Panel就是英语语言下你的太阳能板的名字。
.put("zh_cn", "我的太阳能板") 同上,这个设定的是中文名称。如果想设定其它语言的名称请更改前面的zh_cn为你想设的语言名。
.build(); 这个表明我们的太阳能板已经设定完毕,可以注册了!最后的分号一定不能忘!
注意:虽然solarflux内置了为自定义太阳能板添加配方的方式,但是强烈建议使用CraftTweaker为你的太阳能板添加配方!以下为solarflux内置的添加配方的方式。
如果你想为这个太阳能板添加配方,请把build后面的分号删掉,然后在后面加入以下内容:
.recipeBuilder()
.shape("ppp", "8c8", "8h8")
.bind('p', item("solarflux", "photovoltaic_cell_6"))
.bind('8', item("solarflux:solar_panel_8"))
.bind('c', item("chorus_fruit"))
.bind('h', item("skull", 5))
.build(2);
shape后面就是3*3的工作台,每个字符代表一个物品。接下来的bind语句用于设定哪个字符代表哪个物品,可以是模组id后面跟物品id的方式,也可以是物品的完整id(如果是minecraft原版物品可以省略minecraft:)后面跟meta值的方式。
build(2)代表这个配方可以产出多少个你的太阳能板,比如这里是2个。
然后,我们需要为刚刚自定义的太阳能板添加材质!材质位于config/solarflux/textures文件夹里,可以看到里面已经有一套默认的材质,如果懒得画可以直接拿过来用。当然,你也可以使用Pixelart之类的像素绘图软件或在线网站自己绘制材质,大小为16*16,必须为png格式。
一共需要两个材质,一个是顶面材质,一个是底面和侧面材质。将你画好的png文件(或者直接复制默认材质)重命名为“太阳能板id_top.png”的格式,就可以将这个图片设定为顶面材质。其中,太阳能板id即为你刚才在.name("xxx")语句中设定的id。
同样,将另一个png文件重命名为“太阳能板id_base.png”的格式即可将其设定为底面和侧面材质。
(如果你的操作系统没有显示文件后缀,请打开文件后缀显示,以防止重命名为.png.png这样的情况出现)
之后,你就可以启动游戏,并且在JEI中看到你刚自定义的太阳能板了!如果你设定了合成配方,你可以试着合成一个出来!
后记:
你可以在panel()后面调用isModLoaded("modid"),来使得仅当id为modid的模组被加载时才会加载这个太阳能板。如果你的合成配方中包含了其他mod的物品,建议加上这一句来使得即使卸载了那个mod也不会报错。(不过卸载那个mod会导致这个自定义太阳能板不被加载)
你可以在func init()的前面加上define a b来使得下面代码的所有出现的a都被替换为b。比如如果写了define english "en_us",自定义语言时就可以使用english来代替"en_us"。