我的界模阶方世界模组台阶方块制作指南

凌晨三点,咖啡已经喝到第五杯,组台突然想起来答应网友要写这篇教程。界模阶方行吧,组台趁着脑子还清醒,界模阶方咱们聊聊怎么给《我的组台世界》模组添加台阶方块这事儿。说真的界模阶方,别看台阶在游戏里不起眼,组台真要自己动手做,界模阶方坑比你想的组台还多。

准备工作:别急着写代码

首先得把开发环境搭好,界模阶方这个环节劝你别偷懒。组台我去年图省事跳过这步,界模阶方结果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")    );}

材质和模型

六点十分,咖啡彻底失效了。现在要给台阶加材质,这个环节特别容易出错:

  1. resources/assets/modid/textures/blocks放png图片
  2. 创建blockstates文件定义不同状态
  3. 写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文件写错了。