Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос TargetESP 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
26 Авг 2025
Сообщения
54
Реакции
0
В общем пишу(ищу по инету) таргет есп всякие режимчики воот, и в общем хочу сделать призраки с их логикой движения, но визуалом режима души

Код:
Expand Collapse Copy
package alpha.rat.functions.impl.render;

import alpha.rat.events.WorldEvent;
import alpha.rat.functions.settings.impl.ModeSetting;
import alpha.rat.functions.settings.impl.SliderSetting;
import alpha.rat.functions.settings.impl.BooleanSetting;
import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import alpha.rat.events.EventDisplay;
import alpha.rat.functions.api.Category;
import alpha.rat.functions.api.Function;
import alpha.rat.functions.api.FunctionRegister;
import alpha.rat.functions.impl.combat.Aura;
import alpha.rat.utils.math.Vector4i;
import alpha.rat.utils.math.MathUtil;
import alpha.rat.utils.projections.ProjectionUtil;
import alpha.rat.utils.render.ColorUtils;
import alpha.rat.utils.render.DisplayUtils;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector2f;
import net.minecraft.util.math.vector.Vector3d;

@FunctionRegister(name = "TargetESP", type = Category.Render)
public class TargetESP extends Function {

    private final Aura aura;
    private final ModeSetting type = new ModeSetting("Тип", "Ромб", "Ромб", "Кольцо", "Призраки", "Души");

    // Настройки для режима "Души"
    private final SliderSetting soulSpeed = new SliderSetting("Скорость", 40f, 30f, 80f, 5f);
    private final SliderSetting soulSize = new SliderSetting("Размер", 0.3f, 0.1f, 0.5f, 0.05f);
    private final SliderSetting soulDistance = new SliderSetting("Дистанция", 0.6f, 0.3f, 0.8f, 0.05f);
    private final SliderSetting soulCount = new SliderSetting("Количество", 9f, 5f, 20f, 1f);
    private final SliderSetting soulAlpha = new SliderSetting("Прозрачность", 6f, 0f, 20f, 1f);

    public TargetESP(Aura aura) {
        this.aura = aura;

        // Добавляем настройки с условием видимости
        addSettings(
                type,
                soulSpeed.setVisible(() -> type.is("Души")),
                soulSize.setVisible(() -> type.is("Души")),
                soulDistance.setVisible(() -> type.is("Души")),
                soulCount.setVisible(() -> type.is("Души")),
                soulAlpha.setVisible(() -> type.is("Души"))
        );
    }

    @Subscribe
    private void onDisplay(EventDisplay e) {
        if (e.getType() != EventDisplay.Type.PRE) {
            return;
        }
        if (aura.isState() && aura.getTarget() != null) {
            if (type.is("Не отображать")) return;
            if (type.is("Ромб")) {
                double sin = Math.sin(System.currentTimeMillis() / 1000.0);
                final float size = 150.0F;
                Vector3d interpolated = aura.getTarget().getPositon(e.getPartialTicks());
                Vector2f pos = ProjectionUtil.project(interpolated.x, interpolated.y + aura.getTarget().getHeight() / 2f, interpolated.z);
                GlStateManager.pushMatrix();
                GlStateManager.translatef(pos.x, pos.y, 0);
                GlStateManager.rotatef((float) sin * 360, 0, 0, 1);
                GlStateManager.translatef(-pos.x, -pos.y, 0);
                DisplayUtils.drawImage(new ResourceLocation("expensive/images/target.png"), pos.x - size / 2f, pos.y - size / 2f, size, size, new Vector4i(
                        ColorUtils.setAlpha(HUD.getColor(0, 1), 220),
                        ColorUtils.setAlpha(HUD.getColor(90, 1), 220),
                        ColorUtils.setAlpha(HUD.getColor(180, 1), 220),
                        ColorUtils.setAlpha(HUD.getColor(270, 1), 220)
                ));
                GlStateManager.popMatrix();
            }
        }
    }

