注册方块和物品
forge文档
官网文档有示例代码,因为版本更新可能有些方法会弃用导致报错,最好还是参考官网上的示例代码或是下载mdk,通过mdk生成项目后会有ExampleMod.java
示例代码
forge mdk下载地址
// 方块列表public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID);// 物品列表public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);// 选项卡列表public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);// 定义方块public static final RegistryObject<Block> myblock = BLOCKS.register("myblock", ()->new Block(BlockBehaviour.Properties.of().setId(BLOCKS.key("myblock"))));// 定义物品public static final RegistryObject<Item> myblockItem = ITEMS.register("myblock", ()->new BlockItem(myblock.get(), new Item.Properties().setId(ITEMS.key("myblock"))));// 自定义选项卡public static final RegistryObject<CreativeModeTab> EXAMPLE_TAB = CREATIVE_MODE_TABS.register("my_tab",() -> CreativeModeTab.builder().title(Component.translatable("itemGroup.mytabname")).withTabsBefore(CreativeModeTabs.COMBAT).icon(() -> myblockItem .get().getDefaultInstance()).displayItems((parameters, output) -> {output.accept(myblock.get());output.accept(exchangeCouponsItem.get());}).build());public TestMod(FMLJavaModLoadingContext context) {IEventBus modEventBus = context.getModEventBus();// 注册方块BLOCKS.register(modEventBus);// 注册物品ITEMS.register(modEventBus);// 注册自定义选项卡CREATIVE_MODE_TABS.register(modEventBus);// 注册选项卡modEventBus.addListener(this::addCreativeTab);}public void addCreativeTab(BuildCreativeModeTabContentsEvent event) {// 将自定义物品放到功能方块下if(event.getTabKey() == CreativeModeTabs.FUNCTIONAL_BLOCKS) {event.accept(myblock);}}
添加材质
创建资源包
在blockstates创建myblock.json
文件
{"variants": {"": [{"model": "testmod:block/myblock"},{"model": "testmod:block/myblock","y": 90},{"model": "testmod:block/myblock","y": 180},{"model": "testmod:block/myblock","y": 270}]}
}
在items创建myblock.json
文件
{"model": {"type": "minecraft:model","model": "testmod:block/myblock"}
}
在lang创建en_us.json
和zh_cn.json
文件,定义方块的中英文名称
{"block.testmod.myblock" : "我的方块","item.testmod.myblock" : "我的方块","itemGroup.mytabname": "我的选项卡"
}
在models.block创建myblock.json
文件
{"credit": "Made with Blockbench","parent": "minecraft:block/cube_all","texture_size": [64, 64],"textures": {"0": "testmod:block/myblock","particle": "testmod:block/myblock"},"elements": [{"from": [0, 0, 0],"to": [16, 16, 16],"faces": {"north": {"uv": [0, 0, 4, 4], "texture": "#0"},"east": {"uv": [0, 4, 4, 8], "texture": "#0"},"south": {"uv": [4, 0, 8, 4], "texture": "#0"},"west": {"uv": [4, 4, 8, 8], "texture": "#0"},"up": {"uv": [4, 12, 0, 8], "texture": "#0"},"down": {"uv": [12, 0, 8, 4], "texture": "#0"}}}]
}
在models.item创建myblock.json
文件
{"parent": "testmod:block/myblock"
}
在textures.block创建myblock.png
文件
效果
注
- textures.block和models.block可以通过
blockbench
软件创建 - 资源包包里的testmod为定义的modid,myblock为方块id