Minecraft Forge 添加新方块
新建方块类
添加方块和添加物品大同小异。
可以创建 block.ModBlocks
类并将方块放在这里
定义方块变量
1 2
| public static final DeferredRegister<Block> BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, TutorialMod.MODID);
|
注册方块
方块的注册比物品多了几步:
- 要把方块以物品形式进行一次注册,用来放入物品栏里面的材质
- 将方块以方块形式注册一次,定义一些性质和信息
同样的定义几个辅助方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| private static <T extends Block> RegistryObject<T> registerBlock(String name, Supplier<T> block, CreativeModeTab tab) { RegistryObject<T> toRet = BLOCKS.register(name, block); registerBlockItem(name, toRet, tab); return toRet; }
private static <T extends Block> RegistryObject<Item> registerBlockItem(String name, RegistryObject<T> block, CreativeModeTab tab) { return ModItems.ITEMS.register(name, () -> new BlockItem(block.get(), new Item.Properties().tab(tab))); }
public static void register(IEventBus eventBus) { BLOCKS.register(eventBus); }
|
之后注册方块,为这个类增加成员
1 2 3 4 5 6
| public static final RegistryObject<Block> BEAR_BLOCK = registerBlock( "bear_block", () -> new Block(BlockBehaviour.Properties.of(Material.STONE) .strength(1f).requiresCorrectToolForDrops()), ModCreativeTab.tutorialmod_tab );
|
在这个方块中,方块的注册名称是 bear_block
,属性使用石头材料,硬度设置为 1,需要正确的工具才能让他有掉落物
最后在主类的构造方法中,注册方块
1
| ModBlocks.register(modEventBus);
|
绑定材质
新建 blockstate/bear_block.json
,写入
1 2 3 4 5 6 7
| { "variants": { "": { "model": "tutorialmod:block/bear_block" } } }
|
新建 models/block/bear_block.json
写入
1 2 3 4 5 6
| { "parent": "block/cube_all", "textures": { "all": "tutorialmod:block/bear_block" } }
|
这个文件把每个面都设置成同样的图片
新建 models/item/bear_block.json
1 2 3
| { "parent": "tutorialmod:block/bear_block" }
|
之后把材质图片放进 textures/block/bear_block.png
绑定翻译
在翻译文件中增加一条
1 2 3
| { "block.tutorialmod.bear_block": "Bear Block" }
|
中文同理
之后就可以启动了