@Override
 public void onRenderGUI() {
   if (target == null || velocity < 0.1) return;
   glEnable(GL_BLEND);
   glDisable(GL_CULL_FACE);
   glDisable(GL_TEXTURE_2D);
   glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
   RenderUtil.setColor(new Color(8, 8, 8, 128));
   ScaledResolution sr =
       new ScaledResolution(
           Minecraft.getMinecraft(),
           Minecraft.getMinecraft().displayWidth,
           Minecraft.getMinecraft().displayHeight);
   int width = sr.getScaledWidth();
   int height = sr.getScaledHeight();
   String targetLocked = "Target locked";
   glBegin(GL_QUADS);
   {
     glVertex2d(width / 2 + 1, height / 2 + 1);
     glVertex2d(
         width / 2
             + ((WurstTheme) WurstClient.INSTANCE.gui.getTheme())
                 .getFontRenderer()
                 .getStringWidth(targetLocked)
             + 4,
         height / 2 + 1);
     glVertex2d(
         width / 2
             + ((WurstTheme) WurstClient.INSTANCE.gui.getTheme())
                 .getFontRenderer()
                 .getStringWidth(targetLocked)
             + 4,
         height / 2
             + ((WurstTheme) WurstClient.INSTANCE.gui.getTheme()).getFontRenderer().FONT_HEIGHT);
     glVertex2d(
         width / 2 + 1,
         height / 2
             + ((WurstTheme) WurstClient.INSTANCE.gui.getTheme()).getFontRenderer().FONT_HEIGHT);
   }
   glEnd();
   glEnable(GL_TEXTURE_2D);
   ((WurstTheme) WurstClient.INSTANCE.gui.getTheme())
       .getFontRenderer()
       .drawStringWithShadow(
           targetLocked, width / 2 + 2, height / 2, RenderUtil.toRGBA(Color.WHITE));
   glEnable(GL_CULL_FACE);
   glDisable(GL_BLEND);
 }
 @Override
 protected void renderComponent(Label label) {
   translateComponent(label, false);
   int x = 0, y = 0;
   switch (label.getHorizontalAlignment()) {
     case CENTER:
       x += label.getWidth() / 2 - theme.getFontRenderer().getStringWidth(label.getText()) / 2;
       break;
     case RIGHT:
       x += label.getWidth() - theme.getFontRenderer().getStringWidth(label.getText()) - 2;
       break;
     default:
       x += 2;
   }
   switch (label.getVerticalAlignment()) {
     case TOP:
       y += 2;
       break;
     case BOTTOM:
       y += label.getHeight() - theme.getFontRenderer().FONT_HEIGHT - 2;
       break;
     default:
       y += label.getHeight() / 2 - theme.getFontRenderer().FONT_HEIGHT / 2;
   }
   glEnable(GL_BLEND);
   glEnable(GL_TEXTURE_2D);
   glDisable(GL_CULL_FACE);
   theme
       .getFontRenderer()
       .drawString(label.getText(), x, y, RenderUtil.toRGBA(label.getForegroundColor()));
   glEnable(GL_CULL_FACE);
   glEnable(GL_TEXTURE_2D);
   glDisable(GL_BLEND);
   translateComponent(label, true);
 }
 @Override
 protected void handleComponentUpdate(Slider component) {
   if (component.isValueChanging()) {
     if (!Mouse.isButtonDown(0)) {
       component.setValueChanging(false);
       return;
     }
     Point mouse = RenderUtil.calculateMouseLocation();
     Container parent = component.getParent();
     if (parent != null) mouse.translate(-parent.getX(), -parent.getY());
     double percent = (double) (mouse.x - 4) / (double) (component.getWidth() - 6);
     double value =
         component.getMinimumValue()
             + percent * (component.getMaximumValue() - component.getMinimumValue());
     component.setValue(value);
   }
 }
  @Override
  protected void renderComponent(Slider component) {
    translateComponent(component, false);

    // GL settings
    glEnable(GL_BLEND);
    glDisable(GL_CULL_FACE);

    // area & font
    Rectangle area = component.getArea();
    int fontSize = theme.getFontRenderer().FONT_HEIGHT;
    FontRenderer fontRenderer = theme.getFontRenderer();

    // text
    fontRenderer.drawString(
        component.getText(), 0, 0, RenderUtil.toRGBA(component.getForegroundColor()));

    // value
    String content = null;
    switch (component.getValueDisplay()) {
      case DECIMAL:
        content =
            Double.toString(
                (double)
                        (Math.round(component.getValue() / component.getIncrement())
                            * 1000000
                            * (long) (component.getIncrement() * 1000000))
                    / 1000000
                    / 1000000);
        break;
      case INTEGER:
        content = String.format("%,d", Long.valueOf(Math.round(component.getValue())));
        break;
      case PERCENTAGE:
        int percent =
            (int)
                Math.round(
                    (component.getValue() - component.getMinimumValue())
                        / (component.getMaximumValue() - component.getMinimumValue())
                        * 100D);
        content = String.format("%d%%", percent);
      default:
    }
    if (content != null) {
      String suffix = component.getContentSuffix();
      if (suffix != null && !suffix.trim().isEmpty()) content = content.concat(" ").concat(suffix);
      fontRenderer.drawString(
          content,
          component.getWidth() - fontRenderer.getStringWidth(content),
          0,
          RenderUtil.toRGBA(component.getForegroundColor()));
    }
    glDisable(GL_TEXTURE_2D);

    // line
    glColor4f(0.03125f, 0.03125f, 0.03125f, 0.25f);
    glBegin(GL_QUADS);
    {
      glVertex2d(1, fontSize + 4);
      glVertex2d(area.width - 1, fontSize + 4);
      glVertex2d(area.width - 1, area.height - 2);
      glVertex2d(1, area.height - 2);
    }
    glEnd();

    // line shadow
    glLineWidth(1.0f);
    glColor4f(0.125f, 0.125f, 0.125f, 0.5f);
    glBegin(GL_LINE_LOOP);
    {
      glVertex2d(1, fontSize + 4);
      glVertex2d(area.width - 1, fontSize + 4);
      glVertex2d(area.width - 1, area.height - 2);
      glVertex2d(1, area.height - 2);
    }
    glEnd();

    double sliderPercentage =
        (component.getValue() - component.getMinimumValue())
            / (component.getMaximumValue() - component.getMinimumValue());

    // slider
    glColor4f(0.0f + (float) sliderPercentage, 1.0f - (float) sliderPercentage, 0.0f, 0.5f);
    glBegin(GL_QUADS);
    {
      glVertex2d((area.width - 6) * sliderPercentage - 1, fontSize + 1);
      glVertex2d((area.width - 6) * sliderPercentage + 7, fontSize + 1);
      glVertex2d((area.width - 6) * sliderPercentage + 7, area.height + 1);
      glVertex2d((area.width - 6) * sliderPercentage - 1, area.height + 1);
    }
    glEnd();

    // slider shadow
    RenderUtil.boxShadow(
        (area.width - 6) * sliderPercentage - 1,
        fontSize + 1,
        (area.width - 6) * sliderPercentage + 7,
        area.height + 1);

    // GL resets
    glEnable(GL_CULL_FACE);
    glEnable(GL_TEXTURE_2D);
    glDisable(GL_BLEND);

    translateComponent(component, true);
  }