今回は、前回の記事で追加したアイテムにテクスチャを設定するよ。

SPONSERD LINK

テクスチャ用の画像(PNG ファイル)

テクスチャ用の画像を作る。
16 x 16 の PNG ファイルを用意する。アイテムの形に合わせて透過の設定する。

筆者は下記の画像を用意した。

gopichand.png
gopichand.png

gopichandhead.png
gopichandhead.png

gopichandbody.png
gopichandbody.png

ironstring.png
ironstring.png

リソース用のソース・フォルダーとパッケージ

テクスチャ用の画像ファイルやローカライズに使うテキストファイルを保存するソース・フォルダーを作成する。
クラスを保存しているソース・フォルダー java と同じレベルの階層に resource という名前でソース・フォルダーを新規作成する。

テクスチャ用の画像データを登録するパッケージを作成する。

assets.『任意のパッケージの名前』.textures.items

筆者は、下記のように作成した。

assets.gopichandmod.textures.items

画像ファイルをプロジェクトに登録する

先ほど、作成したパッケージに画像ファイルを登録する。

"パッケージ・エクスプローラー"のパッケージ assets.gopichandmod.textures.items にファイルをドラックアンドドロップする。

“ファイル操作”のダイアログが表示され、“ファイルをコピー”か“ファイルへリンク”か尋ねられる。

Eclipse の“ファイル操作”のダイアログ
出典:Eclipse の“ファイル操作”のダイアログ

どちらも一短一長だけど、“ファイルへリンク”を選択した場合。元のファイルを移動するとパスを再設定しなければならなくなるので、“ファイルをコピー”の方が管理しやすいと思う。

画像ファイルを追加したプロジェクト構成は下記のとおりになった。

java
	com.watermelonheadman.gopichandmod
		GopichandMod.java
		Recipes.java
	com.watermelonheadman.gopichandmod.items
		GopichandItems.java
		ItemGopichand.java
		ItemGopichandBody.java
		ItemGopichandHead.java
		ItemIronString.java
resource
	assets.gopichandmod.textures.items
		gopichand.png
		gopichandbody.png
		gopichandhead.png
		ironstring.png
Eclipse の“パッケージ・エクスプローラー”
出典:Eclipse の“パッケージ・エクスプローラー”

アイテムにテクスチャを指定する

前回の記事で作ったアイテムのクラスそれぞれにテクスチャに使う画像を指定する処理を追加する。

package com.watermelonheadman.gopichandmod.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.registry.GameRegistry;

public class ItemGopichand extends Item
{
	public ItemGopichand()
	{
		String name = "gopichand";

		this.setCreativeTab( CreativeTabs.tabMisc );
		this.setUnlocalizedName( name );
		maxStackSize = 1;
		this.setTextureName( "gopichandmod:gopichand" );

		GameRegistry.registerItem( this, name );

		return;
	}
}

コンストラクターの中で関数 this.setTextureName を実行して、テクスチャを設定する。

		this.setTextureName( "gopichandmod:gopichand" );

引数に指定する画像を下記の書式で入力する。

"[パッケージの名前]:[画像ファイルの名前(拡張子を除く)]"

このアイテムの場合は、assets.gopichandmod.textures.items に含まれる gopichandmod.png をテクスチャに指定するので

"gopichandmod:gopichand"

となる。

もし、テクスチャ用のパッケージを assets.watermelonheadman.gopichandmod.textures.items のように入れ子にしている場合は

watermelonheadman.gopichandmod:gopichandmod

と入力する。

package com.watermelonheadman.gopichandmod.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.registry.GameRegistry;

public class ItemGopichandBody extends Item
{
	public ItemGopichandBody()
	{
		String name = "gopichandbody";

		this.setCreativeTab( CreativeTabs.tabMisc );
		this.setUnlocalizedName( name );
		maxStackSize = 1;
		this.setTextureName( "gopichandmod:gopichandbody" );

		GameRegistry.registerItem( this, name );

		return;
	}
}
package com.watermelonheadman.gopichandmod.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.registry.GameRegistry;

public class ItemGopichandHead extends Item
{
	public ItemGopichandHead()
	{
		String name = "gopichandhead";

		this.setCreativeTab( CreativeTabs.tabMisc );
		this.setUnlocalizedName( name );
		maxStackSize = 1;
		this.setTextureName( "gopichandmod:gopichandhead" );

		GameRegistry.registerItem( this, name );

		return;
	}
}
package com.watermelonheadman.gopichandmod.items;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.registry.GameRegistry;

public class ItemIronString extends Item
{
	public ItemIronString()
	{
		String name = "ironstring";

		this.setCreativeTab( CreativeTabs.tabMisc );
		this.setUnlocalizedName( name );
		maxStackSize = 64;
		this.setTextureName( "gopichandmod:ironstring" );

		GameRegistry.registerItem( this, name );

		return;
	}
}

テスト

テクスチャの設定が反映されているか確かめる為、クリエイティブモードでテストする。

アイテムのアイコンがそれぞれ指定したテクスチャに変わっていれば、成功です。

Forge 導入済み Minecraft
設定したテクスチャが反映されたアイテム(インベントリ)
出典:Forge 導入済み Minecraft
Forge 導入済み Minecraft
設定したテクスチャが反映されたアイテムを持つ
出典:Forge 導入済み Minecraft
Forge 導入済み Minecraft
狼にテクスチャが反映されたゴピチャンドを与えてみる
出典:Forge 導入済み Minecraft

まだ、変なアイコンのままであれば、ソース・フォルダーやパッケージ、画像ファイルの名前を間違えていないかチェックする。

お疲れ様でした!

次回予告

次回は、アイテムの名前を日本語と英語(USA)にローカライズするよ。