アイテムの追加(1.7.10)

1.7.10の開発講座を修正中です。このページには誤りや古い情報が含まれる可能性があります。

特殊な機能を持たないアイテムを追加します。

ソースコード

package tutorial.aluminiummod;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = "AluminiumMod", name = "Aluminium Mod", version = "1.0.0")
public class AluminiumMod {

	//追加するアイテムの宣言
	public static Item aluminium;

	@EventHandler
	public void preInit(FMLPreInitializationEvent event) {
		//Itemのインスタンスを生成し、代入する。
		aluminium = new Item()
		//クリエイティブタブの登録
		.setCreativeTab(CreativeTabs.tabMaterials)
		//システム名の登録
		.setUnlocalizedName("aluminium")
		//テクスチャ名の登録
		.setTextureName("aluminiummod:aluminium");
		//GameRegistryへの登録
		GameRegistry.registerItem(aluminium, "aluminium");
	}

}

解説

void preInit(FMLPreInitializationEvent event)

modが読み込まれるとき最初に行われる処理。 アイテムやブロックの追加をする。 @EventHandlerをつける。

Mod

String modid, String name, String versionなど。modのコアクラスをFMLに登録するためのアノテーション。 modidは必須。nameとversionは、modsリストで表示される。

Item

minecraftのアイテムはすべてこのクラスを継承している。modで追加するアイテムもこのクラスを継承することになる。

Item setCreativetab(CreativeTabs tab)

アイテムをクリエイティブタブに登録するメソッド。 バニラのクリエイティブタブはCreativeTabsにまとめられている。

バニラのクリエイティブタブの一覧
tabBlock:建築ブロック
tabBrewing:醸造
tabCombat:戦闘
tabDecorations:装飾ブロック
tabFood:食料
tabMaterials:材料
tabMisc:その他
tabRedStone:レッドストーン
tabTools:道具
tabTransport:移動

Item setUnlocalizedName(String name)

アイテムのシステム名を登録するメソッド。

Item setTextureName(String name)

アイテムのテクスチャ名を登録するメソッド。 テクスチャ名は、”小文字のmodid:ファイル名(拡張子なし)”で指定する。

GameRegistry

modが追加したアイテム・ブロック・レシピなどを登録するためのクラス。

Item registerItem(Item item, String name)

GameRegistryに追加アイテムを登録するメソッド。 引数は追加アイテムと登録名。

使用例

オファレンレーザーマガジン [白]を追加する部分。 メタデータなどを使っている箇所は省略した。

package nahama.ofalenmod;

/*略*/

/**@author Akasata Nahama*/
@Mod(modid = OfalenModCore.MODID, name = OfalenModCore.MODNAME, version = OfalenModCore.VERSION)
public class OfalenModCore {

	public static final String MODID = "OfalenMod";
	public static final String MODNAME = "Ofalen Mod";
	public static final String VERSION = "[1.7.10]1.0.0";

/*略*/

	/**最初に行われる処理。アイテム・ブロックの追加などを行う*/
	@EventHandler
	public void preInit(FMLPreInitializationEvent event) {
/*略*/
		//アイテムを設定するメソッドを実行
		OfalenModItemCore.registerItem();
/*略*/
	}
/*略*/
}
package nahama.ofalenmod.core;

/*略*/

public class OfalenModItemCore {

/*略*/
	public static Item magazineLaserWhite;

	/**アイテムを設定する*/
	public static void registerItem () {
/*略*/
		magazineLaserWhite = new LaserMagazine()
		.setUnlocalizedName("magazineLaserWhite")
		.setTextureName("ofalenmod:laser_magazine_white");
		GameRegistry.registerItem(magazineLaserWhite, "magazineLaserWhite");
	}

}
package nahama.ofalenmod.item;

/*略*/

public class LaserMagazine extends Item {

	public LaserMagazine() {
		super();
		this.setCreativeTab(OfalenModCore.tabOfalen);
/*略*/
	}
/*略*/
}

このままテストプレイをしてみると、テクスチャがない状態ではピンクと黒のデフォルトテクスチャになってしまう。 また、名前がitem.aluminium.nameとなる。 これらの解決方法は、次の次、リソースの作成で。

過去の質問

  • アイテムIDを指定する方法はありますか?
    • 1.7.10では、MOD側からアイテムID・ブロックIDを指定することはできません。

コメントはこちら。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

[最終更新日]2017/11/25 20:50