Вопрос Esp на mcp 1.21.4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Мар 2022
Сообщения
349
Реакции
8

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

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

Спасибо!

ну вот прикол с ректом, текст рисуется нормально а рект уебан


Код:
Expand Collapse Copy
package dev.faith.module.impl.visual;

import com.darkmagician6.eventapi.EventTarget;
import dev.faith.module.api.Category;
import dev.faith.module.api.Function;
import dev.faith.module.api.Module;
import dev.faith.event.impl.render.EventRender2D;
import dev.faith.util.impl.render.RenderUtil;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;
import net.minecraft.util.Mth;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.joml.Vector4f;

@Function(name = "Tags", category = Category.VISUAL)
public class Tags extends Module {
    public Tags() {
        super();
        setDesc("Отображает теги над игроками с их ником и здоровьем");
    }

    @EventTarget
    public void onRender2D(EventRender2D event) {
        Minecraft mc = Minecraft.getInstance();
        if (!this.isToggled() || mc.level == null || mc.player == null) return;

        GuiGraphics guiGraphics = event.getGuiGraphics();
        float partialTicks = event.getDeltaTracker().getGameTimeDeltaPartialTick(false);

        for (Player player : mc.level.players()) {
            if (player == mc.player) continue;

            double distance = player.distanceTo(mc.player);
            if (distance > 50) continue;

            String playerName = player.getName().getString();
            float health = player.getHealth();
            String tagText = String.format("%s HP: %.1f", playerName, health);

            Vec3 playerPos = getInterpolatedPosition(player, partialTicks);
            Vector3f screenPos = worldToScreen(mc, playerPos);
            if (screenPos == null) {
                continue;
            }

            float x = screenPos.x();
            float y = screenPos.y();

            float scale = Math.min(1.0f + (float)(distance * 0.01f), 1.3f);

            float textWidth = fontManager.SFPRO[0].getStringWidth(tagText);
            float textHeight = fontManager.SFPRO[0].getSize();

            float padding = 2;
            float rectWidth = textWidth + padding * 2;
            float rectHeight = textHeight + padding * 2;

            guiGraphics.pose().pushPose();
            guiGraphics.pose().translate(x, y, 0);
            guiGraphics.pose().scale(scale, scale, 1.0f);
            guiGraphics.pose().translate(-x, -y, 0);

            float rectX = x - rectWidth / 2;
            float rectY = y - rectHeight / 2;
           
            int backgroundColor = 0x80000000;
            RenderUtil.drawRoundedRect(guiGraphics,
                    rectX,
                    rectY,
                    rectX + rectWidth,
                    rectY + rectHeight,
                    2,
                    backgroundColor
            );

            int textColor;
            float healthPercent = player.getHealth() / player.getMaxHealth();
            if (healthPercent > 0.6f) {
                textColor = 0xFF00FF00;
            } else if (healthPercent > 0.3f) {
                textColor = 0xFFFFFF00;
            } else {
                textColor = 0xFFFF0000;
            }

            fontManager.SFPRO[0].drawString(guiGraphics, tagText, x - textWidth / 2, y - textHeight / 2, textColor);

            guiGraphics.pose().popPose();
        }
    }

    private Vec3 getInterpolatedPosition(Player player, float partialTicks) {
        return new Vec3(
                Mth.lerp(partialTicks, player.xOld, player.getX()),
                Mth.lerp(partialTicks, player.yOld, player.getY()) + player.getBbHeight() + 0.5,
                Mth.lerp(partialTicks, player.zOld, player.getZ())
        );
    }

