001 package net.minecraft.src; 002 003 import cpw.mods.fml.common.Side; 004 import cpw.mods.fml.common.asm.SideOnly; 005 import java.util.ArrayList; 006 import java.util.Iterator; 007 import java.util.List; 008 import org.lwjgl.input.Keyboard; 009 import org.lwjgl.input.Mouse; 010 import org.lwjgl.opengl.GL11; 011 import org.lwjgl.opengl.GL12; 012 013 @SideOnly(Side.CLIENT) 014 public class GuiContainerCreative extends InventoryEffectRenderer 015 { 016 private static InventoryBasic inventory = new InventoryBasic("tmp", 45); 017 018 /** Currently selected creative inventory tab index. */ 019 private static int selectedTabIndex = CreativeTabs.tabBlock.getTabIndex(); 020 021 /** Amount scrolled in Creative mode inventory (0 = top, 1 = bottom) */ 022 private float currentScroll = 0.0F; 023 024 /** True if the scrollbar is being dragged */ 025 private boolean isScrolling = false; 026 027 /** 028 * True if the left mouse button was held down last time drawScreen was called. 029 */ 030 private boolean wasClicking; 031 private GuiTextField searchField; 032 private List field_74236_u; 033 private Slot field_74235_v = null; 034 private boolean field_74234_w = false; 035 private CreativeCrafting field_82324_x; 036 private int tabPage = 0; 037 private int maxPages = 0; 038 039 public GuiContainerCreative(EntityPlayer par1EntityPlayer) 040 { 041 super(new ContainerCreative(par1EntityPlayer)); 042 par1EntityPlayer.craftingInventory = this.inventorySlots; 043 this.allowUserInput = true; 044 par1EntityPlayer.addStat(AchievementList.openInventory, 1); 045 this.ySize = 136; 046 this.xSize = 195; 047 } 048 049 /** 050 * Called from the main game loop to update the screen. 051 */ 052 public void updateScreen() 053 { 054 if (!this.mc.playerController.isInCreativeMode()) 055 { 056 this.mc.displayGuiScreen(new GuiInventory(this.mc.thePlayer)); 057 } 058 } 059 060 protected void handleMouseClick(Slot par1Slot, int par2, int par3, int par4) 061 { 062 this.field_74234_w = true; 063 boolean var5 = par4 == 1; 064 InventoryPlayer var6; 065 ItemStack var7; 066 067 if (par1Slot != null) 068 { 069 if (par1Slot == this.field_74235_v && var5) 070 { 071 for (int var10 = 0; var10 < this.mc.thePlayer.inventorySlots.getInventory().size(); ++var10) 072 { 073 this.mc.playerController.sendSlotPacket((ItemStack)null, var10); 074 } 075 } 076 else if (selectedTabIndex == CreativeTabs.tabInventory.getTabIndex()) 077 { 078 if (par1Slot == this.field_74235_v) 079 { 080 this.mc.thePlayer.inventory.setItemStack((ItemStack)null); 081 } 082 else 083 { 084 this.mc.thePlayer.inventorySlots.slotClick(SlotCreativeInventory.func_75240_a((SlotCreativeInventory)par1Slot).slotNumber, par3, par4, this.mc.thePlayer); 085 this.mc.thePlayer.inventorySlots.updateCraftingResults(); 086 } 087 } 088 else if (par1Slot.inventory == inventory) 089 { 090 var6 = this.mc.thePlayer.inventory; 091 var7 = var6.getItemStack(); 092 ItemStack var8 = par1Slot.getStack(); 093 ItemStack var9; 094 095 if (par4 == 2) 096 { 097 if (var8 != null && par3 >= 0 && par3 < 9) 098 { 099 var9 = var8.copy(); 100 var9.stackSize = var9.getMaxStackSize(); 101 this.mc.thePlayer.inventory.setInventorySlotContents(par3, var9); 102 this.mc.thePlayer.inventorySlots.updateCraftingResults(); 103 } 104 105 return; 106 } 107 108 if (par4 == 3) 109 { 110 if (var6.getItemStack() == null && par1Slot.getHasStack()) 111 { 112 var9 = par1Slot.getStack().copy(); 113 var9.stackSize = var9.getMaxStackSize(); 114 var6.setItemStack(var9); 115 } 116 117 return; 118 } 119 120 if (var7 != null && var8 != null && var7.isItemEqual(var8)) 121 { 122 if (par3 == 0) 123 { 124 if (var5) 125 { 126 var7.stackSize = var7.getMaxStackSize(); 127 } 128 else if (var7.stackSize < var7.getMaxStackSize()) 129 { 130 ++var7.stackSize; 131 } 132 } 133 else if (var7.stackSize <= 1) 134 { 135 var6.setItemStack((ItemStack)null); 136 } 137 else 138 { 139 --var7.stackSize; 140 } 141 } 142 else if (var8 != null && var7 == null) 143 { 144 var6.setItemStack(ItemStack.copyItemStack(var8)); 145 var7 = var6.getItemStack(); 146 147 if (var5) 148 { 149 var7.stackSize = var7.getMaxStackSize(); 150 } 151 } 152 else 153 { 154 var6.setItemStack((ItemStack)null); 155 } 156 } 157 else 158 { 159 this.inventorySlots.slotClick(par1Slot.slotNumber, par3, par4, this.mc.thePlayer); 160 ItemStack var11 = this.inventorySlots.getSlot(par1Slot.slotNumber).getStack(); 161 this.mc.playerController.sendSlotPacket(var11, par1Slot.slotNumber - this.inventorySlots.inventorySlots.size() + 9 + 36); 162 } 163 } 164 else 165 { 166 var6 = this.mc.thePlayer.inventory; 167 168 if (var6.getItemStack() != null) 169 { 170 if (par3 == 0) 171 { 172 this.mc.thePlayer.dropPlayerItem(var6.getItemStack()); 173 this.mc.playerController.func_78752_a(var6.getItemStack()); 174 var6.setItemStack((ItemStack)null); 175 } 176 177 if (par3 == 1) 178 { 179 var7 = var6.getItemStack().splitStack(1); 180 this.mc.thePlayer.dropPlayerItem(var7); 181 this.mc.playerController.func_78752_a(var7); 182 183 if (var6.getItemStack().stackSize == 0) 184 { 185 var6.setItemStack((ItemStack)null); 186 } 187 } 188 } 189 } 190 } 191 192 /** 193 * Adds the buttons (and other controls) to the screen in question. 194 */ 195 public void initGui() 196 { 197 if (this.mc.playerController.isInCreativeMode()) 198 { 199 super.initGui(); 200 this.controlList.clear(); 201 Keyboard.enableRepeatEvents(true); 202 this.searchField = new GuiTextField(this.fontRenderer, this.guiLeft + 82, this.guiTop + 6, 89, this.fontRenderer.FONT_HEIGHT); 203 this.searchField.setMaxStringLength(15); 204 this.searchField.setEnableBackgroundDrawing(false); 205 this.searchField.setVisible(false); 206 this.searchField.setTextColor(16777215); 207 int var1 = selectedTabIndex; 208 selectedTabIndex = -1; 209 this.func_74227_b(CreativeTabs.creativeTabArray[var1]); 210 this.field_82324_x = new CreativeCrafting(this.mc); 211 this.mc.thePlayer.inventorySlots.addCraftingToCrafters(this.field_82324_x); 212 int tabCount = CreativeTabs.creativeTabArray.length; 213 if (tabCount > 12) 214 { 215 controlList.add(new GuiButton(101, guiLeft, guiTop - 50, 20, 20, "<")); 216 controlList.add(new GuiButton(102, guiLeft + xSize - 20, guiTop - 50, 20, 20, ">")); 217 tabPage = 0; 218 maxPages = ((tabCount - 12) / 10) + 1; 219 } 220 } 221 else 222 { 223 this.mc.displayGuiScreen(new GuiInventory(this.mc.thePlayer)); 224 } 225 } 226 227 /** 228 * Called when the screen is unloaded. Used to disable keyboard repeat events 229 */ 230 public void onGuiClosed() 231 { 232 super.onGuiClosed(); 233 234 if (this.mc.thePlayer != null && this.mc.thePlayer.inventory != null) 235 { 236 this.mc.thePlayer.inventorySlots.removeCraftingFromCrafters(this.field_82324_x); 237 } 238 239 Keyboard.enableRepeatEvents(false); 240 } 241 242 /** 243 * Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e). 244 */ 245 protected void keyTyped(char par1, int par2) 246 { 247 if (selectedTabIndex != CreativeTabs.tabAllSearch.getTabIndex()) 248 { 249 if (Keyboard.isKeyDown(this.mc.gameSettings.keyBindChat.keyCode)) 250 { 251 this.func_74227_b(CreativeTabs.tabAllSearch); 252 } 253 else 254 { 255 super.keyTyped(par1, par2); 256 } 257 } 258 else 259 { 260 if (this.field_74234_w) 261 { 262 this.field_74234_w = false; 263 this.searchField.setText(""); 264 } 265 266 if (!this.func_82319_a(par2)) 267 { 268 if (this.searchField.textboxKeyTyped(par1, par2)) 269 { 270 this.updateCreativeSearch(); 271 } 272 else 273 { 274 super.keyTyped(par1, par2); 275 } 276 } 277 } 278 } 279 280 private void updateCreativeSearch() 281 { 282 ContainerCreative var1 = (ContainerCreative)this.inventorySlots; 283 var1.itemList.clear(); 284 Item[] var2 = Item.itemsList; 285 int var3 = var2.length; 286 287 for (int var4 = 0; var4 < var3; ++var4) 288 { 289 Item var5 = var2[var4]; 290 291 if (var5 != null && var5.getCreativeTab() != null) 292 { 293 var5.getSubItems(var5.shiftedIndex, (CreativeTabs)null, var1.itemList); 294 } 295 } 296 297 Iterator var8 = var1.itemList.iterator(); 298 String var9 = this.searchField.getText().toLowerCase(); 299 300 while (var8.hasNext()) 301 { 302 ItemStack var10 = (ItemStack)var8.next(); 303 boolean var11 = false; 304 Iterator var6 = var10.getTooltip(this.mc.thePlayer, this.mc.gameSettings.advancedItemTooltips).iterator(); 305 306 while (true) 307 { 308 if (var6.hasNext()) 309 { 310 String var7 = (String)var6.next(); 311 312 if (!var7.toLowerCase().contains(var9)) 313 { 314 continue; 315 } 316 317 var11 = true; 318 } 319 320 if (!var11) 321 { 322 var8.remove(); 323 } 324 325 break; 326 } 327 } 328 329 this.currentScroll = 0.0F; 330 var1.scrollTo(0.0F); 331 } 332 333 /** 334 * Draw the foreground layer for the GuiContainer (everything in front of the items) 335 */ 336 protected void drawGuiContainerForegroundLayer(int par1, int par2) 337 { 338 CreativeTabs var3 = CreativeTabs.creativeTabArray[selectedTabIndex]; 339 340 if (var3 != null && var3.drawInForegroundOfTab()) 341 { 342 this.fontRenderer.drawString(var3.getTranslatedTabLabel(), 8, 6, 4210752); 343 } 344 } 345 346 /** 347 * Called when the mouse is clicked. 348 */ 349 protected void mouseClicked(int par1, int par2, int par3) 350 { 351 if (par3 == 0) 352 { 353 int var4 = par1 - this.guiLeft; 354 int var5 = par2 - this.guiTop; 355 CreativeTabs[] var6 = CreativeTabs.creativeTabArray; 356 int var7 = var6.length; 357 358 for (int var8 = 0; var8 < var7; ++var8) 359 { 360 CreativeTabs var9 = var6[var8]; 361 362 if (var9 != null && func_74232_a(var9, var4, var5)) 363 { 364 this.func_74227_b(var9); 365 return; 366 } 367 } 368 } 369 370 super.mouseClicked(par1, par2, par3); 371 } 372 373 /** 374 * returns (if you are not on the inventoryTab) and (the flag isn't set) and( you have more than 1 page of items) 375 */ 376 private boolean needsScrollBars() 377 { 378 if (CreativeTabs.creativeTabArray[selectedTabIndex] == null) return false; 379 return selectedTabIndex != CreativeTabs.tabInventory.getTabIndex() && CreativeTabs.creativeTabArray[selectedTabIndex].shouldHidePlayerInventory() && ((ContainerCreative)this.inventorySlots).hasMoreThan1PageOfItemsInList(); 380 } 381 382 private void func_74227_b(CreativeTabs par1CreativeTabs) 383 { 384 if (par1CreativeTabs == null) 385 { 386 return; 387 } 388 389 int var2 = selectedTabIndex; 390 selectedTabIndex = par1CreativeTabs.getTabIndex(); 391 ContainerCreative var3 = (ContainerCreative)this.inventorySlots; 392 var3.itemList.clear(); 393 par1CreativeTabs.displayAllReleventItems(var3.itemList); 394 395 if (par1CreativeTabs == CreativeTabs.tabInventory) 396 { 397 Container var4 = this.mc.thePlayer.inventorySlots; 398 399 if (this.field_74236_u == null) 400 { 401 this.field_74236_u = var3.inventorySlots; 402 } 403 404 var3.inventorySlots = new ArrayList(); 405 406 for (int var5 = 0; var5 < var4.inventorySlots.size(); ++var5) 407 { 408 SlotCreativeInventory var6 = new SlotCreativeInventory(this, (Slot)var4.inventorySlots.get(var5), var5); 409 var3.inventorySlots.add(var6); 410 int var7; 411 int var8; 412 int var9; 413 414 if (var5 >= 5 && var5 < 9) 415 { 416 var7 = var5 - 5; 417 var8 = var7 / 2; 418 var9 = var7 % 2; 419 var6.xDisplayPosition = 9 + var8 * 54; 420 var6.yDisplayPosition = 6 + var9 * 27; 421 } 422 else if (var5 >= 0 && var5 < 5) 423 { 424 var6.yDisplayPosition = -2000; 425 var6.xDisplayPosition = -2000; 426 } 427 else if (var5 < var4.inventorySlots.size()) 428 { 429 var7 = var5 - 9; 430 var8 = var7 % 9; 431 var9 = var7 / 9; 432 var6.xDisplayPosition = 9 + var8 * 18; 433 434 if (var5 >= 36) 435 { 436 var6.yDisplayPosition = 112; 437 } 438 else 439 { 440 var6.yDisplayPosition = 54 + var9 * 18; 441 } 442 } 443 } 444 445 this.field_74235_v = new Slot(inventory, 0, 173, 112); 446 var3.inventorySlots.add(this.field_74235_v); 447 } 448 else if (var2 == CreativeTabs.tabInventory.getTabIndex()) 449 { 450 var3.inventorySlots = this.field_74236_u; 451 this.field_74236_u = null; 452 } 453 454 if (this.searchField != null) 455 { 456 if (par1CreativeTabs == CreativeTabs.tabAllSearch) 457 { 458 this.searchField.setVisible(true); 459 this.searchField.setCanLoseFocus(false); 460 this.searchField.setFocused(true); 461 this.searchField.setText(""); 462 this.updateCreativeSearch(); 463 } 464 else 465 { 466 this.searchField.setVisible(false); 467 this.searchField.setCanLoseFocus(true); 468 this.searchField.setFocused(false); 469 } 470 } 471 472 this.currentScroll = 0.0F; 473 var3.scrollTo(0.0F); 474 } 475 476 /** 477 * Handles mouse input. 478 */ 479 public void handleMouseInput() 480 { 481 super.handleMouseInput(); 482 int var1 = Mouse.getEventDWheel(); 483 484 if (var1 != 0 && this.needsScrollBars()) 485 { 486 int var2 = ((ContainerCreative)this.inventorySlots).itemList.size() / 9 - 5 + 1; 487 488 if (var1 > 0) 489 { 490 var1 = 1; 491 } 492 493 if (var1 < 0) 494 { 495 var1 = -1; 496 } 497 498 this.currentScroll = (float)((double)this.currentScroll - (double)var1 / (double)var2); 499 500 if (this.currentScroll < 0.0F) 501 { 502 this.currentScroll = 0.0F; 503 } 504 505 if (this.currentScroll > 1.0F) 506 { 507 this.currentScroll = 1.0F; 508 } 509 510 ((ContainerCreative)this.inventorySlots).scrollTo(this.currentScroll); 511 } 512 } 513 514 /** 515 * Draws the screen and all the components in it. 516 */ 517 public void drawScreen(int par1, int par2, float par3) 518 { 519 boolean var4 = Mouse.isButtonDown(0); 520 int var5 = this.guiLeft; 521 int var6 = this.guiTop; 522 int var7 = var5 + 175; 523 int var8 = var6 + 18; 524 int var9 = var7 + 14; 525 int var10 = var8 + 112; 526 527 if (!this.wasClicking && var4 && par1 >= var7 && par2 >= var8 && par1 < var9 && par2 < var10) 528 { 529 this.isScrolling = this.needsScrollBars(); 530 } 531 532 if (!var4) 533 { 534 this.isScrolling = false; 535 } 536 537 this.wasClicking = var4; 538 539 if (this.isScrolling) 540 { 541 this.currentScroll = ((float)(par2 - var8) - 7.5F) / ((float)(var10 - var8) - 15.0F); 542 543 if (this.currentScroll < 0.0F) 544 { 545 this.currentScroll = 0.0F; 546 } 547 548 if (this.currentScroll > 1.0F) 549 { 550 this.currentScroll = 1.0F; 551 } 552 553 ((ContainerCreative)this.inventorySlots).scrollTo(this.currentScroll); 554 } 555 556 super.drawScreen(par1, par2, par3); 557 CreativeTabs[] var11 = CreativeTabs.creativeTabArray; 558 int start = tabPage * 10; 559 int var12 = Math.min(var11.length, ((tabPage + 1) * 10) + 2); 560 if (tabPage != 0) start += 2; 561 boolean rendered = false; 562 563 for (int var13 = start; var13 < var12; ++var13) 564 { 565 CreativeTabs var14 = var11[var13]; 566 567 if (var14 != null && renderCreativeInventoryHoveringText(var14, par1, par2)) 568 { 569 rendered = true; 570 break; 571 } 572 } 573 574 if (!rendered && !renderCreativeInventoryHoveringText(CreativeTabs.tabAllSearch, par1, par2)) 575 { 576 renderCreativeInventoryHoveringText(CreativeTabs.tabInventory, par1, par2); 577 } 578 579 if (this.field_74235_v != null && selectedTabIndex == CreativeTabs.tabInventory.getTabIndex() && this.func_74188_c(this.field_74235_v.xDisplayPosition, this.field_74235_v.yDisplayPosition, 16, 16, par1, par2)) 580 { 581 this.drawCreativeTabHoveringText(StringTranslate.getInstance().translateKey("inventory.binSlot"), par1, par2); 582 } 583 584 if (maxPages != 0) 585 { 586 String page = String.format("%d / %d", tabPage + 1, maxPages + 1); 587 int width = fontRenderer.getStringWidth(page); 588 GL11.glDisable(GL11.GL_LIGHTING); 589 this.zLevel = 300.0F; 590 itemRenderer.zLevel = 300.0F; 591 fontRenderer.drawString(page, guiLeft + (xSize / 2) - (width / 2), guiTop - 44, -1); 592 this.zLevel = 0.0F; 593 itemRenderer.zLevel = 0.0F; 594 } 595 596 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 597 GL11.glDisable(GL11.GL_LIGHTING); 598 } 599 600 /** 601 * Draw the background layer for the GuiContainer (everything behind the items) 602 */ 603 protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) 604 { 605 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 606 RenderHelper.enableGUIStandardItemLighting(); 607 int var4 = this.mc.renderEngine.getTexture("/gui/allitems.png"); 608 CreativeTabs var5 = CreativeTabs.creativeTabArray[selectedTabIndex]; 609 int var6 = this.mc.renderEngine.getTexture("/gui/creative_inv/" + var5.getBackgroundImageName()); 610 CreativeTabs[] var7 = CreativeTabs.creativeTabArray; 611 int var8 = var7.length; 612 int var9; 613 614 int start = tabPage * 10; 615 var8 = Math.min(var7.length, ((tabPage + 1) * 10 + 2)); 616 if (tabPage != 0) start += 2; 617 618 for (var9 = start; var9 < var8; ++var9) 619 { 620 CreativeTabs var10 = var7[var9]; 621 this.mc.renderEngine.bindTexture(var4); 622 623 if (var10 != null && var10.getTabIndex() != selectedTabIndex) 624 { 625 this.renderCreativeTab(var10); 626 } 627 } 628 629 if (tabPage != 0) 630 { 631 if (var5 != CreativeTabs.tabAllSearch) 632 { 633 mc.renderEngine.bindTexture(var4); 634 renderCreativeTab(CreativeTabs.tabAllSearch); 635 } 636 if (var5 != CreativeTabs.tabInventory) 637 { 638 mc.renderEngine.bindTexture(var4); 639 renderCreativeTab(CreativeTabs.tabInventory); 640 } 641 } 642 643 this.mc.renderEngine.bindTexture(var6); 644 this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, this.xSize, this.ySize); 645 this.searchField.drawTextBox(); 646 GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); 647 int var11 = this.guiLeft + 175; 648 var8 = this.guiTop + 18; 649 var9 = var8 + 112; 650 this.mc.renderEngine.bindTexture(var4); 651 652 if (var5.shouldHidePlayerInventory()) 653 { 654 this.drawTexturedModalRect(var11, var8 + (int)((float)(var9 - var8 - 17) * this.currentScroll), 232 + (this.needsScrollBars() ? 0 : 12), 0, 12, 15); 655 } 656 657 if (var5 == null || var5.getTabPage() != tabPage) 658 { 659 if (var5 != CreativeTabs.tabAllSearch && var5 != CreativeTabs.tabInventory) 660 { 661 return; 662 } 663 } 664 665 this.renderCreativeTab(var5); 666 667 if (var5 == CreativeTabs.tabInventory) 668 { 669 GuiInventory.func_74223_a(this.mc, this.guiLeft + 43, this.guiTop + 45, 20, (float)(this.guiLeft + 43 - par2), (float)(this.guiTop + 45 - 30 - par3)); 670 } 671 } 672 673 protected boolean func_74232_a(CreativeTabs par1CreativeTabs, int par2, int par3) 674 { 675 if (par1CreativeTabs.getTabPage() != tabPage) 676 { 677 if (par1CreativeTabs != CreativeTabs.tabAllSearch && 678 par1CreativeTabs != CreativeTabs.tabInventory) 679 { 680 return false; 681 } 682 } 683 684 int var4 = par1CreativeTabs.getTabColumn(); 685 int var5 = 28 * var4; 686 byte var6 = 0; 687 688 if (var4 == 5) 689 { 690 var5 = this.xSize - 28 + 2; 691 } 692 else if (var4 > 0) 693 { 694 var5 += var4; 695 } 696 697 int var7; 698 699 if (par1CreativeTabs.isTabInFirstRow()) 700 { 701 var7 = var6 - 32; 702 } 703 else 704 { 705 var7 = var6 + this.ySize; 706 } 707 708 return par2 >= var5 && par2 <= var5 + 28 && par3 >= var7 && par3 <= var7 + 32; 709 } 710 711 /** 712 * Renders the creative inventory hovering text if mouse is over it. Returns true if did render or false otherwise. 713 * Params: current creative tab to be checked, current mouse x position, current mouse y position. 714 */ 715 protected boolean renderCreativeInventoryHoveringText(CreativeTabs par1CreativeTabs, int par2, int par3) 716 { 717 int var4 = par1CreativeTabs.getTabColumn(); 718 int var5 = 28 * var4; 719 byte var6 = 0; 720 721 if (var4 == 5) 722 { 723 var5 = this.xSize - 28 + 2; 724 } 725 else if (var4 > 0) 726 { 727 var5 += var4; 728 } 729 730 int var7; 731 732 if (par1CreativeTabs.isTabInFirstRow()) 733 { 734 var7 = var6 - 32; 735 } 736 else 737 { 738 var7 = var6 + this.ySize; 739 } 740 741 if (this.func_74188_c(var5 + 3, var7 + 3, 23, 27, par2, par3)) 742 { 743 this.drawCreativeTabHoveringText(par1CreativeTabs.getTranslatedTabLabel(), par2, par3); 744 return true; 745 } 746 else 747 { 748 return false; 749 } 750 } 751 752 /** 753 * Renders passed creative inventory tab into the screen. 754 */ 755 protected void renderCreativeTab(CreativeTabs par1CreativeTabs) 756 { 757 boolean var2 = par1CreativeTabs.getTabIndex() == selectedTabIndex; 758 boolean var3 = par1CreativeTabs.isTabInFirstRow(); 759 int var4 = par1CreativeTabs.getTabColumn(); 760 int var5 = var4 * 28; 761 int var6 = 0; 762 int var7 = this.guiLeft + 28 * var4; 763 int var8 = this.guiTop; 764 byte var9 = 32; 765 766 if (var2) 767 { 768 var6 += 32; 769 } 770 771 if (var4 == 5) 772 { 773 var7 = this.guiLeft + this.xSize - 28; 774 } 775 else if (var4 > 0) 776 { 777 var7 += var4; 778 } 779 780 if (var3) 781 { 782 var8 -= 28; 783 } 784 else 785 { 786 var6 += 64; 787 var8 += this.ySize - 4; 788 } 789 790 GL11.glDisable(GL11.GL_LIGHTING); 791 this.drawTexturedModalRect(var7, var8, var5, var6, 28, var9); 792 this.zLevel = 100.0F; 793 itemRenderer.zLevel = 100.0F; 794 var7 += 6; 795 var8 += 8 + (var3 ? 1 : -1); 796 GL11.glEnable(GL11.GL_LIGHTING); 797 GL11.glEnable(GL12.GL_RESCALE_NORMAL); 798 ItemStack var10 = par1CreativeTabs.getIconItemStack(); 799 itemRenderer.renderItemAndEffectIntoGUI(this.fontRenderer, this.mc.renderEngine, var10, var7, var8); 800 itemRenderer.renderItemOverlayIntoGUI(this.fontRenderer, this.mc.renderEngine, var10, var7, var8); 801 GL11.glDisable(GL11.GL_LIGHTING); 802 itemRenderer.zLevel = 0.0F; 803 this.zLevel = 0.0F; 804 } 805 806 /** 807 * Fired when a control is clicked. This is the equivalent of ActionListener.actionPerformed(ActionEvent e). 808 */ 809 protected void actionPerformed(GuiButton par1GuiButton) 810 { 811 if (par1GuiButton.id == 0) 812 { 813 this.mc.displayGuiScreen(new GuiAchievements(this.mc.statFileWriter)); 814 } 815 816 if (par1GuiButton.id == 1) 817 { 818 this.mc.displayGuiScreen(new GuiStats(this, this.mc.statFileWriter)); 819 } 820 821 if (par1GuiButton.id == 101) 822 { 823 tabPage = Math.max(tabPage - 1, 0); 824 } 825 else if (par1GuiButton.id == 102) 826 { 827 tabPage = Math.min(tabPage + 1, maxPages); 828 } 829 } 830 831 public int func_74230_h() 832 { 833 return selectedTabIndex; 834 } 835 836 /** 837 * Returns the creative inventory 838 */ 839 static InventoryBasic getInventory() 840 { 841 return inventory; 842 } 843 }