1.1. IBakedModel
IBakedModel
是 Minecraft 中所有方块和物品模型的基础。它的核心在于一个获取 List<BakedQuad>
的方法,而这个 List<BakedQuad>
则代表了一系列已经准备就绪,丢给显卡就可以渲染的 Quad 数据。
public class BakedBrandNewModel implements IBakedModel {
@Override
public List<BakedQuad> getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
// 核心方法:获得 List<BakedQuad>
// 第一个参数自然就是 IBlockState,可以在这里获得要渲染的方块的方块状态。
// 第二个参数指定了要获取的 List<BakedQuad> 是哪个方向上的。参考原版方块六个面就不难想象这是什么意思了。
// 第三个参数是…… 随机数…… https://xkcd.com/221/ 实际上在某些时候它和方块的位置有关。
return Collections.emptyList(); // 返回这个就可以让这模型啥都渲染不出来。都没数据了,渲染什么?
}
@Override
public boolean isAmbientOcclusion()
{
// 平滑光照/环境光遮蔽。
return true;
}
@Override
public boolean isGui3d()
{
// GUI 内 3D 效果,但笔者至今都看不出差别。
return true;
}
@Override
public boolean isBuiltInRenderer()
{
// 当返回 true 时,将调用 TileEntityItemStackRenderer 来进行绘制。
// 99% 的时候你都应该返回 false。
// 关于 TileEntityItemStackRenderer 的信息可参考本章 Forge 扩展部分的 TEISR 一节。
return false;
}
@Override
public TextureAtlasSprite getParticleTexture()
{
return null;
// 实际上你应该返回点什么的。它代表了方块破坏时、玩家在上面奔跑
// 或玩家摔上面等情况下使用的粒子效果的纹理。
}
@Override
public ItemOverrideList getOverrides()
{
// 获取该模型的物品 Override 列表,详见对 ItemOverrideList 的介绍。
// 一般情况下只需要返回 ItemOverrideList.NONE。
return ItemOverrideList.NONE;
}
}