    @Subscribe
    private void onWorld(WorldEvent e) {
        if (!aura.isState() || aura.getTarget() == null) return;
        if (type.is("Кольцо")) {
            Vector3d t = MathUtil.interpolate(aura.getTarget().getPositionVec(), new Vector3d(aura.getTarget().lastTickPosX, aura.getTarget().lastTickPosY, aura.getTarget().lastTickPosZ), e.getPartialTicks());
            float height = aura.getTarget().getHeight();
            double duration = 2000.0;
            double elapsed = (double) System.currentTimeMillis() % duration;
            boolean side = elapsed > duration / 2.0;
            double progress = elapsed / (duration / 2.0);
            progress = side ? --progress : 1.0 - progress;
            progress = progress < 0.5 ? 2.0 * progress * progress : 1.0 - Math.pow(-2.0 * progress + 2.0, 2.0) / 2.0;
            double eased = (double) (height / 2.0F) * (progress > 0.5 ? 1.0 - progress : progress) * (double) (side ? -1 : 1);

            RenderSystem.pushMatrix();
            GlStateManager.depthMask(false);
            GlStateManager.enableBlend();
            GlStateManager.disableAlphaTest();
            GlStateManager.disableCull();
            GlStateManager.shadeModel(7425);
            GlStateManager.disableTexture();
            GlStateManager.translated(-mc.getRenderManager().info.getProjectedView().x, -mc.getRenderManager().info.getProjectedView().y, -mc.getRenderManager().info.getProjectedView().z);

            float glowAlpha = 145F;
            float coreAlpha = 17.1F;
            int hudColor = HUD.getColor(0);
            int cr = (hudColor >> 16) & 0xFF;
            int cg = (hudColor >> 8) & 0xFF;
            int cb = (hudColor) & 0xFF;
            buffer.begin(8, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            for (int i = 0; i <= 360; ++i) {
                double rx = Math.cos(Math.toRadians(i)) * (double) aura.getTarget().getWidth() * 0.85;
                double rz = Math.sin(Math.toRadians(i)) * (double) aura.getTarget().getWidth() * 0.85;
                buffer.pos(t.x + rx, t.y + (double) height * progress, t.z + rz).color(cr, cg, cb, (int) glowAlpha).endVertex();
                buffer.pos(t.x + rx, t.y + (double) height * progress + eased * 1.5, t.z + rz).color(cr, cg, cb, (int) coreAlpha).endVertex();
            }
            tessellator.draw();

            buffer.begin(2, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR);
            for (int i = 0; i <= 360; ++i) {
                double rx = Math.cos(Math.toRadians(i)) * (double) aura.getTarget().getWidth() * 0.85;
                double rz = Math.sin(Math.toRadians(i)) * (double) aura.getTarget().getWidth() * 0.85;
                buffer.pos(t.x + rx, t.y + (double) height * progress, t.z + rz).color(cr, cg, cb, (int) coreAlpha).endVertex();
            }
            tessellator.draw();

            GlStateManager.enableCull();
            GlStateManager.disableBlend();
            GlStateManager.enableTexture();
            GlStateManager.enableAlphaTest();
            GlStateManager.depthMask(true);
            RenderSystem.popMatrix();
        }
        if (type.is("Призраки")) {
            com.mojang.blaze3d.matrix.MatrixStack ms = new com.mojang.blaze3d.matrix.MatrixStack();
            RenderSystem.pushMatrix();
            GlStateManager.disableLighting();
            GlStateManager.depthMask(false);
            GlStateManager.enableBlend();
            GlStateManager.shadeModel(7425);
            GlStateManager.disableCull();
            GlStateManager.disableAlphaTest();
            GlStateManager.blendFuncSeparate(770, 1, 0, 1);

            double radius = 0.6f;
            float speed = 27;
            float size = 0.32f;
            double distance = 15;
            int length = 25;
            int maxAlpha = 255;
            int alphaFactor = 15;

            ms.translate(-mc.getRenderManager().info.getProjectedView().getX(),
                    -mc.getRenderManager().info.getProjectedView().getY(),
                    -mc.getRenderManager().info.getProjectedView().getZ());

            Vector3d interpolated = MathUtil.interpolate(aura.getTarget().getPositionVec(), new Vector3d(aura.getTarget().lastTickPosX, aura.getTarget().lastTickPosY, aura.getTarget().lastTickPosZ), e.getPartialTicks());
            interpolated = new Vector3d(interpolated.x, interpolated.y + 0.8f, interpolated.z);
            ms.translate(interpolated.x + 0.2f, interpolated.y + 0.5f, interpolated.z);
            mc.getTextureManager().bindTexture(new ResourceLocation("expensive/images/glow.png"));

            net.minecraft.client.renderer.ActiveRenderInfo camera = mc.getRenderManager().info;
            for (int pass = 0; pass < 3; pass++) {
                for (int i = 0; i < length; i++) {
                    com.mojang.blaze3d.matrix.MatrixStack.Entry entry;
                    net.minecraft.util.math.vector.Quaternion r = camera.getRotation().copy();
                    buffer.begin(com.mojang.blaze3d.platform.GlStateManager.GL_QUADS, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR_TEX);
                    double angle = 0.15f * (System.currentTimeMillis() - (i * distance)) / (speed);
                    double s = Math.sin(angle) * radius;
                    double c = Math.cos(angle) * radius;

                    if (pass == 0) ms.translate(s, c, -c);
                    if (pass == 1) ms.translate(-s, s, -c);
                    if (pass == 2) ms.translate(-s, -s, c);

                    ms.translate(-size / 2f, -size / 2f, 0);
                    ms.rotate(r);
                    ms.translate(size / 2f, size / 2f, 0);
                    int color = ColorUtils.getColor(i);
                    int alpha = MathHelper.clamp(maxAlpha - (i * alphaFactor), 0, maxAlpha);
                    entry = ms.getLast();
                    buffer.pos(entry.getMatrix(), 0, -size, 0).color(ColorUtils.setAlpha(color, alpha)).tex(0, 0).endVertex();
                    buffer.pos(entry.getMatrix(), -size, -size, 0).color(ColorUtils.setAlpha(color, alpha)).tex(0, 1).endVertex();
                    buffer.pos(entry.getMatrix(), -size, 0, 0).color(ColorUtils.setAlpha(color, alpha)).tex(1, 1).endVertex();
                    buffer.pos(entry.getMatrix(), 0, 0, 0).color(ColorUtils.setAlpha(color, alpha)).tex(1, 0).endVertex();
                    tessellator.draw();
                    ms.translate(-size / 2f, -size / 2f, 0);
                    r.conjugate();
                    ms.rotate(r);
                    ms.translate(size / 2f, size / 2f, 0);
                    if (pass == 0) ms.translate(-s, -c, c);
                    if (pass == 1) ms.translate(s, -s, c);
                    if (pass == 2) ms.translate(s, s, -c);
                }
            }

            RenderSystem.defaultBlendFunc();
            GlStateManager.disableBlend();
            GlStateManager.enableCull();
            GlStateManager.enableAlphaTest();
            GlStateManager.depthMask(true);
            RenderSystem.popMatrix();
        }
        if (type.is("Души")) {
            com.mojang.blaze3d.matrix.MatrixStack ms = new com.mojang.blaze3d.matrix.MatrixStack();
            RenderSystem.pushMatrix();
            GlStateManager.disableLighting();
            GlStateManager.depthMask(false);
            GlStateManager.enableBlend();
            GlStateManager.shadeModel(7425);
            GlStateManager.disableCull();
            GlStateManager.disableAlphaTest();
            GlStateManager.blendFuncSeparate(770, 1, 0, 1);

            // Исправлено: правильное приведение типов
            float speed = soulSpeed.get();
            float size = soulSize.get();
            float distance = soulDistance.get();
            int length = (int) soulCount.get().floatValue();
            int alphaFactor = (int) soulAlpha.get().floatValue();

            ms.translate(-mc.getRenderManager().info.getProjectedView().getX(),
                    -mc.getRenderManager().info.getProjectedView().getY(),
                    -mc.getRenderManager().info.getProjectedView().getZ());

            Vector3d interpolated = MathUtil.interpolate(aura.getTarget().getPositionVec(), new Vector3d(aura.getTarget().lastTickPosX, aura.getTarget().lastTickPosY, aura.getTarget().lastTickPosZ), e.getPartialTicks());

            // ИСПРАВЛЕНО: Души теперь отрисовываются ниже, ближе к ногам цели
            float yOffset = aura.getTarget().getHeight() * 0.35f; // 35ф% от высоты (ниже центра)

            ms.translate(interpolated.x, interpolated.y + yOffset, interpolated.z);
            mc.getTextureManager().bindTexture(new ResourceLocation("expensive/images/glow.png"));

            net.minecraft.client.renderer.ActiveRenderInfo camera = mc.getRenderManager().info;

            // Плавная непрерывная анимация
            long currentTime = System.currentTimeMillis();
            float animationTime = (currentTime % 10000) / 1000.0f;
            animationTime = animationTime * (speed / 40.0f);

            for (int layer = 0; layer < 9; layer += 3) {
                for (int i = 0; i < length; i++) {
                    com.mojang.blaze3d.matrix.MatrixStack.Entry entry;
                    net.minecraft.util.math.vector.Quaternion r = camera.getRotation().copy();
                    buffer.begin(com.mojang.blaze3d.platform.GlStateManager.GL_QUADS, net.minecraft.client.renderer.vertex.DefaultVertexFormats.POSITION_COLOR_TEX);

                    float angleOffset = i * 0.1f + (float) Math.pow(layer, 2.0);
                    float x = (distance * 0.8f * MathHelper.sin(animationTime + angleOffset));
                    float y = (distance * 0.3f * MathHelper.sin(animationTime + i * 0.2f)) + (0.2f * layer);
                    float z = (distance * 0.8f * MathHelper.cos(animationTime + i * 0.1f - (float) Math.pow(layer, 2.0)));

                    ms.translate(x, y, z);
                    ms.translate(-size / 2f, -size / 2f, 0);
                    ms.rotate(r);
                    ms.translate(size / 2f, size / 2f, 0);

                    int baseColor = HUD.getColor(0);
                    int rColor = (baseColor >> 16) & 0xFF;
                    int gColor = (baseColor >> 8) & 0xFF;
                    int bColor = baseColor & 0xFF;

                    int alpha = MathHelper.clamp(255 - (i * alphaFactor), 0, 255);

                    entry = ms.getLast();
                    buffer.pos(entry.getMatrix(), 0, -size, 0).color(rColor, gColor, bColor, alpha).tex(0, 0).endVertex();
                    buffer.pos(entry.getMatrix(), -size, -size, 0).color(rColor, gColor, bColor, alpha).tex(0, 1).endVertex();
                    buffer.pos(entry.getMatrix(), -size, 0, 0).color(rColor, gColor, bColor, alpha).tex(1, 1).endVertex();
                    buffer.pos(entry.getMatrix(), 0, 0, 0).color(rColor, gColor, bColor, alpha).tex(1, 0).endVertex();
                    tessellator.draw();

                    ms.translate(-size / 2f, -size / 2f, 0);
                    r.conjugate();
                    ms.rotate(r);
                    ms.translate(size / 2f, size / 2f, 0);
                    ms.translate(-x, -y, -z);
                }
            }

            RenderSystem.defaultBlendFunc();
            GlStateManager.disableBlend();
            GlStateManager.enableCull();
            GlStateManager.enableAlphaTest();
            GlStateManager.depthMask(true);
            RenderSystem.popMatrix();
        }
    }
}
 
жди
1770806109708.png

=
 
Назад
Сверху Снизу