MOD製作チュートリアル > クリエイティブタブの追加

概要

新しいクリエイティブタブを追加する。

ソースコード

  • AluminiumMod.java
package tutorial.aluminiummod;
 
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;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
 
@Mod(modid = AluminiumMod.MODID, name = AluminiumMod.MODNAME, version = AluminiumMod.VERSION)
public class AluminiumMod {
 
	public static final String MODID = "AluminiumMod";
	public static final String MODNAME = "Aluminium Mod";
	public static final String VERSION = "1.0.0";
 
	public static CreativeTabs tabAluminium = new AluminiumTab("Aluminiumtab");
 
	public static Item aluminium;
 
	@EventHandler
	public void perInit(FMLPreInitializationEvent event) {
		aluminium = new Item()
				.setCreativeTab(AluminiumMod.tabAluminium)
				.setUnlocalizedName("aluminium")
				.setTextureName("aluminiummod:aluminium");
		GameRegistry.registerItem(aluminium, "aluminium");
	}
 
}
 

  • AluminiumTab.java
package tutorial.aluminiummod;
 
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
 
public class AluminiumTab extends CreativeTabs {
 
	public AluminiumTab(String label) {
		super(label);
	}
 
	@Override
	public Item getTabIconItem() {
		return AluminiumMod.aluminium;
	}
 
}
 

解説

CreativeTabs

コンストラクタ(String label)

引数は表示されるクリエイティブタブの名前。
言語ファイルに
itemGroup.Aluminiumtab=アルミニウム
と記入すれば設定できる。

Item getTabIconItem()

クリエイティブタブのアイコンとして表示するアイテムを返す。
オファレンMODでは、このメソッドを呼び出しているItemStack getIconItemStack()をオーバーライドすることでメタデータを変えている。

使用例

オファレンMODのクリエイティブタブを追加している部分。
+ オファレン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";
 
/*略*/
 
	/** 追加されたクリエイティブタブ */
	public static final CreativeTabs tabOfalen = new OfalenTab("ofalentab");
 
/*略*/
 
}
 

  • OfalenTab.java
package nahama.ofalenmod.creativetab;
 
import java.util.Random;
 
import nahama.ofalenmod.core.OfalenModItemCore;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
 
public class OfalenTab extends CreativeTabs {
 
	private Random random = new Random();
	private int count = 0;
	private int meta = -1;
 
	public OfalenTab(String label) {
		super(label);
	}
 
	/** アイコンの設定 */
	@Override
	@SideOnly(Side.CLIENT)
	public ItemStack getIconItemStack() {
		if (count < 1) {
			count = 100;
			meta++;
			if (meta > 3)
				meta = 0;
		} else {
			count--;
		}
		return new ItemStack(OfalenModItemCore.ofalen, 1, meta);
	}
 
	@Override
	@SideOnly(Side.CLIENT)
	public Item getTabIconItem() {
		return null;
	}
 
}
 

コメント

この項目に関する質問などをどうぞ。
  • タブをブロックにするときはどこをどのように変えれば良いのでしょう - さくら 2016-04-04 02:36:45
    • getTabIconItemの戻り値をItem.getItemFromBlock(block)にするか、getIconItemStackをオーバーライドするとできるかと思います。 - 赤砂蛇凪浜 2016-04-04 07:45:27
      • ありがとうございます! - さくら 2016-04-05 02:43:20
最終更新:2015年11月20日 15:00