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

Исходник Летающие призраки

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
20 Окт 2025
Сообщения
68
Реакции
0
Выберите загрузчик игры
  1. Fabric
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
 
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
задумка прикольная
 
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
дарова, что у тебя с читом что код сливаешь?
 
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
ну очень крута
 
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
дерьмо
 
ну в общем обычные призраки с физикой которые следуют за тобой
Пожалуйста, авторизуйтесь для просмотра ссылки.
пнгшку сами возьмете самый дефолтный glow



код:
Expand Collapse Copy
package eu.aesthetic.client.features.modules.render;

import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.*;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import eu.aesthetic.core.system.backend.ClientInfo;
import net.minecraft.util.math.RotationAxis;
import net.minecraft.util.math.Vec3d;
import org.joml.Matrix4f;
import eu.aesthetic.core.event.EventListener;
import eu.aesthetic.core.event.Listener;
import eu.aesthetic.core.event.events.render.Render3DEvent;
import eu.aesthetic.core.module.Category;
import eu.aesthetic.core.module.Module;
import eu.aesthetic.core.module.ModuleRegister;
import eu.aesthetic.core.utils.color.UIColors;

import java.awt.*;
import java.util.ArrayList;
import java.util.List;

@ModuleRegister(name = "Ghost", category = Category.RENDER)
public class GhostModule extends Module {
    @Getter private static final GhostModule instance = new GhostModule();

    private static final Identifier GLOW = Identifier.of(ClientInfo.MOD_ID, "images/particles/glow.png");

    private final float[] SCALE_CACHE = new float[101];
    private final Vec3d[] ghostPos = new Vec3d[3];
    private final Vec3d[] ghostVel = new Vec3d[3];
    private final List<Vec3d>[] trails = new ArrayList[3];
    private long lastUpdate = 0;

    public GhostModule() {
        for (int i = 0; i <= 100; i++) SCALE_CACHE[i] = Math.max(0.28f * (i / 100f), 0.15f);
        for (int i = 0; i < 3; i++) {
            trails[i] = new ArrayList<>();
        }
    }

    @Override
    public void onEvent() {
        EventListener render3DEvent = Render3DEvent.getInstance().subscribe(new Listener<>(event -> {
            renderGhosts(event);
        }));

        addEvents(render3DEvent);
    }

    @Override
    public void onEnable() {
        lastUpdate = System.currentTimeMillis();
        for (int i = 0; i < 3; i++) {
            ghostPos[i] = null;
            ghostVel[i] = Vec3d.ZERO;
            trails[i].clear();
        }
        super.onEnable();
    }

