01-第一个物品
1. 编写注册方法dddd
新建类:./item/ModItems.java
,并定义一个名为 registerItems()
的方法,用户注册物品:
java
Registry.register(Registry<V> registry, Identifier id, T entry)
在本项目中我们编写这样的代码:
java
public class ModItems
{
private static Item registerItems(String id, Item item)
{
return Registry.register(Registries.ITEM,
Identifier.of(Testmod.MOD_ID, id),
item);
}
}
或者是第二种方法:
java
...
return Registry.register(Registries.ITEM,
RegistryKey.of(Registries.ITEM.getKey(), Identifier.of(Testmod.MOD_ID, id)),
item);
...
2. 创建物品、初始化
接下来创建物品:
java
public static final Item ICE_ETHER = registerItems("ice_ether", new Item(new Item.Settings()));
再添加一个初始化的方法(目前什么都不用写):
java
public static void registerModItems()
{
Testmod.LOGGER.info("Registering Items");
}
TIP
初始化的方法,目前仅仅用于激活 ModItems
类,加载我们写过的 ICE_ETHER
。
最后返回入口类,启动物品:
java
@Override
public void onInitialize()
{
ModItems.registerModItems();
}
3. 添加资源文件
在项目目录 resouses 下,新建以下目录:
| resources
└─ assets
└─ testmod
├─ lang
| ├─ en_us.json
| └─ zh_cn.json
├─ models
| └─item
| └─ ice_ether.json
└─ textures
└─ item
└─ ice_ether.png
各文件内容:
json
{
"item.testmod.ice_ether": "Ice Ether"
}
json
{
"item.testmod.ice_ether": "冰之以太"
}
json
{
"parent": "minecraft:item/generated",
"textures":
{
"layer0": "testmod:item/ice_ether"
}
}
(图片素材)
最后在游戏中通过 give @a testmod:ice_ether
获得自定义的物品。
4. 完整代码
Details
java
package com.nckname.testmod;
import com.nckname.testmod.item.ModItems;
import net.fabricmc.api.ModInitializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Testmod implements ModInitializer
{
public static final String MOD_ID = "testmod";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
@Override
public void onInitialize()
{
ModItems.registerModItems();
}
}
java
package com.nckname.testmod.item;
import com.nckname.testmod.Testmod;
import net.minecraft.item.Item;
import net.minecraft.registry.Registries;
import net.minecraft.registry.Registry;
import net.minecraft.registry.RegistryKey;
import net.minecraft.util.Identifier;
public class ModItems
{
public static final Item ICE_ETHER = registerItems("ice_ether", new Item(new Item.Settings()));
private static Item registerItems(String id, Item item)
{
return Registry.register(Registries.ITEM,
Identifier.of(Testmod.MOD_ID, id),
item);
}
public static void registerModItems()
{
Testmod.LOGGER.info("Registering Items");
}
}