// Path: src/main/java/p455w0rdslib/api/gui/IGuiElement.java
// public interface IGuiElement {
// 
// 	int getX();
// 
// 	IGuiElement setX(int posX);
// 
// 	int getY();
// 
// 	IGuiElement setY(int posY);
// 
// 	int getWidth();
// 
// 	IGuiElement setWidth(int width);
// 
// 	int getHeight();
// 
// 	IGuiElement setHeight(int height);
// 
// 	IGuiElement setSize(int width, int height);
// 
// 	void drawBackground(int mouseX, int mouseY, float gameTicks);
// 
// 	void drawForeground(int mouseX, int mouseY);
// 
// 	boolean onClick(int mouseX, int mouseY);
// 
// 	boolean onRightClick(int mouseX, int mouseY);
// 
// 	boolean onMiddleClick(int mouseX, int mouseY);
// 
// 	boolean onMousePressed(int mouseX, int mouseY, int button);
// 
// 	void onMouseReleased(int mouseX, int mouseY, int button);
// 
// 	boolean onMouseWheel(int mouseX, int mouseY, int movement);
// 
// 	IModularGui getGui();
// 
// 	IGuiElement setGui(IModularGui guiIn);
// 
// 	boolean isVisible();
// 
// 	IGuiElement setVisible(boolean visibility);
// 
// 	boolean isEnabled();
// 
// 	IGuiElement setEnabled(boolean doEnable);
// 
// 	IGuiElement enable();
// 
// 	IGuiElement disable();
// 
// 	GuiPos getPos();
// 
// 	IGuiElement setPos(int xPos, int yPos);
// 
// 	void update(int mouseX, int mouseY);
// 
// 	boolean isMouseOver(int mouseX, int mouseY);
// 
// 	List<String> getTooltip();
// 
// 	IGuiElement setTooltip(List<String> tooltipLines);
// 
// 	boolean hasTooltip();
// 
// }
// 
// Path: src/main/java/p455w0rdslib/api/gui/IModularGui.java
// public interface IModularGui {
// 
// 	IModularGui addElement(IGuiElement element);
// 
// 	boolean isMouseOverElement(IGuiElement element, int mouseX, int mouseY);
// 
// 	void drawElements(float partialTick, int mouseX, int mouseY, boolean foreground);
// 
// 	List<IGuiElement> getElements();
// 
// 	void updateElements(int mouseX, int mouseY);
// 
// 	String getTitle();
// 
// 	IModularGui setTitle(String titleText);
// 
// 	IModularGui setTitleScale(float scale);
// 
// 	IModularGui setTitleOffsetX(int offset);
// 
// 	IModularGui setTitleOffsetY(int offset);
// 
// 	IModularGui setTitlePos(int x, int y);
// 
// 	int getTitleColor();
// 
// 	IModularGui setTitleColor(int color);
// 
// 	ResourceLocation getBackgroundTexture();
// 
// 	IModularGui setBackgroundTexture(ResourceLocation location);
// 
// 	boolean isMouseOver(int rectX, int rectY, int rectWidth, int rectHeight, int pointX, int pointY);
// 
// 	int getX();
// 
// 	int getY();
// 
// 	int getWidth();
// 
// 	IModularGui setWidth(int w);
// 
// 	int getHeight();
// 
// 	IModularGui setHeight(int h);
// 
// 	IModularGui setSize(int w, int h);
// 
// 	IModularGui setTooltipColor(int color, boolean top);
// 
// 	int[] getTooltipColors();
// 
// 	boolean onMouseWheel(int mouseX, int mouseY, int wheelMovement);
// 
// }


import java.util.List;
import com.google.common.collect.Lists;
import net.minecraft.util.ResourceLocation;
import p455w0rdslib.api.gui.IGuiElement;
import p455w0rdslib.api.gui.IModularGui;
package p455w0rdslib.client.gui.element;




/**
 * Base class for all GUI elements
 *
 * @author p455w0rd
 *
 */
public abstract class GuiElement implements IGuiElement {

