1.7.10の開発講座を修正中です。このページには誤りや古い情報が含まれる可能性があります。
新しいクリエイティブタブを追加する。
目次
ソースコード
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");
}
}
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のクリエイティブタブを追加している部分。
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");
/*略*/
}
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;
}
}
過去の質問
- タブをブロックにするときはどこをどのように変えれば良いのでしょう
- getTabIconItemの戻り値をItem.getItemFromBlock(block)にするか、getIconItemStackをオーバーライドするとできるかと思います。