提供: Minecraft Modding Wiki
移動先: 案内検索

この記事は"Minecraft Forge Universal 9.10.0.xxx~"を前提MODとしています。

CreativeTabの追加

ブロックやアイテムの初期化時やコンストラクタで, 既存のクリエイティブタブのどのタブに追加するかを指定するメソッドsetCreativeTab()を呼び出すことで, 追加したアイテムをどのカテゴリにするか決めることができる. しかし, 大量のアイテムを追加した場合や, 多くのMODを追加した場合, クリエイティブタブ上で探すのは簡単ではない. この状況を打破するために, Forge4.2.5.317でクリエイティブタブが拡張され, 任意のタブを追加できるようになった.

ソースコード

  • CreativeTabSampleCore.java
package mods.creativetabsample;

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.FMLInitializationEvent;
import cpw.mods.fml.common.registry.LanguageRegistry;

import mods.itemsample.ItemSample;

@Mod(modid = "CreativeTabSampleCore", name  = "CreativeTabSampleCore", version = "1.0.0")
public class CreativeTabSampleCore
{
	public static final CreativeTabs tabsSample = new CreativeTabSample("Sample");
	
	public static Item itemSample;
	
	@EventHandler
	public void init(FMLInitializationEvent event)
	{
		itemSample = (new ItemSample(7000)).setCreativeTab(tabsSample);
		
		LanguageRegistry.addName(itemSample, "CreativeTabSample");
	}
}
  • CreativeTabSample.java
package mods.creativetabsample;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

public class CreativeTabSample extends CreativeTabs
{
	public CreativeTabSample(String label)
	{
		super(label);
	}
	
	@Override
	@SideOnly(Side.CLIENT)
	public Item getTabIconItem()
	{
		return CreativeTabSampleCore.itemSample;
	}

	@Override
	@SideOnly(Side.CLIENT)
	public String getTranslatedTabLabel()
	{
		return "TabSample";
	}

}

解説

無機能アイテムの追加で作成したItemSampleクラスを利用している.

CreativeTabSampleCoreクラス

public static final CreativeTabs tabsSample = new CreativeTabSample("Sample");

新しいタブを作成, どこからでも参照できるようにかつ, この初期化以降変更されないようにする.

itemSample = (new ItemSample(7000)).setCreativeTab(tabsSample);

setCreativeTabの引数に先ほどのCreativeTabsのインスタンスを渡す. これによって新しいタブが追加され, このアイテムはそのタブでのみ表示されるようになる.

CreativeTabSampleクラス

public int getTabIconItemIndex()
{
	return CreativeTabSampleCore.itemSample.itemID;
}

クリエイティブタブ上に表示されるアイコンのIDを指定する. ブロックならblockID, アイテムならitemIDである.

public String getTranslatedTabLabel()
{
	return "TabSample";
}

クリエイティブタブ上に表示されるタブ名を指定する.

実際の挙動

クリエイティブモードでインベントリを開くと, インベントリ上部に切り替えボタンが増える. 切り替えボタンをクリックすることで追加されたタブを見ることができる. この拡張によりMOD毎にタブを追加可能になり, アイテムを多く追加するMODではより見やすくなる. なお他のMODと併用した場合, MODの読み込まれた順序でタブが追加されることに注意.