	protected static final ResourceLocation VANILLA_BUTTON_TEXTURES = new ResourceLocation("textures/gui/widgets.png");

// Path: src/main/java/p455w0rdslib/api/gui/IGuiElement.java
// public interface IGuiElement {
// 
// 	int getX();
// 
// 	IGuiElement setX(int posX);
// 
// 	int getY();
// 
// 	IGuiElement setY(int posY);
// 
// 	int getWidth();
// 
// 	IGuiElement setWidth(int width);
// 
// 	int getHeight();
// 
// 	IGuiElement setHeight(int height);
// 
// 	IGuiElement setSize(int width, int height);
// 
// 	void drawBackground(int mouseX, int mouseY, float gameTicks);
// 
// 	void drawForeground(int mouseX, int mouseY);
// 
// 	boolean onClick(int mouseX, int mouseY);
// 
// 	boolean onRightClick(int mouseX, int mouseY);
// 
// 	boolean onMiddleClick(int mouseX, int mouseY);
// 
// 	boolean onMousePressed(int mouseX, int mouseY, int button);
// 
// 	void onMouseReleased(int mouseX, int mouseY, int button);
// 
// 	boolean onMouseWheel(int mouseX, int mouseY, int movement);
// 
// 	IModularGui getGui();
// 
// 	IGuiElement setGui(IModularGui guiIn);
// 
// 	boolean isVisible();
// 
// 	IGuiElement setVisible(boolean visibility);
// 
// 	boolean isEnabled();
// 
// 	IGuiElement setEnabled(boolean doEnable);
// 
// 	IGuiElement enable();
// 
// 	IGuiElement disable();
// 
// 	GuiPos getPos();
// 
// 	IGuiElement setPos(int xPos, int yPos);
// 
// 	void update(int mouseX, int mouseY);
// 
// 	boolean isMouseOver(int mouseX, int mouseY);
// 
// 	List<String> getTooltip();
// 
// 	IGuiElement setTooltip(List<String> tooltipLines);
// 
// 	boolean hasTooltip();
// 
// }
// 
// Path: src/main/java/p455w0rdslib/api/gui/IModularGui.java
// public interface IModularGui {
// 
// 	IModularGui addElement(IGuiElement element);
// 
// 	boolean isMouseOverElement(IGuiElement element, int mouseX, int mouseY);
// 
// 	void drawElements(float partialTick, int mouseX, int mouseY, boolean foreground);
// 
// 	List<IGuiElement> getElements();
// 
// 	void updateElements(int mouseX, int mouseY);
// 
// 	String getTitle();
// 
// 	IModularGui setTitle(String titleText);
// 
// 	IModularGui setTitleScale(float scale);
// 
// 	IModularGui setTitleOffsetX(int offset);
// 
// 	IModularGui setTitleOffsetY(int offset);
// 
// 	IModularGui setTitlePos(int x, int y);
// 
// 	int getTitleColor();
// 
// 	IModularGui setTitleColor(int color);
// 
// 	ResourceLocation getBackgroundTexture();
// 
// 	IModularGui setBackgroundTexture(ResourceLocation location);
// 
// 	boolean isMouseOver(int rectX, int rectY, int rectWidth, int rectHeight, int pointX, int pointY);
// 
// 	int getX();
// 
// 	int getY();
// 
// 	int getWidth();
// 
// 	IModularGui setWidth(int w);
// 
// 	int getHeight();
// 
// 	IModularGui setHeight(int h);
// 
// 	IModularGui setSize(int w, int h);
// 
// 	IModularGui setTooltipColor(int color, boolean top);
// 
// 	int[] getTooltipColors();
// 
// 	boolean onMouseWheel(int mouseX, int mouseY, int wheelMovement);
// 
// }


// Path: src/main/java/p455w0rdslib/client/gui/element/GuiElement.java
import java.util.List;
import com.google.common.collect.Lists;
import net.minecraft.util.ResourceLocation;
import p455w0rdslib.api.gui.IGuiElement;
import p455w0rdslib.api.gui.IModularGui;

package p455w0rdslib.client.gui.element;




/**
 * Base class for all GUI elements
 *
 * @author p455w0rd
 *
 */
public abstract class GuiElement implements IGuiElement {

	protected static final ResourceLocation VANILLA_BUTTON_TEXTURES = new ResourceLocation("textures/gui/widgets.png");

	private IModularGui gui;