MOD製作チュートリアル > アイテムの追加

概要

何の機能もない基本的なアイテムを追加する。

ソースコード

  • AluminiumMod.java
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");
	}
 
}
 

解説

AluminiumMod

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に追加アイテムを登録するメソッド。
引数は追加アイテムと登録名。

使用例

オファレンレーザーマガジン [白]を追加する部分。
メタデータなどを使っている箇所は省略した。
+ オファレンMOD
  • OfalenModCore.java
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();
/*略*/
	}
/*略*/
}
 

  • OfalenModItemCore.java
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");
	}
 
}
 

  • LaserMagazine.java
package nahama.ofalenmod.item;
 
/*略*/
 
public class LaserMagazine extends Item {
 
	public LaserMagazine() {
		super();
		this.setCreativeTab(OfalenModCore.tabOfalen);
/*略*/
	}
/*略*/
}
 

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

コメント

この項目に関する質問などをどうぞ。
  • アイテムもブロックもそうですが、ItemIDを設定するコードを教えてほしいです! - 88taishi88 2015-10-11 19:24:58
    • 1.7.10では、mod側からアイテムID・ブロックIDを指定することはできません。 - 赤砂蛇凪浜 2015-10-11 19:52:11
      • そうですか・・・ ありがとうございます! - 88taishi88 2015-10-12 09:26:53
  • アイテムをいっぱい追加するとエラーがでるのでいっぱい追加するコードを教えてほしいです - yuma 2015-12-19 13:18:31
    • 「いっぱい」とありますが、具体的に何個ほど追加するとエラーが出るのでしょうか。また、エラーとはどのようなものでしょうか。 - 赤砂蛇凪浜 2015-12-19 19:45:29
  • メソッド名がperInitとなっておりますが、preInitと名付けたかったのかもしれません。 - 参考になります 2016-02-05 15:33:37
    • ご指摘ありがとうございます。修正しました。 - 赤砂蛇凪浜 2016-02-05 18:15:36
  • 必ずtabMaterialsのところでエラーを吐いてしまいます... - togtog 2017-03-26 14:19:04
    • 自己解決しました、MATERIALSにすることでエラーが出なくなりました。失礼しました。 - togtog 2017-03-26 14:20:51
最終更新:2016年02月05日 18:15