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