Skip to content

Minecraft Modding (1.12.2) #1 - IBakedModel ​

はじめに ​

IBakedModelとかTileEntitySpecialRendererなどに関する解説記事があんまりないなーと思ったので、書いてみる。 アイテム/ブロックの追加などの基本的な部分については扱わない。素晴らしい記事がインターネット上にたくさんあるので、そちらを参照して欲しい。 環境構築は少しだけ扱う。

なお、サンプルコードは人口が多いであろうJavaで書くが、個人的には、スマートキャストやエルビス演算子などの便利な機能があるKotlinをお勧めする。

環境構築Tips ​

今から1.12.2でModdingをする場合、CleanroomMCのTemplateDevEnvを使うと簡単に環境を構築できる。 ちなみにKotlin用もある。 GregTechCEu/Buildscriptsも参考になると思う。

IBakedModelとはなに? ​

TESRと同じようにDynamicなRenderingを行うものである。 TESRが"active"にTileEntityを描画するのに対し、IBakedModelは"passive"である。 つまり、TESRのrenderメソッドは常に呼ばれ続けるが、IBakedModelのgetQuadsメソッドは、周りのブロックが変更された時などにのみ呼ばれる。

それと、クラス間の依存関係が多めで把握しづらい。せっかくなので以下にまとめてみた。

ICustomModelLoaderIModelIBakedModelIExtendedBlockStateBlock

作ってみる ​

ExampleModel.java
java
public class ExampleModel implements IModel {
    @Override
    public IBakedModel bake(IModelState state, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
        return new ExampleBakedModel(ModelLoaderRegistry.getMissingModel().bake(state, format, bakedTextureGetter));
    }
}
ClientProxy
java
public void preInit(FMLPreInitializationEvent e) {
    ModelLoaderRegistry.registerLoader(new ExampleModelLoader());
}

Contributors

Changelog

Released Under the MIT License