package com.minestellar.core.gui.widget;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
import net.minecraft.util.MathHelper;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
import java.awt.*;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class GuiContainerScreen extends GuiScreenWidget implements IGuiActionListener {
public ArrayList<GuiWidget> widgets = new ArrayList<GuiWidget>();
public int xSize, ySize, midX, midY, guiTop, guiLeft;
protected static final ResourceLocation field_147001_a = new ResourceLocation("textures/gui/container/inventory.png");
private Slot theSlot;
/** Used when touchscreen is enabled. */
private Slot clickedSlot;
/** Used when touchscreen is enabled. */
private boolean isRightMouseClick;
/** Used when touchscreen is enabled */
private ItemStack draggedStack;
/** A list of the players inventory slots */
public Container inventorySlots;
private int field_147011_y;
private int field_147010_z;
private Slot returningStackDestSlot;
private long returningStackTime;
/** Used when touchscreen is enabled */
private ItemStack returningStack;
private Slot field_146985_D;
private long field_146986_E;
protected final Set field_147008_s = new HashSet();
protected boolean field_147007_t;
private int field_146987_F;
private int field_146988_G;
private boolean field_146995_H;
private int field_146996_I;
private long field_146997_J;
private Slot field_146998_K;
private int field_146992_L;
private boolean field_146993_M;
private ItemStack field_146994_N;
public GuiContainerScreen(Container container, int xSize, int ySize) {
this.inventorySlots = container;
this.field_146995_H = true;
}
public GuiContainerScreen(Container container) {
this(container, 176, 166);
this.inventorySlots = container;
this.field_146995_H = true;
}
@Override
public void initGui() {
super.initGui();
this.mc.thePlayer.openContainer = this.inventorySlots;
this.guiLeft = (this.width - this.xSize) / 2;
this.guiTop = (this.height - this.ySize) / 2;
}
@Override
public void drawScreen(int mousex, int mousey, float f) {
this.drawDefaultBackground();
int k = this.guiLeft;
int l = this.guiTop;
this.drawGuiContainerBackgroundLayer(f, mousex, mousey);
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
super.drawScreen(mousex, mousey, f);
RenderHelper.enableGUIStandardItemLighting();
GL11.glPushMatrix();
GL11.glTranslatef((float) k, (float) l, 0.0F);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
this.theSlot = null;
short short1 = 240;
short short2 = 240;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) short1 / 1.0F, (float) short2 / 1.0F);
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
int k1;
for (int i1 = 0; i1 < this.inventorySlots.inventorySlots.size(); ++i1) {
Slot slot = (Slot) this.inventorySlots.inventorySlots.get(i1);
this.func_146977_a(slot);
if (this.isMouseOverSlot(slot, mousex, mousey) && slot.func_111238_b()) {
this.theSlot = slot;
GL11.glDisable(GL11.GL_LIGHTING);
GL11.glDisable(GL11.GL_DEPTH_TEST);
int j1 = slot.xDisplayPosition;
k1 = slot.yDisplayPosition;
GL11.glColorMask(true, true, true, false);
this.drawGradientRect(j1, k1, j1 + 16, k1 + 16, -2130706433, -2130706433);
GL11.glColorMask(true, true, true, true);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
}
}
// Forge: Force lighting to be disabled as there are some issue where lighting would
// incorrectly be applied based on items that are in the inventory.
GL11.glDisable(GL11.GL_LIGHTING);
this.drawGuiContainerForegroundLayer(mousex, mousey);
GL11.glEnable(GL11.GL_LIGHTING);
InventoryPlayer inventoryplayer = this.mc.thePlayer.inventory;
ItemStack itemstack = this.draggedStack == null ? inventoryplayer.getItemStack() : this.draggedStack;
if (itemstack != null) {
byte b0 = 8;
k1 = this.draggedStack == null ? 8 : 16;
String s = null;
if (this.draggedStack != null && this.isRightMouseClick) {
itemstack = itemstack.copy();
itemstack.stackSize = MathHelper.ceiling_float_int((float) itemstack.stackSize / 2.0F);
} else if (this.field_147007_t && this.field_147008_s.size() > 1) {
itemstack = itemstack.copy();
itemstack.stackSize = this.field_146996_I;
if (itemstack.stackSize == 0) {
s = "" + EnumChatFormatting.YELLOW + "0";
}
}
this.drawItemStack(itemstack, mousex - k - b0, mousey - l - k1, s);
}
if (this.returningStack != null) {
float f1 = (float) (Minecraft.getSystemTime() - this.returningStackTime) / 100.0F;
if (f1 >= 1.0F) {
f1 = 1.0F;
this.returningStack = null;
}
k1 = this.returningStackDestSlot.xDisplayPosition - this.field_147011_y;
int j2 = this.returningStackDestSlot.yDisplayPosition - this.field_147010_z;
int l1 = this.field_147011_y + (int) ((float) k1 * f1);
int i2 = this.field_147010_z + (int) ((float) j2 * f1);
this.drawItemStack(this.returningStack, l1, i2, null);
}
GL11.glPopMatrix();
if (inventoryplayer.getItemStack() == null && this.theSlot != null && this.theSlot.getHasStack()) {
ItemStack itemstack1 = this.theSlot.getStack();
this.renderToolTip(itemstack1, mousex, mousey);
}
GL11.glTranslated(guiTop, guiLeft, 0);
drawBackground();
for (GuiWidget widget : widgets)
widget.draw(mousex - guiTop, mousey - guiLeft, f);
drawForeground();
GL11.glTranslated(-guiTop, -guiLeft, 0);
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_DEPTH_TEST);
RenderHelper.enableStandardItemLighting();
}
@Override
public void drawBackground(){
}
@Override
public void drawForeground(){
}
private void drawItemStack(ItemStack p_146982_1_, int p_146982_2_, int p_146982_3_, String p_146982_4_) {
GL11.glTranslatef(0.0F, 0.0F, 32.0F);
this.zLevel = 200.0F;
itemRender.zLevel = 200.0F;
FontRenderer font = null;
if (p_146982_1_ != null)
font = p_146982_1_.getItem().getFontRenderer(p_146982_1_);
if (font == null)
font = fontRendererObj;
itemRender.renderItemAndEffectIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_);
itemRender.renderItemOverlayIntoGUI(font, this.mc.getTextureManager(), p_146982_1_, p_146982_2_, p_146982_3_ - (this.draggedStack == null ? 0 : 8), p_146982_4_);
this.zLevel = 0.0F;
itemRender.zLevel = 0.0F;
}
/**
* Draw the foreground layer for the GuiContainer (everything in front of the items)
*/
protected void drawGuiContainerForegroundLayer(int p_146979_1_, int p_146979_2_) {
}
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
}
private void func_146977_a(Slot p_146977_1_) {
int i = p_146977_1_.xDisplayPosition;
int j = p_146977_1_.yDisplayPosition;
ItemStack itemstack = p_146977_1_.getStack();
boolean flag = false;
boolean flag1 = p_146977_1_ == this.clickedSlot && this.draggedStack != null && !this.isRightMouseClick;
ItemStack itemstack1 = this.mc.thePlayer.inventory.getItemStack();
String s = null;
if (p_146977_1_ == this.clickedSlot && this.draggedStack != null && this.isRightMouseClick && itemstack != null) {
itemstack = itemstack.copy();
itemstack.stackSize /= 2;
} else if (this.field_147007_t && this.field_147008_s.contains(p_146977_1_) && itemstack1 != null) {
if (this.field_147008_s.size() == 1) {
return;
}
if (Container.func_94527_a(p_146977_1_, itemstack1, true) && this.inventorySlots.canDragIntoSlot(p_146977_1_)) {
itemstack = itemstack1.copy();
flag = true;
Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack, p_146977_1_.getStack() == null ? 0 : p_146977_1_.getStack().stackSize);
if (itemstack.stackSize > itemstack.getMaxStackSize()) {
s = EnumChatFormatting.YELLOW + "" + itemstack.getMaxStackSize();
itemstack.stackSize = itemstack.getMaxStackSize();
}
if (itemstack.stackSize > p_146977_1_.getSlotStackLimit()) {
s = EnumChatFormatting.YELLOW + "" + p_146977_1_.getSlotStackLimit();
itemstack.stackSize = p_146977_1_.getSlotStackLimit();
}
} else {
this.field_147008_s.remove(p_146977_1_);
this.func_146980_g();
}
}
this.zLevel = 100.0F;
itemRender.zLevel = 100.0F;
if (itemstack == null) {
IIcon iicon = p_146977_1_.getBackgroundIconIndex();
if (iicon != null) {
GL11.glDisable(GL11.GL_LIGHTING);
this.mc.getTextureManager().bindTexture(TextureMap.locationItemsTexture);
this.drawTexturedModelRectFromIcon(i, j, iicon, 16, 16);
GL11.glEnable(GL11.GL_LIGHTING);
flag1 = true;
}
}
if (!flag1) {
if (flag) {
drawRect(i, j, i + 16, j + 16, -2130706433);
}
GL11.glEnable(GL11.GL_DEPTH_TEST);
itemRender.renderItemAndEffectIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j);
itemRender.renderItemOverlayIntoGUI(this.fontRendererObj, this.mc.getTextureManager(), itemstack, i, j, s);
}
itemRender.zLevel = 0.0F;
this.zLevel = 0.0F;
}
private void func_146980_g() {
ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack();
if (itemstack != null && this.field_147007_t) {
this.field_146996_I = itemstack.stackSize;
ItemStack itemstack1;
int i;
for (Iterator iterator = this.field_147008_s.iterator(); iterator.hasNext(); this.field_146996_I -= itemstack1.stackSize - i) {
Slot slot = (Slot) iterator.next();
itemstack1 = itemstack.copy();
i = slot.getStack() == null ? 0 : slot.getStack().stackSize;
Container.func_94525_a(this.field_147008_s, this.field_146987_F, itemstack1, i);
if (itemstack1.stackSize > itemstack1.getMaxStackSize()) {
itemstack1.stackSize = itemstack1.getMaxStackSize();
}
if (itemstack1.stackSize > slot.getSlotStackLimit()) {
itemstack1.stackSize = slot.getSlotStackLimit();
}
}
}
}
/**
* Returns the slot at the given coordinates or null if there is none.
*/
private Slot getSlotAtPosition(int p_146975_1_, int p_146975_2_) {
for (int k = 0; k < this.inventorySlots.inventorySlots.size(); ++k) {
Slot slot = (Slot) this.inventorySlots.inventorySlots.get(k);
if (this.isMouseOverSlot(slot, p_146975_1_, p_146975_2_)) {
return slot;
}
}
return null;
}
/**
* Called when the mouse is clicked.
*/
@Override
protected void mouseClicked(int p_73864_1_, int p_73864_2_, int p_73864_3_) {
super.mouseClicked(p_73864_1_, p_73864_2_, p_73864_3_);
boolean flag = p_73864_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100;
Slot slot = this.getSlotAtPosition(p_73864_1_, p_73864_2_);
long l = Minecraft.getSystemTime();
this.field_146993_M = this.field_146998_K == slot && l - this.field_146997_J < 250L && this.field_146992_L == p_73864_3_;
this.field_146995_H = false;
if (p_73864_3_ == 0 || p_73864_3_ == 1 || flag) {
int i1 = this.guiLeft;
int j1 = this.guiTop;
boolean flag1 = p_73864_1_ < i1 || p_73864_2_ < j1 || p_73864_1_ >= i1 + this.xSize || p_73864_2_ >= j1 + this.ySize;
int k1 = -1;
if (slot != null) {
k1 = slot.slotNumber;
}
if (flag1) {
k1 = -999;
}
if (this.mc.gameSettings.touchscreen && flag1 && this.mc.thePlayer.inventory.getItemStack() == null) {
this.mc.displayGuiScreen(null);
return;
}
if (k1 != -1) {
if (this.mc.gameSettings.touchscreen) {
if (slot != null && slot.getHasStack()) {
this.clickedSlot = slot;
this.draggedStack = null;
this.isRightMouseClick = p_73864_3_ == 1;
} else {
this.clickedSlot = null;
}
} else if (!this.field_147007_t) {
if (this.mc.thePlayer.inventory.getItemStack() == null) {
if (p_73864_3_ == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) {
this.handleMouseClick(slot, k1, p_73864_3_, 3);
} else {
boolean flag2 = k1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54));
byte b0 = 0;
if (flag2) {
this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null;
b0 = 1;
} else if (k1 == -999) {
b0 = 4;
}
this.handleMouseClick(slot, k1, p_73864_3_, b0);
}
this.field_146995_H = true;
} else {
this.field_147007_t = true;
this.field_146988_G = p_73864_3_;
this.field_147008_s.clear();
if (p_73864_3_ == 0) {
this.field_146987_F = 0;
} else if (p_73864_3_ == 1) {
this.field_146987_F = 1;
}
}
}
}
}
this.field_146998_K = slot;
this.field_146997_J = l;
this.field_146992_L = p_73864_3_;
}
/**
* Called when a mouse button is pressed and the mouse is moved around. Parameters are : mouseX, mouseY, lastButtonClicked & timeSinceMouseClick.
*/
@Override
protected void mouseClickMove(int x, int y, int button, long time) {
Slot slot = this.getSlotAtPosition(x, y);
ItemStack itemstack = this.mc.thePlayer.inventory.getItemStack();
super.mouseClickMove(x, y, button, time);
for (GuiWidget widget : widgets)
widget.mouseDragged(x - guiTop, y - guiLeft, button, time);
if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) {
if (button == 0 || button == 1) {
if (this.draggedStack == null) {
if (slot != this.clickedSlot) {
this.draggedStack = this.clickedSlot.getStack().copy();
}
} else if (this.draggedStack.stackSize > 1 && slot != null && Container.func_94527_a(slot, this.draggedStack, false)) {
long i1 = Minecraft.getSystemTime();
if (this.field_146985_D == slot) {
if (i1 - this.field_146986_E > 500L) {
this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0);
this.handleMouseClick(slot, slot.slotNumber, 1, 0);
this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, 0, 0);
this.field_146986_E = i1 + 750L;
--this.draggedStack.stackSize;
}
} else {
this.field_146985_D = slot;
this.field_146986_E = i1;
}
}
}
} else if (this.field_147007_t && slot != null && itemstack != null && itemstack.stackSize > this.field_147008_s.size() && Container.func_94527_a(slot, itemstack, true) && slot.isItemValid(itemstack) && this.inventorySlots.canDragIntoSlot(slot)) {
this.field_147008_s.add(slot);
this.func_146980_g();
}
}
/**
* Called when the mouse is moved or a mouse button is released. Signature: (mouseX, mouseY, which) which==-1 is mouseMove, which==0 or which==1
* is mouseUp
*/
@Override
protected void mouseMovedOrUp(int x, int y, int button) {
super.mouseMovedOrUp(x, y, button);
for (GuiWidget widget : widgets)
widget.mouseMovedOrUp(x - guiTop, y - guiLeft, button);
Slot slot = this.getSlotAtPosition(x, y);
int l = this.guiLeft;
int i1 = this.guiTop;
boolean flag = x < l || y < i1 || x >= l + this.xSize || y >= i1 + this.ySize;
int j1 = -1;
if (slot != null) {
j1 = slot.slotNumber;
}
if (flag) {
j1 = -999;
}
Slot slot1;
Iterator iterator;
if (this.field_146993_M && slot != null && button == 0 && this.inventorySlots.func_94530_a(null, slot)) {
if (isShiftKeyDown()) {
if (slot.inventory != null && this.field_146994_N != null) {
iterator = this.inventorySlots.inventorySlots.iterator();
while (iterator.hasNext()) {
slot1 = (Slot) iterator.next();
if (slot1 != null && slot1.canTakeStack(this.mc.thePlayer) && slot1.getHasStack() && slot1.inventory == slot.inventory && Container.func_94527_a(slot1, this.field_146994_N, true)) {
this.handleMouseClick(slot1, slot1.slotNumber, button, 1);
}
}
}
} else {
this.handleMouseClick(slot, j1, button, 6);
}
this.field_146993_M = false;
this.field_146997_J = 0L;
} else {
if (this.field_147007_t && this.field_146988_G != button) {
this.field_147007_t = false;
this.field_147008_s.clear();
this.field_146995_H = true;
return;
}
if (this.field_146995_H) {
this.field_146995_H = false;
return;
}
boolean flag1;
if (this.clickedSlot != null && this.mc.gameSettings.touchscreen) {
if (button == 0 || button == 1) {
if (this.draggedStack == null && slot != this.clickedSlot) {
this.draggedStack = this.clickedSlot.getStack();
}
flag1 = Container.func_94527_a(slot, this.draggedStack, false);
if (j1 != -1 && this.draggedStack != null && flag1) {
this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, button, 0);
this.handleMouseClick(slot, j1, 0, 0);
if (this.mc.thePlayer.inventory.getItemStack() != null) {
this.handleMouseClick(this.clickedSlot, this.clickedSlot.slotNumber, button, 0);
this.field_147011_y = x - l;
this.field_147010_z = y - i1;
this.returningStackDestSlot = this.clickedSlot;
this.returningStack = this.draggedStack;
this.returningStackTime = Minecraft.getSystemTime();
} else {
this.returningStack = null;
}
} else if (this.draggedStack != null) {
this.field_147011_y = x - l;
this.field_147010_z = y - i1;
this.returningStackDestSlot = this.clickedSlot;
this.returningStack = this.draggedStack;
this.returningStackTime = Minecraft.getSystemTime();
}
this.draggedStack = null;
this.clickedSlot = null;
}
} else if (this.field_147007_t && !this.field_147008_s.isEmpty()) {
this.handleMouseClick(null, -999, Container.func_94534_d(0, this.field_146987_F), 5);
iterator = this.field_147008_s.iterator();
while (iterator.hasNext()) {
slot1 = (Slot) iterator.next();
this.handleMouseClick(slot1, slot1.slotNumber, Container.func_94534_d(1, this.field_146987_F), 5);
}
this.handleMouseClick(null, -999, Container.func_94534_d(2, this.field_146987_F), 5);
} else if (this.mc.thePlayer.inventory.getItemStack() != null) {
if (button == this.mc.gameSettings.keyBindPickBlock.getKeyCode() + 100) {
this.handleMouseClick(slot, j1, button, 3);
} else {
flag1 = j1 != -999 && (Keyboard.isKeyDown(42) || Keyboard.isKeyDown(54));
if (flag1) {
this.field_146994_N = slot != null && slot.getHasStack() ? slot.getStack() : null;
}
this.handleMouseClick(slot, j1, button, flag1 ? 1 : 0);
}
}
}
if (this.mc.thePlayer.inventory.getItemStack() == null) {
this.field_146997_J = 0L;
}
this.field_147007_t = false;
}
/**
* Returns if the passed mouse position is over the specified slot.
*/
private boolean isMouseOverSlot(Slot p_146981_1_, int p_146981_2_, int p_146981_3_) {
return this.func_146978_c(p_146981_1_.xDisplayPosition, p_146981_1_.yDisplayPosition, 16, 16, p_146981_2_, p_146981_3_);
}
protected boolean func_146978_c(int p_146978_1_, int p_146978_2_, int p_146978_3_, int p_146978_4_, int p_146978_5_, int p_146978_6_) {
int k1 = this.guiLeft;
int l1 = this.guiTop;
p_146978_5_ -= k1;
p_146978_6_ -= l1;
return p_146978_5_ >= p_146978_1_ - 1 && p_146978_5_ < p_146978_1_ + p_146978_3_ + 1 && p_146978_6_ >= p_146978_2_ - 1 && p_146978_6_ < p_146978_2_ + p_146978_4_ + 1;
}
protected void handleMouseClick(Slot p_146984_1_, int p_146984_2_, int p_146984_3_, int p_146984_4_) {
if (p_146984_1_ != null) {
p_146984_2_ = p_146984_1_.slotNumber;
}
this.mc.playerController.windowClick(this.inventorySlots.windowId, p_146984_2_, p_146984_3_, p_146984_4_, this.mc.thePlayer);
}
/**
* Fired when a key is typed. This is the equivalent of KeyListener.keyTyped(KeyEvent e).
*/
public void keyTyped(char c, int keycode) {
super.keyTyped(c, keycode);
if (keycode == 1 || keycode == this.mc.gameSettings.keyBindInventory.getKeyCode()) {
this.mc.thePlayer.closeScreen();
}
this.checkHotbarKeys(keycode);
if (this.theSlot != null && this.theSlot.getHasStack()) {
if (keycode == this.mc.gameSettings.keyBindPickBlock.getKeyCode()) {
this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, 0, 3);
} else if (keycode == this.mc.gameSettings.keyBindDrop.getKeyCode()) {
this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, isCtrlKeyDown() ? 1 : 0, 4);
}
}
for (GuiWidget widget : widgets)
widget.keyTyped(c, keycode);
}
/**
* This function is what controls the hotbar shortcut check when you press a number key when hovering a stack.
*/
protected boolean checkHotbarKeys(int p_146983_1_) {
if (this.mc.thePlayer.inventory.getItemStack() == null && this.theSlot != null) {
for (int j = 0; j < 9; ++j) {
if (p_146983_1_ == this.mc.gameSettings.keyBindsHotbar[j].getKeyCode()) {
this.handleMouseClick(this.theSlot, this.theSlot.slotNumber, j, 2);
return true;
}
}
}
return false;
}
/**
* Called when the screen is unloaded. Used to disable keyboard repeat events
*/
public void onGuiClosed() {
if (this.mc.thePlayer != null) {
this.inventorySlots.onContainerClosed(this.mc.thePlayer);
}
}
/**
* Returns true if this GUI should pause the game when it is displayed in single-player
*/
public boolean doesGuiPauseGame() {
return false;
}
/**
* Called from the main game loop to update the screen.
*/
public void updateScreen() {
super.updateScreen();
if (!this.mc.thePlayer.isEntityAlive() || this.mc.thePlayer.isDead) {
this.mc.thePlayer.closeScreen();
}
if (mc.currentScreen == this)
for (GuiWidget widget : widgets)
widget.update();
}
public void reset() {
widgets.clear();
initGui();
addWidgets();
resize();
}
@Override
public void setWorldAndResolution(Minecraft mc, int i, int j) {
boolean init = this.mc == null;
super.setWorldAndResolution(mc, i, j);
if (init) {
addWidgets();
resize();
}
}
public void add(GuiWidget widget) {
widgets.add(widget);
widget.onAdded(this);
}
@Override
public void actionPerformed(String ident, Object... params) {
}
public void resize() {
}
public void addWidgets() {
}
@Override
public void handleMouseInput() {
super.handleMouseInput();
int i = Mouse.getEventDWheel();
if (i != 0) {
Point p = GuiDraw.getMousePosition();
int scroll = i > 0 ? 1 : -1;
for (GuiWidget widget : widgets)
widget.mouseScrolled(p.x, p.y, scroll);
}
}
}