我的界铁世界铁盔模组制作指南:从零开始手把手教你

凌晨两点半,电脑屏幕的盔模光照在脸上,我又在折腾《我的界铁世界》模组了。最近特别迷铁盔这个装备,盔模但原版游戏里实在不够酷,界铁干脆自己做个模组吧!盔模下面就把我这半个月折腾出来的界铁经验全倒出来,可能有点啰嗦,盔模但保证都是界铁实打实的干货。

准备工作:别急着写代码

先得把工具备齐了,盔模就像做菜得先买菜一样。界铁我刚开始就犯傻直接开搞,盔模结果来回重装了三遍环境。界铁

  • Java开发环境:JDK 17或以上(现在新版本模组都要求这个)
  • 开发工具:IntelliJ IDEA社区版就行,盔模别学我一开始用记事本写
  • 模组加载器:Forge或者Fabric任选,界铁我这次用Forge 1.19.2
  • 素材工具:GIMP或Photoshop做贴图,Blockbench建模

记得去Forge官网下MDK(模组开发包),这东西相当于给你准备好了锅碗瓢盆。解压后是个空项目,用IDEA打开会自己下载依赖,等进度条走完可能要20分钟,正好去泡碗面。

创建第一个铁盔物品

凌晨三点,咖啡已经喝到第三杯。先在src/main/java下新建包,我习惯用com.名字.modid这种格式。然后创建四个基础类:

  • ModMain(主类)
  • ItemInit(物品注册)
  • ClientSetup(客户端设置)
  • ModCreativeTab(创造模式分类)

在ItemInit里加这段代码注册铁盔:

public static final RegistryObject<Item> IRON_HELMET = ITEMS.register("iron_helmet_mod",    () ->new ArmorItem(ModArmorMaterial.IRON, EquipmentSlot.HEAD,    new Item.Properties().tab(ModCreativeTab.MOD_TAB)));

这时候运行游戏肯定报错,因为还没定义ModArmorMaterial。别慌,新建个类专门处理盔甲属性:

public enum ModArmorMaterial implements ArmorMaterial {     IRON("iron", 15, new int[]{ 2,5,6,2}, 9,        SoundEvents.ARMOR_EQUIP_IRON, 0f, 0f);    // 后面还要实现一堆方法,具体看GitHub上示例}

让铁盔有点特殊效果

原版铁盔太普通了,咱们加点特效。凌晨四点脑子开始发木,但想到酷炫效果又精神了。

实现水下呼吸

在armor包下新建IronHelmetItem类继承ArmorItem,重写onArmorTick方法:

@Overridepublic void onArmorTick(ItemStack stack, Level world, Player player) {     if(player.getItemBySlot(EquipmentSlot.HEAD).getItem() == this) {         player.addEffect(new MobEffectInstance(            MobEffects.WATER_BREATHING, 200, 0, false, false));    }}

添加粒子效果

在ClientSetup里注册粒子事件:

@SubscribeEventpublic static void onParticleSetup(ParticleFactoryRegisterEvent event) {     Minecraft.getInstance().particleEngine.register(        ModParticleTypes.IRON_SPARK.get(), IronSparkParticle.Provider::new);}

这个要配合新建的粒子类和json定义文件,具体代码量比较大,建议直接参考Forge文档里的粒子系统章节。

3D建模与贴图制作

早上六点,窗外鸟都叫了。打开Blockbench开始折腾模型,这里有个坑要注意:

项目参数备注
模型大小16x16像素头盔别超过这个范围
贴图格式PNG透明背景记得关闭抗锯齿
动画帧数建议8-12帧太多会导致卡顿

做完的模型导出json和png,扔到resources/assets/modid/models/armortextures/armor里。这时候游戏里应该能看到你的铁盔了,虽然可能贴图错位...

本地化与合成配方

太阳出来了,最后补点细节。在resources/assets/modid/lang下新建en_us.json:

{     "item.modid.iron_helmet_mod": "强化铁盔",    "item.modid.iron_helmet_mod.desc": "§6水下呼吸+粒子特效"}

合成配方在data/modid/recipes里新建iron_helmet_mod.json:

{     "type": "minecraft:crafting_shaped",    "pattern": [        "III",        "I I"    ],    "key": {         "I": {  "item": "minecraft:iron_ingot" }    },    "result": {         "item": "modid:iron_helmet_mod",        "count": 1    }}

保存所有文件,运行runClient任务。看到游戏里那个闪着微光的新铁盔没?戴上它跳进水里,应该能看见呼吸条旁边的小气泡特效了。要是遇到崩溃别着急,90%的问题都是json文件少了个逗号或者括号。

天完全亮了,合上电脑前突然想起来还得加个配置选项控制粒子密度。算了,下次再说吧,反正模组开发就是个不断迭代的过程。《Minecraft Modding with Forge》这本书第7章还有更多盔甲特效的案例,回头得去翻翻...