// Path: src/main/java/modpacktweaks/client/gui/library/gui/IGuiBase.java
// public interface IGuiBase
// {
//     public ElementBase addElement(ElementBase element);
// 
//     public void addElements();
// 
//     public void addTabs();
// 
//     public void drawBackgroundTexture();
// 
//     public void drawElements();
// 
//     public ElementBase getElementAtPosition(int mouseX, int mouseY);
// 
//     public FontRenderer getFontRenderer();
// 
//     public int getGuiLeft();
// 
//     public int getGuiTop();
// 
//     public int getHeight();
// 
//     public RenderItem getItemRenderer();
// 
//     public Minecraft getMinecraft();
// 
//     public int getMouseX();
// 
//     public int getMouseY();
// 
//     public TextureManager getTextureManager();
// 
//     public int getWidth();
// 
//     public float getZLevel();
// 
//     public void handleElementButtonClick(String buttonName, int mouseButton);
// 
//     public void handleElementFakeSlotItemChange(ElementFakeItemSlot slot);
// 
//     public boolean isItemStackAllowedInFakeSlot(ElementFakeItemSlot slot, ItemStack stack);
// 
//     public void setZLevel(float zlevel);
// }


import java.util.Iterator;
import java.util.List;
import modpacktweaks.client.gui.library.gui.IGuiBase;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;
        Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 0, y + height, gui.getZLevel(), (u + 0) * texU, (v + height) * texV);
        tessellator.addVertexWithUV(x + width, y + height, gui.getZLevel(), (u + width) * texU, (v + height) * texV);
        tessellator.addVertexWithUV(x + width, y + 0, gui.getZLevel(), (u + width) * texU, (v + 0) * texV);
        tessellator.addVertexWithUV(x + 0, y + 0, gui.getZLevel(), (u + 0) * texU, (v + 0) * texV);
        tessellator.draw();
    }

    public static void drawTiledTexture(IGuiBase gui, int x, int y, IIcon icon, int width, int height)
    {
        int i = 0;
        int j = 0;

        int drawHeight = 0;
        int drawWidth = 0;

        for (i = 0; i < width; i += 16)
        {
            for (j = 0; j < height; j += 16)
            {
                drawWidth = Math.min(width - i, 16);
                drawHeight = Math.min(height - j, 16);
                drawScaledTexturedModelRectFromIcon(gui, x + i, y + j, icon, drawWidth, drawHeight);
            }
        }

        GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0F);
    }

// Path: src/main/java/modpacktweaks/client/gui/library/gui/IGuiBase.java
// public interface IGuiBase
// {
//     public ElementBase addElement(ElementBase element);
// 
//     public void addElements();
// 
//     public void addTabs();
// 
//     public void drawBackgroundTexture();
// 
//     public void drawElements();
// 
//     public ElementBase getElementAtPosition(int mouseX, int mouseY);
// 
//     public FontRenderer getFontRenderer();
// 
//     public int getGuiLeft();
// 
//     public int getGuiTop();
// 
//     public int getHeight();
// 
//     public RenderItem getItemRenderer();
// 
//     public Minecraft getMinecraft();
// 
//     public int getMouseX();
// 
//     public int getMouseY();
// 
//     public TextureManager getTextureManager();
// 
//     public int getWidth();
// 
//     public float getZLevel();
// 
//     public void handleElementButtonClick(String buttonName, int mouseButton);
// 
//     public void handleElementFakeSlotItemChange(ElementFakeItemSlot slot);
// 
//     public boolean isItemStackAllowedInFakeSlot(ElementFakeItemSlot slot, ItemStack stack);
// 
//     public void setZLevel(float zlevel);
// }


// Path: src/main/java/modpacktweaks/client/gui/library/gui/utils/GuiUtils.java
import java.util.Iterator;
import java.util.List;
import modpacktweaks.client.gui.library.gui.IGuiBase;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraftforge.fluids.FluidStack;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

        Tessellator tessellator = Tessellator.instance;
        tessellator.startDrawingQuads();
        tessellator.addVertexWithUV(x + 0, y + height, gui.getZLevel(), (u + 0) * texU, (v + height) * texV);
        tessellator.addVertexWithUV(x + width, y + height, gui.getZLevel(), (u + width) * texU, (v + height) * texV);
        tessellator.addVertexWithUV(x + width, y + 0, gui.getZLevel(), (u + width) * texU, (v + 0) * texV);
        tessellator.addVertexWithUV(x + 0, y + 0, gui.getZLevel(), (u + 0) * texU, (v + 0) * texV);
        tessellator.draw();
    }

    public static void drawTiledTexture(IGuiBase gui, int x, int y, IIcon icon, int width, int height)
    {
        int i = 0;
        int j = 0;

        int drawHeight = 0;
        int drawWidth = 0;

        for (i = 0; i < width; i += 16)
        {
            for (j = 0; j < height; j += 16)
            {
                drawWidth = Math.min(width - i, 16);
                drawHeight = Math.min(height - j, 16);
                drawScaledTexturedModelRectFromIcon(gui, x + i, y + j, icon, drawWidth, drawHeight);
            }
        }

        GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0F);
    }

    public static void drawTooltipHoveringText(IGuiBase gui, List<String> list, int x, int y)