    private Vector3f worldToScreen(Minecraft mc, Vec3 worldPos) {
        try {
            Matrix4f modelViewMatrix = getModelViewMatrix(mc);
            Matrix4f projectionMatrix = mc.gameRenderer.getProjectionMatrix(mc.options.fov().get());

            Vector4f pos = new Vector4f((float) worldPos.x, (float) worldPos.y, (float) worldPos.z, 1.0f);

            pos.mul(modelViewMatrix);
            pos.mul(projectionMatrix);

            if (pos.w <= 0) {
                return null;
            }

            pos.div(pos.w);

            if (Math.abs(pos.x) > 1.0f || Math.abs(pos.y) > 1.0f || Math.abs(pos.z) > 1.0f) {
                return null;
            }

            int screenWidth = mc.getWindow().getGuiScaledWidth();
            int screenHeight = mc.getWindow().getGuiScaledHeight();

            float screenX = (pos.x * 0.5f + 0.5f) * screenWidth;
            float screenY = (1.0f - (pos.y * 0.5f + 0.5f)) * screenHeight;

            return new Vector3f(screenX, screenY, pos.z);
        } catch (Exception e) {
            return null;
        }
    }

    private Matrix4f getModelViewMatrix(Minecraft mc) {
        Camera camera = mc.gameRenderer.getMainCamera();
        Vec3 cameraPos = camera.getPosition();

        Matrix4f matrix = new Matrix4f();

        matrix.rotateX((float) Math.toRadians(camera.getXRot()));
        matrix.rotateY((float) Math.toRadians(camera.getYRot() + 180.0f));[ATTACH type="full"]307826[/ATTACH]

        matrix.translate((float) -cameraPos.x, (float) -cameraPos.y, (float) -cameraPos.z);

        return matrix;
    }
}

я уже хз что тут не так
 

Вложения

  • Снимок экрана 2025-06-03 203111.png
    Снимок экрана 2025-06-03 203111.png
    324.7 KB · Просмотры: 102
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ну вот прикол с ректом, текст рисуется нормально а рект уебан


Код:
Expand Collapse Copy
package dev.faith.module.impl.visual;

import com.darkmagician6.eventapi.EventTarget;
import dev.faith.module.api.Category;
import dev.faith.module.api.Function;
import dev.faith.module.api.Module;
import dev.faith.event.impl.render.EventRender2D;
import dev.faith.util.impl.render.RenderUtil;
import net.minecraft.client.Camera;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiGraphics;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.phys.Vec3;
import net.minecraft.util.Mth;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.joml.Vector4f;

@Function(name = "Tags", category = Category.VISUAL)
public class Tags extends Module {
    public Tags() {
        super();
        setDesc("Отображает теги над игроками с их ником и здоровьем");
    }

    @EventTarget
    public void onRender2D(EventRender2D event) {
        Minecraft mc = Minecraft.getInstance();
        if (!this.isToggled() || mc.level == null || mc.player == null) return;

        GuiGraphics guiGraphics = event.getGuiGraphics();
        float partialTicks = event.getDeltaTracker().getGameTimeDeltaPartialTick(false);

        for (Player player : mc.level.players()) {
            if (player == mc.player) continue;

            double distance = player.distanceTo(mc.player);
            if (distance > 50) continue;

            String playerName = player.getName().getString();
            float health = player.getHealth();
            String tagText = String.format("%s HP: %.1f", playerName, health);

            Vec3 playerPos = getInterpolatedPosition(player, partialTicks);
            Vector3f screenPos = worldToScreen(mc, playerPos);
            if (screenPos == null) {
                continue;
            }

            float x = screenPos.x();
            float y = screenPos.y();

            float scale = Math.min(1.0f + (float)(distance * 0.01f), 1.3f);

            float textWidth = fontManager.SFPRO[0].getStringWidth(tagText);
            float textHeight = fontManager.SFPRO[0].getSize();

            float padding = 2;
            float rectWidth = textWidth + padding * 2;
            float rectHeight = textHeight + padding * 2;

            guiGraphics.pose().pushPose();
            guiGraphics.pose().translate(x, y, 0);
            guiGraphics.pose().scale(scale, scale, 1.0f);
            guiGraphics.pose().translate(-x, -y, 0);

            float rectX = x - rectWidth / 2;
            float rectY = y - rectHeight / 2;
         
            int backgroundColor = 0x80000000;
            RenderUtil.drawRoundedRect(guiGraphics,
                    rectX,
                    rectY,
                    rectX + rectWidth,
                    rectY + rectHeight,
                    2,
                    backgroundColor
            );

            int textColor;
            float healthPercent = player.getHealth() / player.getMaxHealth();
            if (healthPercent > 0.6f) {
                textColor = 0xFF00FF00;
            } else if (healthPercent > 0.3f) {
                textColor = 0xFFFFFF00;
            } else {
                textColor = 0xFFFF0000;
            }

            fontManager.SFPRO[0].drawString(guiGraphics, tagText, x - textWidth / 2, y - textHeight / 2, textColor);

            guiGraphics.pose().popPose();
        }
    }

