Скрытое содержимое
ну это, пожалуйста, я тоже взял за базу драг, а времени на перенос 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();
}
}
вот тебе призраки