このページはForge wiki内の[Icons and TexturesTutorial]の翻訳記事です。多くが意訳で、雑な翻訳であること、見やすさに応じて太字などは独自に変えられている場合がありますのでご注意ください。
目次
Icons and Textures
終着点
- アイテム、ブロックに独自のアイコンやテクスチャをどのように利用するか理解する。
前提知識
- BaseModクラスを持っている
- アイテムかブロックの準備ができている
- ペイント系のアプリケーション
アイコン/テクスチャファイル
どのアイコン/テクスチャファイルでも、256個までのアイコン、テクスチャを含むことができます。 アイコン、テクスチャファイルはPNG形式である必要があり、幅と高さが等しく、16の倍数である必要があります。1つあたりのテクスチャ/アイコンを16*16にしたいなら、テクスチャ/アイコンファイル全体のサイズは256*256にしてください。1つあたりのテクスチャ/アイコンを32*32にしたいなら、テクスチャ/アイコンファイルの全体のサイズは512*512にしてください。もし、更に高画質にしたいならば、1024*1024にして、64*64のサイズのテクスチャ/アイコンファイルを扱えますが、ほとんどのPCでは64*64のサイズのテクスチャ/アイコンを満足に扱えないでしょう。
必ず必要なことではありませんが、アイテムのアイコンとブロックのテクスチャは独自のファイルに分けておいたほうが便利です。
256*256のテクスチャ/アイコンファイルであれば,16*16のサイズがそれぞれのテクスチャ/アイコンのサイズとなり、左上のインデックスが0となり、右に行くほどインデックスは1ずつ増えていき、16個目で1段下の左側から始まり、最後のスロットである右下は255となります。
テクスチャのロード
テクスチャとアイコンはクライアントサイドでのみ読み込まれるべきです。@Initメソッドで読み込む準備をしておけば、すべてがうまくいきます。Generic Base Modクラスを作る際に、CommonProxyクラスとClientProxyクラスを準備しました。テクスチャのロードにプロキシを利用するのは最も一般的なプロキシの使用法です。これらのクラスがどのようなものであったか忘れていたのであれば、いかに示しましょう。
package tutorial.generic; public class CommonProxy { public static String ITEMS_PNG = "/tutorial/generic/items.png"; public static String BLOCK_PNG = "/tutorial/generic/block.png"; // Client stuff public void registerRenderers () { // サーバー側のプロキシで行わなければいけないことは何もありません。 } }
package tutorial.generic.client; import net.minecraftforge.client.MinecraftForgeClient; import tutorial.generic.CommonProxy; public class ClientProxy extends CommonProxy { public void registerRenderers () { MinecraftForgeClient.preloadTexture(ITEMS_PNG); MinecraftForgeClient.preloadTexture(BLOCK_PNG); } }
registerRenderersがここでしていることは、ITEMS_PNGとBLOCK_PNGにある2つのファイルをプレロードすることです。ITEMS_PNGがアイテム用のアイコン、BLOCK_PNGがブロックのテクスチャですが、MODに必要ないのであれば除くこともできます。
jarファイルのルートからのパスを指定します。上記の例では、コンピューター上の位置では、 /forge/mcp/src/minecraft/tutorial/generic/items.png と /forge/mcp/src/minecraft/tutorial/generic/block.pngとなります。
一般的なエラー
- 存在しないテクスチャをロードすると、いくつかの黒い点を伴った白いテクスチャが読み込まれます。
- パスがスラッシュ(/)から始まっていない場合、Eclipse上ではうまく読み込まれないかもしれません。
getTextureFile
アイコンとテクスチャはプレロードするだけでは不十分です。ブロックもアイテムもgetTextureFileというStringを引数としてとるメソッドを持ちます。そのメソッドは、ITEMS_PNGかBLOCK_PNGのどちらかをアイテムかブロックかに応じて返すべきです。
アイテム用
public String getTextureFile () { return CommonProxy.ITEMS_PNG; }
ブロック用
public String getTextureFile () { return CommonProxy.BLOCK_PNG; }
終わりに
アイコンとテクスチャのロードは難しくはありません。テクスチャファイルのサンプルを御覧ください、すぐ理解できるはずです。ここではメソッドしか無いので、最後にソースコード全体は提示しません。
Generic's Icons and textures
GenericMODはGitHabにあるので、以下からサンプルを見たり取ったりすることができます。
次に何をしましょう?
ブロックやアイテムの作成の途中ならば、それらを終わらせるべきです。