Вопрос Как сделать закругление борда?

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
4 Фев 2023
Сообщения
2
Реакции
0
Добрый день. Пишу свой клиент. База: 1.16.5 mcp.
Хочу реализовать закругленный борд. Подскажите, пожалуйста, как такое реализовать? Не надо мне давать уже готовый код, моя задача — понять, как это реализовать, и самому реализовать.

Моя цель -
Пожалуйста, авторизуйтесь для просмотра ссылки.

Что сейчас имеется -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Код:
code:
Expand Collapse Copy
    private void func_238447_a_(MatrixStack matrixStack, ScoreObjective objective) {
        final Scoreboard scoreboard = objective.getScoreboard();

        List<Score> scores = scoreboard.getSortedScores(objective).stream()
                .filter(score -> !score.getPlayerName().startsWith("#"))
                .collect(Collectors.toList());

        if (scores.size() > 15) scores = scores.subList(scores.size() - 15, scores.size());

        final List<Pair<Score, ITextComponent>> scoreComponents = new ArrayList<>(scores.size());
        final ITextComponent title = objective.getDisplayName();

        final int titleWidth = this.getFontRenderer().getStringPropertyWidth(title);
        int maxWidth = titleWidth;
        final int colonSpaceWidth = this.getFontRenderer().getStringWidth(": ");


        for (Score score : scores) {
            final ScorePlayerTeam team = scoreboard.getPlayersTeam(score.getPlayerName());
            final ITextComponent playerName = ScorePlayerTeam.func_237500_a_(team, new StringTextComponent(score.getPlayerName()));
            scoreComponents.add(Pair.of(score, playerName));

            final int scoreWidth = this.getFontRenderer().getStringPropertyWidth(playerName)
                    + colonSpaceWidth
                    + this.getFontRenderer().getStringWidth(Integer.toString(score.getScorePoints()));
            maxWidth = Math.max(maxWidth, scoreWidth);
        }

        final int totalHeight = scores.size() * 10 + 12;
        final int startY = this.scaledHeight / 2 + totalHeight / 3;
        final int startX = this.scaledWidth - maxWidth - 10;
        final int backgroundColor = this.mc.gameSettings.getTextBackgroundColor(1.5F);
        final int titleBackgroundColor = this.mc.gameSettings.getTextBackgroundColor(1.5F);

        for (int i = 0; i < scoreComponents.size(); i++) {
            final Pair<Score, ITextComponent> pair = scoreComponents.get(i);
            final ITextComponent component = pair.getSecond();
            final int yPos = startY - (i + 1) * 9;
            final int rightEdge = this.scaledWidth - 3 + 2;

            fill(matrixStack, startX - 2, yPos, rightEdge, yPos + 9, backgroundColor);

            this.getFontRenderer().func_243248_b(matrixStack, component, (float)startX, (float)yPos, -1);

            if (i == scoreComponents.size() - 1) {
                fill(matrixStack, startX - 2, yPos - 10, rightEdge, yPos, titleBackgroundColor);

                final int titleX = startX + (maxWidth - titleWidth) / 2;
                this.getFontRenderer().func_243248_b(matrixStack, title, (float)titleX, (float)(yPos - 9), -1);
            }
        }
    }
 
Не знаю что тут конкретно за что отвечает но думаю строка
41 строка:
Expand Collapse Copy
fill(matrixStack, startX - 2, yPos, rightEdge, yPoy + 9, backgroundColor);
Это фон который те нужно заменить. Вместо него можешь взять roundedRect из рендер утилки либо если хочешь как на скрине делай свой рект по тому же алгоритму только для отрисовки юзай
Java:
Expand Collapse Copy
AbstractGui.fill(MatrixStack matrixStack, int minX, int minY, int maxX, int maxY, int color)
Вместо шейдера
 
Не знаю что тут конкретно за что отвечает но думаю строка
41 строка:
Expand Collapse Copy
fill(matrixStack, startX - 2, yPos, rightEdge, yPoy + 9, backgroundColor);
Это фон который те нужно заменить. Вместо него можешь взять roundedRect из рендер утилки либо если хочешь как на скрине делай свой рект по тому же алгоритму только для отрисовки юзай
Java:
Expand Collapse Copy
AbstractGui.fill(MatrixStack matrixStack, int minX, int minY, int maxX, int maxY, int color)
Вместо шейдера
Спасибо конечно, но что за "рендер утилки"? Где её можно взять?
 
Спасибо конечно, но что за "рендер утилки"? Где её можно взять?
Рендер утилка - класс, в котором прописан основной рендер вроде: обычный рект с закругленными углами, свечения, отображения картинки и тд. Вот например рендер утилка под 1.16.5
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Назад
Сверху Снизу