Визуальная часть Призраки на Excellent Recode

Скрытое содержимое
ну это, пожалуйста, я тоже взял за базу драг, а времени на перенос 0, есп 11/10

Пожалуйста, зарегистрируйтесь или авторизуйтесь, чтобы увидеть содержимое.


package fun.waileent.modules.impl.render;

import fun.waileent.Waileent;
import fun.waileent.api.events.impl.EventRender2D;
import fun.waileent.modules.api.Category;
import fun.waileent.modules.api.Module;
import fun.waileent.modules.impl.combat.Aura;
import fun.waileent.modules.settings.impl.NumberSetting;
import fun.waileent.utils.animations.Animation;
import fun.waileent.utils.animations.Easing;
import fun.waileent.utils.render.ColorUtils;
import fun.waileent.utils.render.Render2D;
import fun.waileent.utils.world.WorldUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.client.render.GameRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import com.mojang.blaze3d.systems.RenderSystem;

import java.awt.*;

public class TargetEsp extends Module {

private final NumberSetting size = new NumberSetting("Size", 15f, 10f, 25f, 1f);

public TargetEsp() {
super("TargetEsp", Category.Render);
}

private final Animation markerAnimation = new Animation(300, 1f, true, Easing.BOTH_SINE);
private LivingEntity lastTarget = null;

private static final Identifier BLOOM_TEXTURE = Waileent.id("hud/bloom.png");

@EventHandler
public void onRender2D(EventRender2D e) {
if (fullNullCheck()) return;
Aura aura = Waileent.getInstance().getModuleManager().getModule(Aura.class);

if (aura.getTarget() != null) lastTarget = aura.getTarget();
markerAnimation.update(aura.getTarget() != null);

if (markerAnimation.getValue() > 0 && lastTarget != null) {
if (lastTarget.isRemoved() || !lastTarget.isAlive()) {
lastTarget = null;
return;
}
drawGhosts(e.getContext().getMatrices(), lastTarget);
}
}

private void drawGhosts(MatrixStack matrix, LivingEntity target) {
matrix.push();
float alphaPC = markerAnimation.getValue();
if (alphaPC == 0.0F || target == null) {
matrix.pop();
return;
}

Vec3d vec = target.getLerpedPos(mc.getRenderTickCounter().getTickDelta(true));
double baseX = vec.x;
double baseY = vec.y + target.getHeight() / 2f;
double baseZ = vec.z;

final double radius = 0.55f;
final float speed = 30f;
final double distanceStep = 1.5;
final int trailLength = 200; // уменьшил длину для оптимизации

long time = System.currentTimeMillis();
float hurtPC = (float) Math.sin(target.hurtTime * (1F * Math.PI / 25F));
Vec3d cameraPos = mc.gameRenderer.getCamera().getPos();

RenderSystem.getShader();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.disableDepthTest();
RenderSystem.depthMask(false);
RenderSystem.setShaderTexture(0, BLOOM_TEXTURE);

for (int i = 0; i < trailLength; i++) {
double angle = 0.1f * (time - i * distanceStep) / speed;
double s = Math.sin(angle) * radius;
double c = Math.cos(angle) * radius;

double[][] points = new double[][]{
{baseX + s, baseY + c, baseZ - c},
{baseX - s, baseY + s, baseZ - c},
{baseX - s, baseY - s, baseZ + c}
};

float progress = (float) i / trailLength;
float sizeFactor = (float) Math.pow(1.0f - progress, 1.1F);

for (double[] pos : points) {
Vec3d particlePos = new Vec3d(pos[0], pos[1], pos[2]);
Vec3d screenPos = WorldUtils.getPosition(particlePos);
if (!(screenPos.z > 0) || !(screenPos.z < 1)) continue;

double distance = cameraPos.distanceTo(particlePos);
float distanceScale = (float) (85.0f / Math.max(0.1, distance));
float finalSize = distanceScale * sizeFactor;

float alphaTrail = alphaPC * (1f - progress * progress) * 0.4f;
Color baseColor = ColorUtils.multAlpha(new Color(255, 255, 255), alphaTrail);
Color red = ColorUtils.multAlpha(new Color(255, 0, 0), alphaTrail);
Color finalColor = ColorUtils.overColor(baseColor, red, hurtPC);

float rotation = (float) (time / 5.0 + i * 5) % 180;

matrix.push();
matrix.translate(screenPos.x, screenPos.y, 0);
matrix.multiply(RotationAxis.POSITIVE_Z.rotationDegrees(rotation));
Render2D.drawTexture(matrix,
-finalSize / 2f, -finalSize / 2f,
finalSize, finalSize, 0f,
BLOOM_TEXTURE, finalColor);
matrix.pop();
}
}

RenderSystem.enableDepthTest();
RenderSystem.disableBlend();
RenderSystem.depthMask(true);
matrix.pop();
}
}
вот тебе призраки
 
Назад
Сверху Снизу