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[] var2 = Item.itemsList;
169        int var3 = var2.length;
170
171        for (int var4 = 0; var4 < var3; ++var4)
172        {
173            Item var5 = var2[var4];
174
175            if (var5 == null)
176            {
177                continue;
178            }
179
180            for(CreativeTabs tab : var5.getCreativeTabs())
181            {
182                if (tab == this)
183                {
184                    var5.getSubItems(var5.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[] var3 = Enchantment.enchantmentsList;
216        int var4 = var3.length;
217
218        for (int var5 = 0; var5 < var4; ++var5)
219        {
220            Enchantment var6 = var3[var5];
221
222            if (var6 != null && var6.type != null)
223            {
224                boolean var7 = false;
225
226                for (int var8 = 0; var8 < par2ArrayOfEnumEnchantmentType.length && !var7; ++var8)
227                {
228                    if (var6.type == par2ArrayOfEnumEnchantmentType[var8])
229                    {
230                        var7 = true;
231                    }
232                }
233
234                if (var7)
235                {
236                    par1List.add(Item.enchantedBook.func_92111_a(new EnchantmentData(var6, var6.getMaxLevel())));
237                }
238            }
239        }
240    }
241}