    private void renderGhosts(Render3DEvent.Render3DEventData event) {
        if (mc.player == null || mc.world == null) return;

        PlayerEntity player = mc.player;
        float delta = event.partialTicks();
        MatrixStack eventMatrices = event.matrixStack();
        Camera camera = mc.gameRenderer.getCamera();

        long now = System.currentTimeMillis();
        if (lastUpdate == 0) lastUpdate = now;
        float dt = (now - lastUpdate) / 1000f;
        lastUpdate = now;

        if (dt > 0.1f) dt = 0.1f;
        if (dt <= 0) dt = 0.001f;

        double x = interpolate(player.prevX, player.getX(), delta);
        double y = interpolate(player.prevY, player.getY(), delta);
        double z = interpolate(player.prevZ, player.getZ(), delta);
        Vec3d playerPos = new Vec3d(x, y, z);

        float age = player.age + delta;
        int trailLength = 25;
        int factor = 4;

        RenderSystem.enableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE);
        RenderSystem.setShaderTexture(0, GLOW);
        RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);

        RenderSystem.enableDepthTest();
        RenderSystem.depthMask(false);

        BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
        float pitch = camera.getPitch();
        float yaw = camera.getYaw();

        double time = (now % 100000L) / 1000.0;

        for (int j = 0; j < 3; j++) {
            double radians = Math.toRadians(((age) * factor + j * 120) % (factor * 360));
            float baseR = player.getWidth() * 1.15f;
            float dynR = baseR * (0.95f + 0.12f * (float) Math.sin(time * 0.8 + j));

            double tx = Math.cos(radians) * dynR;
            double tz = Math.sin(radians) * dynR;
            double ty = 0.15 + 0.12 * Math.sin(time * 2.5 + j);
            Vec3d targetWorldPos = playerPos.add(tx, ty, tz);

            if (ghostPos[j] == null || ghostPos[j].distanceTo(targetWorldPos) > 15) {
                ghostPos[j] = targetWorldPos;
                ghostVel[j] = Vec3d.ZERO;
            }

            Vec3d diff = targetWorldPos.subtract(ghostPos[j]);
            double spring = 15.0;
            double damping = 0.85;

            ghostVel[j] = ghostVel[j].add(diff.multiply(spring * dt)).multiply(Math.pow(damping, dt * 60));
            ghostPos[j] = ghostPos[j].add(ghostVel[j].multiply(dt * 60));

            if (trails[j].isEmpty() || trails[j].get(0).distanceTo(ghostPos[j]) > 0.015) {
                trails[j].add(0, ghostPos[j]);
                while (trails[j].size() > trailLength) {
                    trails[j].remove(trails[j].size() - 1);
                }
            }

            Color baseColor = (j == 0) ? UIColors.primary() :
                    (j == 1) ? UIColors.secondary() :
                            blendColors(UIColors.primary(), UIColors.secondary(), 0.5f);

            Color brightness = blendColors(baseColor, Color.WHITE, 0.4f);

            for (int i = 0; i < trails[j].size(); i++) {
                Vec3d p = trails[j].get(i);
                float offset = 1.0f - (float) i / trailLength;

                eventMatrices.push();
                eventMatrices.translate(p.x - camera.getPos().x, p.y - camera.getPos().y, p.z - camera.getPos().z);

                eventMatrices.multiply(RotationAxis.POSITIVE_Y.rotationDegrees(-yaw));
                eventMatrices.multiply(RotationAxis.POSITIVE_X.rotationDegrees(pitch));

                Matrix4f matrix = eventMatrices.peek().getPositionMatrix();

                float opacity = (float) Math.pow(offset, 1.5) * 0.85f;
                int alpha = (int) (opacity * 255);
                int color = (alpha << 24) | (brightness.getRed() << 16) | (brightness.getGreen() << 8) | brightness.getBlue();
                float scale = SCALE_CACHE[Math.min((int) (offset * 100), 100)] * 0.65f;

                buffer.vertex(matrix, -scale, scale, 0).texture(0f, 1f).color(color);
                buffer.vertex(matrix, scale, scale, 0).texture(1f, 1f).color(color);
                buffer.vertex(matrix, scale, -scale, 0).texture(1f, 0).color(color);
                buffer.vertex(matrix, -scale, -scale, 0).texture(0f, 0).color(color);

                eventMatrices.pop();
            }
        }

        try {
            BufferRenderer.drawWithGlobalProgram(buffer.end());
        } catch (Exception ignored) {}

        RenderSystem.depthMask(true);
        RenderSystem.disableBlend();
        RenderSystem.blendFunc(GlStateManager.SrcFactor.SRC_ALPHA, GlStateManager.DstFactor.ONE_MINUS_SRC_ALPHA);
    }

    private double interpolate(double prev, double current, float delta) {
        return prev + (current - prev) * delta;
    }

    private Color blendColors(Color c1, Color c2, float ratio) {
        int r = (int) (c1.getRed() * (1 - ratio) + c2.getRed() * ratio);
        int g = (int) (c1.getGreen() * (1 - ratio) + c2.getGreen() * ratio);
        int b = (int) (c1.getBlue() * (1 - ratio) + c2.getBlue() * ratio);
        int a = (int) (c1.getAlpha() * (1 - ratio) + c2.getAlpha() * ratio);
        return new Color(r, g, b, a);
    }
}
летающие калловые массы
 
Назад
Сверху Снизу