この記事は"Minecraft Forge Universal 9.10.0.xxx~"を前提MODとしています。 |
1.6でテクスチャの管理方法が変更されたことによる指定方法の変更点を解説する。
目次
テクスチャの保存フォルダ
テクスチャの保存フォルダ階層は以下の様なルールに基づいている必要が有る。
(Item)/assets/<domain>/textures/items/hoge.png
(Block)/assets/<domain>/textures/blocks/hoge.png
(その他、GUI等)/assets/<Domain>/subfolder(階層自由)/hoge.png
コーディング時に指定する書式は、ItemとBlockは
"domain:hoge"
その他、GUIやEntityのテクスチャの指定は
"domain:subfolder/hoge.png"
か、あるいは、2変数指定の場合は,
"domain", "subfolder/hoge.png"
となる。
ItemとBlockのアイコンテクスチャ指定方法
ItemとBlockのアイコンテクスチャの指定はsetTextureNameメソッドを用いて以下のように記述する。
public static Item hoge = new Item(ID).setTextureName("domain:textureName"); public static Block foo = new Block(ID).setTextureName("domain:textureName");
GUIのテクスチャ指定方法
GUI(やその他の場合)のテクスチャの指定にはResourceLocationクラスを用いる。まず、GUIのクラスに以下のクラスメンバ変数を追加。
private static final ResourceLocation GUITEXTURE = new ResourceLocation("domain", "gui.png");
そして、drawGuiContainerBackgroundLayerメソッドか、drawScreenメソッド内の最初に、以下のコードを挿入。
mc.getTextureManager().bindTexture(GUITEXTURE);
Entityのテクスチャの指定方法
EntityのRenderクラス内に、GUIと同様にResourceLocation変数を用意する。
private static final ResourceLocation TEXTURE = new ResourceLocation("domain", "gui.png");
そして、getEntityTextureメソッドをオーバーライドし、以下のように変更する。
@Override protected ResourceLocation getEntityTexture(Entity entity) { return TEXTURE; }
そして、doRenderメソッド内の最初の方で、以下のコードを挿入する。
this.bindEntityTexture(Entityのインスタンス);
TileEntitySpecialRendererでのテクスチャの指定方法
TileEntitySpecialRendererクラス内に、GUIと同様にResourceLocation変数を用意する。
private static final ResourceLocation TEXTURE = new ResourceLocation("domain", "gui.png");
そして、renderTileEntityAtメソッド内の最初の方で、以下のコードを挿入する。
this.bindTexture(TEXTURE);