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