提供: Minecraft Modding Wiki
2013年10月12日 (土) 00:36時点におけるEnkunkun (トーク | 投稿記録)による版 (CreativeTabの追加よりコピー)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

この記事は"Minecraft Forge4.2.5.317以降"を前提MODとしています。

CreativeTabの追加

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

ソースコード

  • CreativeTabSampleCore.java
package mods.creativetabsample;

import net.minecraft.src.*;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.network.NetworkMod;

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"
)
@NetworkMod
(
	clientSideRequired = true,
	serverSideRequired = false
)
public class CreativeTabSampleCore
{
	public static final CreativeTabs tabsSample = new CreativeTabSample("Sample");
	
	public static Item itemSample;
	
	@Mod.Init
	public void init(FMLInitializationEvent event)
	{
		itemSample = (new ItemSample(7000)).setIconCoord(10, 10).setItemName("creativesample").setCreativeTab(tabsSample);
		
		LanguageRegistry.addName(itemSample, "CreativeSample");
	}
}
  • CreativeTabSample.java
package mods.creativetabsample;

import net.minecraft.src.*;

import cpw.mods.fml.common.Side;
import cpw.mods.fml.common.asm.SideOnly;

public class CreativeTabSample extends CreativeTabs
{
	public CreativeTabSample(String type)
	{
		super(type);
	}
	
	@Override
	@SideOnly(Side.CLIENT)
	public int getTabIconItemIndex()
	{
		return CreativeTabSampleCore.itemSample.shiftedIndex;
	}
	
	@Override
	@SideOnly(Side.CLIENT)
	public String getTranslatedTabLabel()
	{
		return "TabSample";
	}
}

解説

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

CreativeTabSampleCoreクラス

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

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

itemSample = (new ItemSample(7000)).setIconCoord(10, 10).setItemName("creativesample").setCreativeTab(tabsSample);

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

CreativeTabSampleクラス

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

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

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

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

実際の挙動

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