Forge-MDK我的世界模组-物品(1.19)-day1

准备工作

在这里插入图片描述

需要创建的目录

基础目录

第一步,按照build.gradle文件中com.lcl.godstick创建目录,当然这里只是我自己的路径,你可以按照自己的需求修改
在这里插入图片描述

在该路径下创建一个主类
在这里插入图片描述
在这里插入图片描述
其中代码如下

@Mod(ModBaseInfoUtil.MOD_ID)
public class Main {

    private static final Logger LOGGER = LogUtils.getLogger();

    public Main() {
    	// 总线
        IEventBus modEvenBus = FMLJavaModLoadingContext.get().getModEventBus();
    }
}
代码解析

@Mod(ModBaseInfoUtil.MOD_ID)中的ModBaseInfoUtil.MOD_IDbuild.gradle文件中godstick,当然这里只是我自己的名称,你可以按照自己的需求修改
在这里插入图片描述

private static final Logger LOGGER = LogUtils.getLogger();

这个是在控制台输出日志的,通过使用LOGGER.在idea中可以看到其中可以使用的方法,常用的有LOGGER.info:正常级别日志打印
LOGGER.debug:调试级别日志打印
LOGGER.error:错误日志打印
在这里插入图片描述
定义一个Main的无参构造,其中加入代码

IEventBus modEvenBus = FMLJavaModLoadingContext.get().getModEventBus();

物品目录

com.lcl.godstick下创建items目录,并在items中创建ModItems类,我代码中的godsticktab目录可以不用创建,我只是为了区分是那个类目,看个人需求创建
在这里插入图片描述
resources中创建assets下创建godstick,在godstick中创建
lang :放语言文件(en_us.json:英文;zh_cn.json:简体中文)
在这里插入图片描述
models :放定义物品模型json(为了区分是方块还是物品,在其中创建blockitem
在这里插入图片描述
textures:放物品模型(为了区分是方块还是物品,在其中创建blockitem
在这里插入图片描述

到这里,准备工作就正式完成了,可以开始开发自己的第一个物品

正式开始

物品注册类

找到目录java.com.lcl.godstick.items中刚刚创建ModItems类,添加代码

public class ModItems {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ModBaseInfoUtil.MOD_ID);
}

并且修改Main类中的无参构造代码

    public Main() {
        IEventBus modEvenBus = FMLJavaModLoadingContext.get().getModEventBus();
        ModItems.ITEMS.register(modEvenBus);
    }

物品注册类代码解析

DeferredRegister.create()使用这个方法在我们的mod(ModBaseInfoUtil.MOD_ID)中创建一个ForgeRegistries.ITEMS的注册实体

Main类代码解析

将物品注册类加入到总线中

物品类

java.com.lcl.godstick.items中创建GodStickItem类,并且继承Item,继承之后会有红色波浪下划线,光标在红色波浪下划线上,Alt+Enter自动生成构造构造方法
在这里插入图片描述
之后代码如下

public class GodStickItem extends Item {
    
    public GodStickItem(Properties p_41383_) {
        super(p_41383_);
    }
    
}

然后修改注册类中的代码将我们自己的物品注册进去

public class ModItems {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ModBaseInfoUtil.MOD_ID);

    public static final RegistryObject<Item> GodStickItem = ITEMS.register("god_stick_item", () -> new GodStickItem(new Item.Properties().defaultDurability(20).tab(CreativeModeTab.TAB_TOOLS).fireResistant().rarity(Rarity.COMMON)));
}

物品注册类代码解析

ITEMS.register()方法中第一个参数为我们物品的注册名,第二个参数是我们的物品,由于我们的物品类中有构造方法,所以在new的时候需要入参即new Item.Properties(),它代表我们物品拥有的特性
.defaultDurability():默认耐久
.tab():在那个栏目,我这里是放在了工具栏
.fireResistant():抗火
.rarity():稀有度,我这里的稀有度是普通
具体还有那些枚举可以看我的枚举整理:https://blog.csdn.net/weixin_51187178/article/details/131961809

语言文件

en_us.json:

{
  "item.godstick.god_stick_item" : "GodStick"
}

zh_cn.json:

{
  "item.godstick.god_stick_item" : "神棍"
}

语言文件解析

item.godstick.god_stick_item中,后面的是物品展示的名称
item:代表是物品
godstick:代表一开始配置的mod_id
god_stick_item:代表物品的注册名

物品模型json

在item下创建一个注册名.json的文件,内容如下

{
  "parent" : "minecraft:item/generated",
  "textures" : {
    "layer0" : "godstick:item/god_stick_item"
  }
}

物品模型

存放PNG格式的图片,图片名为物品模型json中god_stick_item,该图片为物品在游戏中展示的模型

注意每个文件的名字,模型json中订单的模型文件名一定要对应,不然可能出现物品没有模型的情况,语言文件中的名字和注册名要对应,不然会展示item.godstick.god_stick_item

结束!!!运行runClient体验吧

在这里插入图片描述

扩展

除了以上的操作可以新增自己的物品外,还有其他方法

创建物品

直接在我们的物品注册类中新建

public static final RegistryObject<Item> GodStickItem = ITEMS.register("god_stick_item", () -> new Item(new Item.Properties().defaultDurability(20).tab(CreativeModeTab.TAB_TOOLS).fireResistant().rarity(Rarity.COMMON)));

其中new Item()还可以使用其他mc自带的item,例如SwordItem(剑)等,这种的话就不需要自己手动配置模型等内容,游戏中出现的模型为mc原版模型

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>