    001package net.minecraft.creativetab;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005import java.util.List;
    006import net.minecraft.enchantment.Enchantment;
    007import net.minecraft.enchantment.EnchantmentData;
    008import net.minecraft.enchantment.EnumEnchantmentType;
    009import net.minecraft.item.Item;
    010import net.minecraft.item.ItemStack;
    011import net.minecraft.util.StringTranslate;
    012
    013public class CreativeTabs
    014{
    015    public static CreativeTabs[] creativeTabArray = new CreativeTabs[12];
    016    public static final CreativeTabs tabBlock = new CreativeTabBlock(0, "buildingBlocks");
    017    public static final CreativeTabs tabDecorations = new CreativeTabDeco(1, "decorations");
    018    public static final CreativeTabs tabRedstone = new CreativeTabRedstone(2, "redstone");
    019    public static final CreativeTabs tabTransport = new CreativeTabTransport(3, "transportation");
    020    public static final CreativeTabs tabMisc = new CreativeTabMisc(4, "misc");
    021    public static final CreativeTabs tabAllSearch = (new CreativeTabSearch(5, "search")).setBackgroundImageName("search.png");
    022    public static final CreativeTabs tabFood = new CreativeTabFood(6, "food");
    023    public static final CreativeTabs tabTools = new CreativeTabTools(7, "tools");
    024    public static final CreativeTabs tabCombat = new CreativeTabCombat(8, "combat");
    025    public static final CreativeTabs tabBrewing = new CreativeTabBrewing(9, "brewing");
    026    public static final CreativeTabs tabMaterials = new CreativeTabMaterial(10, "materials");
    027    public static final CreativeTabs tabInventory = (new CreativeTabInventory(11, "inventory")).setBackgroundImageName("survival_inv.png").setNoScrollbar().setNoTitle();
    028    private final int tabIndex;
    029    private final String tabLabel;
    030
    031    /** Texture to use. */
    032    private String backgroundImageName = "list_items.png";
    033    private boolean hasScrollbar = true;
    034
    035    /** Whether to draw the title in the foreground of the creative GUI */
    036    private boolean drawTitle = true;
    037
    038    public CreativeTabs(String label)
    039    {
    040        this(getNextID(), label);
    041    }
    042
    043    public CreativeTabs(int par1, String par2Str)
    044    {
    045        if (par1 >= creativeTabArray.length)
    046        {
    047            CreativeTabs[] tmp = new CreativeTabs[par1 + 1];
    048            for (int x = 0; x < creativeTabArray.length; x++)
    049            {
    050                tmp[x] = creativeTabArray[x];
    051            }
    052            creativeTabArray = tmp;
    053        }
    054        this.tabIndex = par1;
    055        this.tabLabel = par2Str;
    056        creativeTabArray[par1] = this;
    057    }
    058
    059    @SideOnly(Side.CLIENT)
    060    public int getTabIndex()
    061    {
    062        return this.tabIndex;
    063    }
    064
    065    public CreativeTabs setBackgroundImageName(String par1Str)
    066    {
    067        this.backgroundImageName = par1Str;
    068        return this;
    069    }
    070
    071    @SideOnly(Side.CLIENT)
    072    public String getTabLabel()
    073    {
    074        return this.tabLabel;
    075    }
    076
    077    @SideOnly(Side.CLIENT)
    078
    079    /**
    080     * Gets the translated Label.
    081     */
    082    public String getTranslatedTabLabel()
    083    {
    084        return StringTranslate.getInstance().translateKey("itemGroup." + this.getTabLabel());
    085    }
    086
    087    @SideOnly(Side.CLIENT)
    088    public Item getTabIconItem()
    089    {
    090        return Item.itemsList[this.getTabIconItemIndex()];
    091    }
    092
    093    @SideOnly(Side.CLIENT)
    094
    095    /**
    096     * the itemID for the item to be displayed on the tab
    097     */
    098    public int getTabIconItemIndex()
    099    {
    100        return 1;
    101    }
    102
    103    @SideOnly(Side.CLIENT)
    104    public String getBackgroundImageName()
    105    {
    106        return this.backgroundImageName;
    107    }
    108
    109    @SideOnly(Side.CLIENT)
    110    public boolean drawInForegroundOfTab()
    111    {
    112        return this.drawTitle;
    113    }
    114
    115    public CreativeTabs setNoTitle()
    116    {
    117        this.drawTitle = false;
    118        return this;
    119    }
    120
    121    @SideOnly(Side.CLIENT)
    122    public boolean shouldHidePlayerInventory()
    123    {
    124        return this.hasScrollbar;
    125    }
    126
    127    public CreativeTabs setNoScrollbar()
    128    {
    129        this.hasScrollbar = false;
    130        return this;
    131    }
    132
    133    @SideOnly(Side.CLIENT)
    134
    135    /**
    136     * returns index % 6
    137     */
    138    public int getTabColumn()
    139    {
    140        if (tabIndex > 11)
    141        {
    142            return ((tabIndex - 12) % 10) % 5;
    143        }
    144        return this.tabIndex % 6;
    145    }
    146
    147    @SideOnly(Side.CLIENT)
    148
    149    /**
    150     * returns tabIndex < 6
    151     */
    152    public boolean isTabInFirstRow()
    153    {
    154        if (tabIndex > 11)
    155        {
    156            return ((tabIndex - 12) % 10) < 5;
    157        }
    158        return this.tabIndex < 6;
    159    }
    160
    161    @SideOnly(Side.CLIENT)
    162
    163    /**
    164     * only shows items which have tabToDisplayOn == this
    165     */
    166    public void displayAllReleventItems(List par1List)
    167    {
    168        Item[] aitem = Item.itemsList;
    169        int i = aitem.length;
    170
    171        for (int j = 0; j < i; ++j)
    172        {
    173            Item item = aitem[j];
    174
    175            if (item == null)
    176            {
    177                continue;
    178            }
    179
    180            for(CreativeTabs tab : item.getCreativeTabs())
    181            {
    182                if (tab == this)
    183                {
    184                    item.getSubItems(item.itemID, this, par1List);
    185                }
    186            }
    187        }
    188    }
    189
    190    public int getTabPage()
    191    {
    192        if (tabIndex > 11)
    193        {
    194            return ((tabIndex - 12) / 10) + 1;
    195        }
    196        return 0;
    197    }
    198
    199    public static int getNextID()
    200    {
    201        return creativeTabArray.length;
    202    }
    203
    204    /**
    205     * Get the ItemStack that will be rendered to the tab.
    206     */
    207    public ItemStack getIconItemStack()
    208    {
    209        return new ItemStack(getTabIconItem());
    210    }
    211
    212    @SideOnly(Side.CLIENT)
    213    public void func_92116_a(List par1List, EnumEnchantmentType ... par2ArrayOfEnumEnchantmentType)
    214    {
    215        Enchantment[] aenchantment = Enchantment.enchantmentsList;
    216        int i = aenchantment.length;
    217
    218        for (int j = 0; j < i; ++j)
    219        {
    220            Enchantment enchantment = aenchantment[j];
    221
    222            if (enchantment != null && enchantment.type != null)
    223            {
    224                boolean flag = false;
    225
    226                for (int k = 0; k < par2ArrayOfEnumEnchantmentType.length && !flag; ++k)
    227                {
    228                    if (enchantment.type == par2ArrayOfEnumEnchantmentType[k])
    229                    {
    230                        flag = true;
    231                    }
    232                }
    233
    234                if (flag)
    235                {
    236                    par1List.add(Item.enchantedBook.func_92111_a(new EnchantmentData(enchantment, enchantment.getMaxLevel())));
    237                }
    238            }
    239        }
    240    }
    241}