What I use to try rendering the GUI:
mc.getTextureManager().bindTexture(BACKGROUND);
int k = (this.width - 256) / 2;
int l = (this.height - 202) / 2;
GlStateManager.enableBlend();
drawTexturedModalRect(k, l, 0, 0, 256, 202);
int i = MathHelper.floor_double(this.xScrollO + (this.xScrollP - this.xScrollO) * (double)partialTicks);
int j = MathHelper.floor_double(this.yScrollO + (this.yScrollP - this.yScrollO) * (double)partialTicks);
if (i < X_MIN)
{
i = X_MIN;
}
if (j < Y_MIN)
{
j = Y_MIN;
}
if (i >= X_MAX)
{
i = X_MAX - 1;
}
if (j >= Y_MAX)
{
j = Y_MAX - 1;
}
k = (this.width - 256) / 2;
l = (this.height - 202) / 2;
int i1 = k + 16;
int j1 = l + 17;
this.zLevel = 0.0F;
GlStateManager.pushMatrix();
GlStateManager.translate((float)i1, (float)j1, -200.0F);
GlStateManager.scale(1.0F / this.zoom, 1.0F / this.zoom, 1.0F);
GlStateManager.enableTexture2D();
GlStateManager.disableLighting();
GlStateManager.enableRescaleNormal();
GlStateManager.enableColorMaterial();
for (Map.Entry<String, Leaf> e : leaves.entrySet()){
Leaf leaf = e.getValue();
Talent talent = Talent.valueOf(e.getKey());
int x = leaf.x * 24 - i;
int y = leaf.y * 24 - j;
//draw lines. black = unavailable, white = available, green = learned.
for (Requirement r : talent.getRequirements()){
mc.getTextureManager().bindTexture(BACKGROUND);
int rx = leaves.get(r.talent).x * 24 - i + 11;
int ry = leaves.get(r.talent).y * 24 - j + 11;
//finish drawing lines
}
//draw talent
if (leaf.level == 0){
GlStateManager.color(0.3f, 0.3f, 0.3f, 1f);
}else{
GlStateManager.color(1f, 1f, 1f, 1f);
}
GlStateManager.enableBlend();
if (leaf.level == talent.getDesc().length + 1){
drawTexturedModalRect(x - 2, y - 2, 26, 202, 26, 26);
}else{
drawTexturedModalRect(x - 2, y - 2, 0, 202, 26, 26);
}
GlStateManager.disableBlend();
GlStateManager.disableLighting();
GlStateManager.enableCull();
mc.getTextureManager().bindTexture(talent.getIcon());
drawTexturedModalRect(x + 3, y + 3, 0, 0, 16, 16);
GlStateManager.blendFunc(GlStateManager.SourceFactor.SRC_ALPHA, GlStateManager.DestFactor.ONE_MINUS_SRC_ALPHA);
GlStateManager.disableLighting();
if (mouseX >= x && mouseX <= x + 26 && mouseY >= y && mouseY <= y + 26 && completedRequirements(e.getKey())){
List<String> tooltip = new ArrayList<String>(0);
tooltip.add(talent.getName());
tooltip.add("");
tooltip.add(talent.getDesc()[leaf.level - 1 <= -1 ? 0 : leaf.level]);
drawHoveringText(tooltip, x, y);
if (Mouse.isButtonDown(0)){
//handle points
}
}
}
GlStateManager.popMatrix();
Most of it is copied from Achievements GUI but some of it is only inspired by it.
In game screenshot:
As you can see, the talent (achievement icon) is invisible (somewhere in the lowest row of the GUI) and the tooltip is rendered in a completely different place. I can drag the GUI and the invisible talent moves with it. Also, the "Done" button is greyed out.