本篇教程的视频

本篇教程的源代码

待发布

Blockbench

那么从本期教程开始,我们之后的教程可能会用到使用Blockbench制作的模型

这里我们也将开启一个关于的方块状态小系列

那么这里就先简单介绍一下Blockbench这个软件,这是一个轻量级的开源三维建模软件,主要用于Minecraft相关的建模或者动画

它的上手是非常简单的,只要对体块进行缩放移动旋转就可以完成一个模型的制作

当然,要精通那还得学很多东西,比如会绘制或者调节UV,但足够用了

Blockbench下载地址:下载

注意事项

在所有的Minecraft Java版模组开发中,如果你不使用obj模型,那么在新建模型选择模板时,
就必须选择Java版方块/物品,不要选择基岩版的,否则导出模型时没有json格式可选

注册物品和方块

导出模型

那么建模的过程我就不说了,实在不会就看看哔哩哔哩上的教程

建好模型之后,可以在右上栏的显示调整中调整包括GUI第一人称第三人称等不同角度下模型的显示

当然它也有预设,有武器木棍方块的,你也可以根据你的实际情况来保存你自己的预设

这个显示模式得调整,不然在游戏中会很怪

调整好之后,导出贴图,再点文件->导出->导出为Java版方块/物品,我们就得到了一个json文件

注册

物品和方块的注册就不用多说了,我们已经注册了很多很多方块和物品了

物品的

1
2
public static final DeferredItem<Item> BASEBALL_BAT = ITEMS.register("baseball_bat",
() -> new Item(new Item.Properties()));

这个就简单做了个棒球棍

方块的

1
2
3
public static final DeferredBlock<Block> ORANGE_NIGHTSTAND = 
registerBlock("orange_nightstand",
() -> new Block(Block.Properties.of().strength(3.0F, 3.0F).noOcclusion()));

这里我们还是实例化Block,从后面的教程开始我们就要自定义方块类了

不过在方块设置中,我们还加上了noOcclusion这个方法,这个指定方块是非实心的

这个方块并不是一个完整的方块,但我们直接实例化Block类,没有调整它的碰撞箱

数据生成

语言文件

1
2
add(ModItems.BASEBALL_BAT.get(), "Baseball Bat");
add(ModBlocks.ORANGE_NIGHTSTAND.get(), "Orange Nightstand");

模型文件

这里我们只要一个简单的方块状态文件即可,模型文件的话就用的是Blockbench导出的

1
2
3
4
5
6
7
simpleBlockWithoutBlockModel(ModBlocks.ORANGE_NIGHTSTAND);

private <T extends Block> void simpleBlockWithoutBlockModel(DeferredBlock<T> block) {
ResourceLocation model = modLoc("block/" + block.getId().getPath());
simpleBlock(block.get(), models().getExistingFile(model));
simpleBlockItem(block.get(), models().getExistingFile(model));
}

不过这里我们还需要一个方法来生成,因为NeoForge这里同样没有给我们封装好方法

物品模型用的是Blockbench导出的,这里就不用写了

贴图文件

贴图文件放到对应的位置即可

测试

跑好数据生成之后,我们就可以启动游戏进行测试了