提供: Minecraft Modding Wiki
移動先: 案内検索
(CreativeTabの追加よりコピー)
 
(1.6.2の仕様へ変更)
 
1行目: 1行目:
{{前提MOD|reqmod="Minecraft Forge4.2.5.317以降"}}
+
{{前提MOD|reqmod="Minecraft Forge Universal 9.10.0.xxx~"}}
  
 
==CreativeTabの追加==
 
==CreativeTabの追加==
11行目: 11行目:
 
package mods.creativetabsample;
 
package mods.creativetabsample;
  
import net.minecraft.src.*;
+
import net.minecraft.creativetab.CreativeTabs;
 
+
import net.minecraft.item.Item;
 
import cpw.mods.fml.common.Mod;
 
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.network.NetworkMod;
+
import cpw.mods.fml.common.Mod.EventHandler;
 
 
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
import cpw.mods.fml.common.event.FMLInitializationEvent;
 
 
import cpw.mods.fml.common.registry.LanguageRegistry;
 
import cpw.mods.fml.common.registry.LanguageRegistry;
  
 
import mods.itemsample.ItemSample;
 
import mods.itemsample.ItemSample;
  
@Mod
+
@Mod(modid = "CreativeTabSampleCore", name  = "CreativeTabSampleCore", version = "1.0.0")
(
 
modid = "CreativeTabSampleCore",
 
name  = "CreativeTabSampleCore",
 
version = "1.0.0"
 
)
 
@NetworkMod
 
(
 
clientSideRequired = true,
 
serverSideRequired = false
 
)
 
 
public class CreativeTabSampleCore
 
public class CreativeTabSampleCore
 
{
 
{
39行目: 27行目:
 
public static Item itemSample;
 
public static Item itemSample;
 
 
@Mod.Init
+
@EventHandler
 
public void init(FMLInitializationEvent event)
 
public void init(FMLInitializationEvent event)
 
{
 
{
itemSample = (new ItemSample(7000)).setIconCoord(10, 10).setItemName("creativesample").setCreativeTab(tabsSample);
+
itemSample = (new ItemSample(7000)).setCreativeTab(tabsSample);
 
 
LanguageRegistry.addName(itemSample, "CreativeSample");
+
LanguageRegistry.addName(itemSample, "CreativeTabSample");
 
}
 
}
 
}
 
}
53行目: 41行目:
 
package mods.creativetabsample;
 
package mods.creativetabsample;
  
import net.minecraft.src.*;
+
import cpw.mods.fml.relauncher.Side;
 
+
import cpw.mods.fml.relauncher.SideOnly;
import cpw.mods.fml.common.Side;
+
import net.minecraft.creativetab.CreativeTabs;
import cpw.mods.fml.common.asm.SideOnly;
+
import net.minecraft.item.Item;
  
 
public class CreativeTabSample extends CreativeTabs
 
public class CreativeTabSample extends CreativeTabs
 
{
 
{
public CreativeTabSample(String type)
+
public CreativeTabSample(String label)
 
{
 
{
super(type);
+
super(label);
 
}
 
}
 
 
 
@Override
 
@Override
 
@SideOnly(Side.CLIENT)
 
@SideOnly(Side.CLIENT)
public int getTabIconItemIndex()
+
public Item getTabIconItem()
 
{
 
{
return CreativeTabSampleCore.itemSample.shiftedIndex;
+
return CreativeTabSampleCore.itemSample;
 
}
 
}
+
 
 
@Override
 
@Override
 
@SideOnly(Side.CLIENT)
 
@SideOnly(Side.CLIENT)
78行目: 66行目:
 
return "TabSample";
 
return "TabSample";
 
}
 
}
 +
 
}
 
}
 
</source>
 
</source>
95行目: 84行目:
  
 
<source lang = "java">
 
<source lang = "java">
itemSample = (new ItemSample(7000)).setIconCoord(10, 10).setItemName("creativesample").setCreativeTab(tabsSample);
+
itemSample = (new ItemSample(7000)).setCreativeTab(tabsSample);
 
</source>
 
</source>
 
<blockquote>
 
<blockquote>
105行目: 94行目:
 
public int getTabIconItemIndex()
 
public int getTabIconItemIndex()
 
{
 
{
return CreativeTabSampleCore.itemSample.shiftedIndex;
+
return CreativeTabSampleCore.itemSample.itemID;
 
}
 
}
 
</source>
 
</source>
 
<blockquote>
 
<blockquote>
クリエイティブタブ上に表示されるアイコンのインデックスを指定する. ブロックなら'''blockID''', アイテムなら'''shiftedIndex'''である.
+
クリエイティブタブ上に表示されるアイコンのIDを指定する. ブロックなら'''blockID''', アイテムなら'''itemID'''である.
 
</blockquote>
 
</blockquote>
  

2013年10月12日 (土) 00:45時点における最新版

この記事は"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の読み込まれた順序でタブが追加されることに注意.