public static void drawRoundedRect(MatrixStack matrixStack, float x, float y, float width, float height, Vector4f radius, Color c1, Color c2, Color c3, Color c4) {
        double d = Math.PI;
        matrixStack.push();
        RenderSystem.enableBlend();
        RenderSystem.defaultBlendFunc();
        GL11.glLineWidth(0.1f);
        RenderSystem.setShader(GameRenderer::getPositionColorProgram);
        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.TRIANGLE_FAN, VertexFormats.POSITION_COLOR);
        for (int i = 0; i < 90; i++) {
            buffer.vertex(matrixStack.peek().getPositionMatrix(), (float) (x + radius.x() + Math.sin(i * d / 180) * radius.x() * -1), (float) (y + radius.x() + Math.cos(i * d / 180) * radius.x() * -1), 0).color((float) c1.getRed() / 255, (float) c1.getGreen() / 255, (float) c1.getBlue() / 255, (float) c1.getAlpha() / 255);
        }
        for (int i = 90; i < 180; i++) {
            buffer.vertex(matrixStack.peek().getPositionMatrix(), (float) (x + radius.w() + Math.sin(i * d / 180) * radius.w() * -1), (float) (y + height - radius.w() + Math.cos(i * d / 180) * radius.w() * -1), 0).color((float) c3.getRed() / 255, (float) c3.getGreen() / 255, (float) c3.getBlue() / 255, (float) c3.getAlpha() / 255);
        }
        for (int i = 0; i < 90; i++) {
            buffer.vertex(matrixStack.peek().getPositionMatrix(), (float) (x + width - radius.z() + Math.sin(i * d / 180) * radius.z()), (float) (y + height - radius.z() + Math.cos(i * d / 180) * radius.z()), 0).color((float) c4.getRed() / 255, (float) c4.getGreen() / 255, (float) c4.getBlue() / 255, (float) c4.getAlpha() / 255);
        }
        for (int i = 90; i < 180; i++) {
            buffer.vertex(matrixStack.peek().getPositionMatrix(), (float) (x + width - radius.y() + Math.sin(i * d / 180) * radius.y()), (float) (y + radius.y() + Math.cos(i * d / 180) * radius.y()), 0).color((float) c2.getRed() / 255, (float) c2.getGreen() / 255, (float) c2.getBlue() / 255, (float) c2.getAlpha() / 255);
        }
        BufferRenderer.drawWithGlobalProgram(buffer.end());
        RenderSystem.setShaderColor(1, 1, 1, 1);
        RenderSystem.disableBlend();
        matrixStack.pop();
    }