我的界模阶方世界模组台阶方块制作指南
凌晨三点,咖啡已经喝到第五杯,组台突然想起来答应网友要写这篇教程。界模阶方行吧,组台趁着脑子还清醒,界模阶方咱们聊聊怎么给《我的组台世界》模组添加台阶方块这事儿。说真的界模阶方,别看台阶在游戏里不起眼,组台真要自己动手做,界模阶方坑比你想的组台还多。
准备工作:别急着写代码
首先得把开发环境搭好,界模阶方这个环节劝你别偷懒。组台我去年图省事跳过这步,界模阶方结果debug到怀疑人生。组台
- 必备工具:Java JDK 8(别用新版,界模阶方模组开发就认这个)
- 开发环境:IntelliJ IDEA社区版就够用
- 构建工具:Gradle 4.9(新版可能会有兼容问题)
- 模组加载器:Forge MDK 1.12.2(最稳定的版本)
装完这些,记得配置环境变量。Windows用户注意了,PATH里Java路径要是错的,后面能把你折腾哭。验证方法是在cmd里打java -version,能正常显示版本号才算搞定。
创建方块基类
凌晨四点,窗外开始有鸟叫了。咱们正式开始写代码,先建个基础台阶类:
参数 | 说明 |
material | 材质类型,比如ROCK或WOOD |
name | 注册名,要全小写加下划线 |
hardness | 硬度值,石头台阶一般是2.0 |
这里有个坑要注意:台阶必须继承BlockSlab而不是普通的Block。我第一次写的时候没注意,结果做出来的方块根本不能叠放。
完整代码示例
(揉眼睛)写个木制台阶的示例吧:
public class WoodenSlab extends BlockSlab { public WoodenSlab() { super(Material.WOOD); setUnlocalizedName("wooden_slab"); setRegistryName("modid:wooden_slab"); setHardness(2.0F); setResistance(5.0F); } // 必须重写这两个方法 @Override public boolean isDouble() { return false; } @Override public String getUnlocalizedName(int meta) { return getUnlocalizedName(); }}
注册方块和物品
现在五点半,天都蒙蒙亮了。写完类只是开始,还得注册才能用:
- 在Mod主类的@EventHandler方法里初始化
- 要同时注册单台阶和双台阶两个变体
- 记得添加物品形式以便创造模式选取
注册代码大概长这样:
@GameRegistry.ObjectHolder("modid")public static class Blocks { public static final Block WOODEN_SLAB = null; public static final Block DOUBLE_WOODEN_SLAB = null;}@SubscribeEventpublic static void registerBlocks(RegistryEvent.Registerevent) { event.getRegistry().registerAll( new WoodenSlab().setRegistryName("wooden_slab"), new BlockSlabDouble() { // 双台阶的实现... }.setRegistryName("double_wooden_slab") );}
材质和模型
六点十分,咖啡彻底失效了。现在要给台阶加材质,这个环节特别容易出错:
- 在resources/assets/modid/textures/blocks放png图片
- 创建blockstates文件定义不同状态
- 写json模型文件指定使用哪个材质
blockstates文件示例:
{ "variants": { "half=bottom": { "model": "modid:wooden_slab_bottom" }, "half=top": { "model": "modid:wooden_slab_top" } }}
模型文件得做两个,一个给上半部分用,一个给下半部分用。建议直接复制原版台阶的json改参数,比自己从头写靠谱。
合成配方
快七点了,邻居开始做早饭。最后给台阶加个合成表:
合成方式 | 配方 |
3个木板 | 得到6个台阶 |
2个单台阶 | 合成1个双台阶 |
在recipes文件夹里新建json文件:
{ "type": "minecraft:crafting_shaped", "pattern": [ "###" ], "key": { "#": { "item": "minecraft:planks" } }, "result": { "item": "modid:wooden_slab", "count": 6 }}
写到这里发现忘记说音效了...算了,下次再补吧。太阳已经照到键盘上,我得去睡会儿。记住测试的时候重点检查这几个地方:能不能正确叠放、破坏后掉落物对不对、在斜面上放置时的朝向。要是遇到奇怪bug,八成是blockstates文件写错了。