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.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.field_92053_bW.func_92057_a(new EnchantmentData(var6, var6.getMaxLevel()))); 237 } 238 } 239 } 240 } 241 }