Вопрос FontRender

Начинающий
Статус
Оффлайн
Регистрация
26 Янв 2023
Сообщения
44
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Где проблема в коде ?
FontRender:
package zip.utils.render.font;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import lombok.Setter;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.BufferUtils;
import zip.utils.IMinecraft;
import zip.utils.render.IRender;
import zip.utils.render.Render;

import static org.lwjgl.opengl.GL20.*;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.nio.ByteBuffer;

public class FontRender implements IMinecraft, IRender {

    [USER=1132491]@setter[/USER]
    private Font font;
    private final int MARGIN = 4;
    private boolean fractionalMetrics = false;

    [USER=1132491]@setter[/USER]
    public CharData[] regular;
    [USER=1132491]@setter[/USER]
    private CharData[] italic;
    [USER=1132491]@setter[/USER]
    private CharData[] bold;


    public FontRender(String font, int type) {
        this(font, 256, type);
    }

    public FontRender(String font, int countChar, int type) {
        final String PATH = "nutshell/fonts/";
        try {
            setFont(Font.createFont(Font.TRUETYPE_FONT, mc.getResourceManager().getResource(new ResourceLocation(String.format("%s%s", PATH, font))).getInputStream()));
        } catch (Exception exception) {
            exception.printStackTrace();
        }

        setRegular(setDataChar(new CharData[countChar], type));
        setItalic(setDataChar(new CharData[countChar], type));
        setBold(setDataChar(new CharData[countChar], type));
    }

    private CharData[] setDataChar(CharData[] charData, int type) {
        Font font = this.font.deriveFont(type);
        BufferedImage image = new BufferedImage(1, 1, BufferedImage.TYPE_INT_ARGB);

        Graphics2D graphics1 = (Graphics2D) image.getGraphics();
        graphics1.setFont(font);

        FontMetrics fontMetrics = graphics1.getFontMetrics();

        for (int index = 0; index < charData.length; index++) {
            char _char = (char) index;

            Rectangle2D bound = fontMetrics.getStringBounds(_char + "", graphics1);
            float width = (float) bound.getWidth() + (2 * MARGIN),
                  height = (float) bound.getHeight();

            BufferedImage charImage = new BufferedImage((int) Math.ceil(width), (int) Math.ceil(width), BufferedImage.TYPE_INT_ARGB);

            Graphics2D graphics2 = (Graphics2D) charImage.getGraphics();
            graphics2.setFont(font);

            graphics2.setColor(new Color(255, 255, 255, 0));
            graphics2.fillRect(0, 0, charImage.getWidth(), charImage.getHeight());
            graphics2.setColor(Color.WHITE);

            graphics2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
            graphics2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
            graphics2.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
            graphics2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, fractionalMetrics ? RenderingHints.VALUE_FRACTIONALMETRICS_ON : RenderingHints.VALUE_FRACTIONALMETRICS_OFF);

            graphics2.drawString(_char + "", MARGIN, fontMetrics.getAscent());

            int textureId = GlStateManager.genTexture();
            createBindTexture(textureId, charImage);

            charData[index] = new CharData(_char, textureId, charImage.getWidth(), charImage.getHeight());
        }

        return charData;
    }

    private void createBindTexture(int textureId, BufferedImage image) {
        int[] pixels = new int[image.getWidth() * image.getHeight()];

        image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth());
        ByteBuffer buffer = BufferUtils.createByteBuffer(image.getWidth() * image.getHeight() * 4); /* 4-RGBA / 3-RGB */

        for (int y = 0; y < image.getHeight(); y++) {
            for (int x = 0; x < image.getWidth(); x++) {
                int pixel = pixels[y * image.getWidth() + x];

                buffer.put((byte) ((pixel >> 16) & 0xFF));
                buffer.put((byte) ((pixel >> 8) & 0xFF));
                buffer.put((byte) (pixel & 0xFF));
                buffer.put((byte) ((pixel >> 24) & 0xFF));
            }
        }

        buffer.flip();

        GlStateManager.bindTexture(textureId);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
        glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
        glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image.getWidth(), image.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);

        GlStateManager.bindTexture(0);
    }

    public void drawChar(MatrixStack matrix, char _char, CharData[] charData, float x, float y) {
        CharData _charData = charData[_char];

        _charData.bind();
        glPushMatrix();
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        Render.fill(matrix, x, y, _charData.width, _charData.height);
        glDisable(GL_BLEND);
        glPopMatrix();
    }
}

CharData:
package zip.utils.render.font;

import lombok.AllArgsConstructor;
import lombok.Setter;
import static org.lwjgl.opengl.GL20.*;

[USER=1132491]@setter[/USER]
@AllArgsConstructor
public class CharData {

    public char _char;
    private int textureIn;
    public float width, height;

    public void bind() {
        glBindTexture(GL_TEXTURE_2D, textureIn);
    }
}
 
еблан
Пользователь
Статус
Оффлайн
Регистрация
12 Июн 2019
Сообщения
263
Реакции[?]
86
Поинты[?]
30K
код верный,проверь публичный и секретный ключ компиляции
 
Сверху Снизу