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