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 }