2.9 KiB
title = "Creative Tabs"
date = "2016-06-14 16:26:00 -0400"
In this tutorial, we are going to create a custom creative tab that players can use to access all of our items when in creative mode.
Creative Tab
First off, let's create our creative tab class. Create a class called TutorialTab
that extends CreativeTabs
. It will need a couple things:
- A no-args constructor that calls the super constructor with the correct label.
- An overriden
getTabIconItem
which returns the item to render as the icon.
The String
passed into the super constructor is the label. The label is used to determine the localization key for the tab. For the label, we are going to pass in TutorialMod.modId
so Minecraft uses our mod's ID to determine the localization key.
The item stack we return from the getTabIconItem
will be rendered on the tab in the creative inventory GUI. We'll use ModItems.ingotCopper
as the icon so our creative tab has a nice distinctive icon.
package net.shadowfacts.tutorial.client;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemStack;
import net.shadowfacts.tutorial.TutorialMod;
import net.shadowfacts.tutorial.item.ModItems;
public class TutorialTab extends CreativeTabs {
public TutorialTab() {
super(TutorialMod.modId);
}
@Override
public ItemStack getTabIconItem() {
return new ItemStack(ModItems.ingotCopper);
}
}
Let's add a field to our TutorialMod
class that stores the instance of our creative tab.
// ...
public static final TutorialTab creativeTab = new TutorialTab();
// ...
Updating Everything Else
Now that we've got our creative tab all setup, let's change all of our items and blocks to use it.
Let's add a line to the end of our BlockBase
and ItemBase
constructors that calls setCreativeTab
with our creative tab.
public BlockBase(Material material, String name) {
// ...
setCreativeTab(TutorialMod.creativeTab);
}
public ItemBase(String name) {
// ...
setCreativeTab(TutorialMod.creativeTab);
}
We'll also need to add this line to the BlockCropCorn
and ItemCornSeed
classes because they don't extend our base item/block classes.
public BlockCropCorn() {
// ...
setCreativeTab(TutorialMod.creativeTab);
}
public ItemCornSeed() {
// ...
setCreativeTab(TutorialMod.creativeTab);
}
Lastly, we'll need to update our ModBlocks
and ModItems
classes so we're no longer setting the creative tabs to other tabs.
Remove the setCreativeTab
call from the end of the BlockOre constructor on the line where we register/create the copper ore block.
Remove the setCreativeTab
calls from the copper ingot and corn items in ModItems
.
All Done!
Now when we start the game and open the creative inventory, we should be able to see our creative tab on the second page.