    private Vec3 getInterpolatedPosition(Player player, float partialTicks) {
        return new Vec3(
                Mth.lerp(partialTicks, player.xOld, player.getX()),
                Mth.lerp(partialTicks, player.yOld, player.getY()) + player.getBbHeight() + 0.5,
                Mth.lerp(partialTicks, player.zOld, player.getZ())
        );
    }

    private Vector3f worldToScreen(Minecraft mc, Vec3 worldPos) {
        try {
            Matrix4f modelViewMatrix = getModelViewMatrix(mc);
            Matrix4f projectionMatrix = mc.gameRenderer.getProjectionMatrix(mc.options.fov().get());

            Vector4f pos = new Vector4f((float) worldPos.x, (float) worldPos.y, (float) worldPos.z, 1.0f);

            pos.mul(modelViewMatrix);
            pos.mul(projectionMatrix);

            if (pos.w <= 0) {
                return null;
            }

            pos.div(pos.w);

            if (Math.abs(pos.x) > 1.0f || Math.abs(pos.y) > 1.0f || Math.abs(pos.z) > 1.0f) {
                return null;
            }

            int screenWidth = mc.getWindow().getGuiScaledWidth();
            int screenHeight = mc.getWindow().getGuiScaledHeight();

            float screenX = (pos.x * 0.5f + 0.5f) * screenWidth;
            float screenY = (1.0f - (pos.y * 0.5f + 0.5f)) * screenHeight;

            return new Vector3f(screenX, screenY, pos.z);
        } catch (Exception e) {
            return null;
        }
    }

    private Matrix4f getModelViewMatrix(Minecraft mc) {
        Camera camera = mc.gameRenderer.getMainCamera();
        Vec3 cameraPos = camera.getPosition();

        Matrix4f matrix = new Matrix4f();

        matrix.rotateX((float) Math.toRadians(camera.getXRot()));
        matrix.rotateY((float) Math.toRadians(camera.getYRot() + 180.0f));[ATTACH type="full"]307826[/ATTACH]

        matrix.translate((float) -cameraPos.x, (float) -cameraPos.y, (float) -cameraPos.z);

        return matrix;
    }
}

я уже хз что тут не так
float rectWidth = textWidth + padding * 2;
float rectHeight = textHeight + padding * 2;
зачем умножать?
 
float rectWidth = textWidth + padding * 2;
float rectHeight = textHeight + padding * 2;
зачем умножать?
по приколу, но я убрал не помогло. Думаю дело в матрице но не понимаю в чём, можешь подсказать?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
по приколу, но я убрал не помогло. Думаю дело в матрице но не понимаю в чём, можешь подсказать?
не думаю что проблема в матрице, потому что у тебя height и weight как то криво указан, попробуй на глаз нарисовать под текст ровненько и смотри, если всё нормуль - исправляй w и h
 
не думаю что проблема в матрице, потому что у тебя height и weight как то криво указан, попробуй на глаз нарисовать под текст ровненько и смотри, если всё нормуль - исправляй w и h
Спасибо! Смог починить
 
Назад
Сверху Снизу