    001    package net.minecraft.creativetab;
    002
    003    import cpw.mods.fml.relauncher.Side;
    004    import cpw.mods.fml.relauncher.SideOnly;
    005    import java.util.List;
    006    import net.minecraft.enchantment.Enchantment;
    007    import net.minecraft.enchantment.EnchantmentData;
    008    import net.minecraft.enchantment.EnumEnchantmentType;
    009    import net.minecraft.item.Item;
    010    import net.minecraft.item.ItemStack;
    011    import net.minecraft.util.StringTranslate;
    012
    013    public 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.shiftedIndex, 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.field_92053_bW.func_92057_a(new EnchantmentData(var6, var6.getMaxLevel())));
    237                    }
    238                }
    239            }
    240        }
    241    }