public void render(int mouseX, int mouseY) {
        for (Button button : buttons) {
            if (!button.visible) {
                continue;
            }

            GL11.glBindTexture(GL11.GL_TEXTURE_2D, minecraft.textureManager.load(Textures.GUI));
            GL11.glColor4f(1F, 1F, 1F, 1F);
            byte spriteOffset = 1;
            boolean isHovered = (mouseX >= button.x) && (mouseY >= button.y)
                    && (mouseX < button.x + button.width) && (mouseY < button.y + button.height);
            if (!button.active) {
                spriteOffset = 0;
            } else if (isHovered) {
                spriteOffset = 2;
            }

            button.drawImage(button.x, button.y, 0, 46 + spriteOffset * 20, button.width / 2,
                    button.height);
            button.drawImage(button.x + button.width / 2, button.y, 200 - button.width / 2,
                    46 + spriteOffset * 20, button.width / 2, button.height);

            int textColorRGBA;
            if (!button.active) {
                textColorRGBA = -6250336; // A0A0A0FF
            } else if (isHovered) {
                textColorRGBA = 16777120; // A0FFFF00
            } else {
                textColorRGBA = 14737632; // E0E0E000
            }

            drawCenteredString(minecraft.fontRenderer, button.text, button.x + button.width / 2,
                    button.y + (button.height - 8) / 2, textColorRGBA);
        }
    }