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

Визуальная часть JumpEffect base exp 2.0 1.16.5 mcp

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
22 Июн 2024
Сообщения
49
Реакции
0
Выберите загрузчик игры
  1. Vanilla
ss-
Пожалуйста, авторизуйтесь для просмотра ссылки.


dw-ниже

Java:
Expand Collapse Copy
package babka.module.impl.render;

import babka.control.events.Event;
import babka.control.events.impl.player.EventJump;
import babka.control.events.impl.render.EventRender;
import babka.module.TypeList;
import babka.module.api.Annotation;
import babka.module.api.Module;
import babka.utils.render.ColorUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

@Annotation(name = "JumpEffect", type = TypeList.Render)
public class JumpEffect extends Module {

    private final List<Wave> waves = new ArrayList<>();
    private long lastJumpTime = 0;

    public JumpEffect() {
    }

    @Override
    public boolean onEvent(Event event) {
        if (event instanceof EventJump) {
            long now = System.currentTimeMillis();
            if (now - lastJumpTime < 700) return false;
            lastJumpTime = now;

            if (mc.player == null || mc.world == null) return false;

            if (waves.size() >= 4) {
                waves.remove(0);
            }

            waves.add(new Wave(
                    (float) mc.player.getPosX(),
                    (float) mc.player.getPosY() + 0.05f,
                    (float) mc.player.getPosZ()
            ));
        }
        else if (event instanceof EventRender render && render.isRender3D()) {
            if (waves.isEmpty()) return false;
            renderWaves(render.matrixStack);
        }
        return false;
    }

    private void renderWaves(MatrixStack stack) {
        Iterator<Wave> it = waves.iterator();
        while (it.hasNext()) {
            Wave wave = it.next();
            wave.update();
            if (wave.alpha <= 0.01f) {
                it.remove();
                continue;
            }
            wave.render(stack);
        }
    }

    private class Wave {
        final float centerX, centerY, centerZ;
        float radius = 0.4f;
        float alpha = 1.0f;

        Wave(float x, float y, float z) {
            this.centerX = x;
            this.centerY = y;
            this.centerZ = z;
        }

        void update() {
            float speedMult = waves.size() > 3 ? 1.5f : 1.0f;
            radius += 0.028f * speedMult;
            alpha -= 0.0014f * speedMult;
            if (alpha < 0) alpha = 0;
        }

        void render(MatrixStack stack) {
            double viewX = mc.getRenderManager().info.getProjectedView().x;
            double viewY = mc.getRenderManager().info.getProjectedView().y;
            double viewZ = mc.getRenderManager().info.getProjectedView().z;

            RenderSystem.pushMatrix();
            RenderSystem.translated(-viewX, -viewY, -viewZ);
            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableTexture();
            RenderSystem.disableCull();
            RenderSystem.disableDepthTest();
            RenderSystem.depthMask(false);

            float progress = Math.min(1.0f, radius / 7.5f);
            float fillAlphaBase = alpha * (0.55f - progress * 0.32f);
            float lineAlpha     = alpha * (1.05f - progress * 0.25f);

            float lineWidth = 2.6f;

            int ir = (int) (radius + 3.0f);

            int startColor = ColorUtils.rgba(80, 255, 255, 220);
            int endColor   = ColorUtils.rgba(255, 80, 255, 220);
            for (int dx = -ir; dx <= ir; dx++) {
                for (int dz = -ir; dz <= ir; dz++) {
                    double dist = Math.sqrt(dx * dx + dz * dz);
                    if (dist > radius || dist < radius - 2.2f) continue;

                    for (int dy = -2; dy <= 2; dy++) {
                        BlockPos pos = new BlockPos(
                                MathHelper.floor(centerX) + dx,
                                MathHelper.floor(centerY) + dy,
                                MathHelper.floor(centerZ) + dz
                        );

                        BlockState state = mc.world.getBlockState(pos);
                        if (shouldSkipBlock(state)) continue;

                        AxisAlignedBB bb = new AxisAlignedBB(
                                pos.getX() + 0.002, pos.getY() + 0.002, pos.getZ() + 0.002,
                                pos.getX() + 0.998, pos.getY() + 0.998, pos.getZ() + 0.998
                        );

                        float waveT = (float) (dist / radius);
                        int baseColor = ColorUtils.interpolate(startColor, endColor, waveT);

                        float pulse = (float) Math.sin(dist * 0.45 + radius * 2.0 + dy * 0.9) * 0.3f + 0.7f;

                        float localFillA = fillAlphaBase * pulse;
                        if (dy <= 0) localFillA *= 0.18f;
                        if (dy <= -1) localFillA *= 0.1f;

                        if (localFillA > 0.03f) {
                            RenderSystem.color4f(
                                    ColorUtils.red(baseColor) / 255f,
                                    ColorUtils.green(baseColor) / 255f,
                                    ColorUtils.blue(baseColor) / 255f,
                                    localFillA
                            );
                            drawFilledBox(bb);
                        }

                        RenderSystem.enableDepthTest();
                        RenderSystem.depthMask(true);
                        GL11.glEnable(GL11.GL_LINE_SMOOTH);
                        GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
                        RenderSystem.lineWidth(lineWidth + (dy <= 0 ? 0.4f : 0f));

                        RenderSystem.color4f(
                                ColorUtils.red(baseColor) / 255f,
                                ColorUtils.green(baseColor) / 255f,
                                ColorUtils.blue(baseColor) / 255f,
                                lineAlpha * pulse * (dy <= 0 ? 1.15f : 1.0f)
                        );
                        drawOutlineBox(bb);

                        GL11.glDisable(GL11.GL_LINE_SMOOTH);
                    }
                }
            }

            RenderSystem.enableCull();
            RenderSystem.enableTexture();
            RenderSystem.enableDepthTest();
            RenderSystem.depthMask(true);
            RenderSystem.disableBlend();
            RenderSystem.popMatrix();
        }

        private boolean shouldSkipBlock(BlockState state) {
            if (state.isAir()) return true;
            Material mat = state.getMaterial();

            if (mat == Material.PLANTS || mat == Material.LEAVES || mat == Material.CORAL) {
                return true;
            }

            Block block = state.getBlock();
            return block instanceof FlowerBlock ||
                    block instanceof TallGrassBlock ||
                    block instanceof DeadBushBlock ||
                    block instanceof SugarCaneBlock ||
                    block instanceof CactusBlock ||
                    block instanceof LilyPadBlock ||
                    block instanceof DoublePlantBlock ||
                    block instanceof VineBlock ||
                    block instanceof NetherSproutsBlock ||
                    block instanceof FungusBlock ||
                    block instanceof WeepingVinesBlock ||
                    block instanceof TwistingVinesBlock ||
                    block instanceof KelpBlock;
        }

        private void drawFilledBox(AxisAlignedBB bb) {
            Tessellator tess = Tessellator.getInstance();
            BufferBuilder buf = tess.getBuffer();
            buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();

            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();

            tess.draw();
        }

        private void drawOutlineBox(AxisAlignedBB bb) {
            Tessellator tess = Tessellator.getInstance();
            BufferBuilder buf = tess.getBuffer();
            buf.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION);

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();

            tess.draw();
        }
    }
}
сразу говорю нужно доработать а то есть мелкие баги
 
ss-
Пожалуйста, авторизуйтесь для просмотра ссылки.


dw-ниже

Java:
Expand Collapse Copy
package babka.module.impl.render;

import babka.control.events.Event;
import babka.control.events.impl.player.EventJump;
import babka.control.events.impl.render.EventRender;
import babka.module.TypeList;
import babka.module.api.Annotation;
import babka.module.api.Module;
import babka.utils.render.ColorUtils;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.block.*;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import org.lwjgl.opengl.GL11;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

@Annotation(name = "JumpEffect", type = TypeList.Render)
public class JumpEffect extends Module {

    private final List<Wave> waves = new ArrayList<>();
    private long lastJumpTime = 0;

    public JumpEffect() {
    }

    @Override
    public boolean onEvent(Event event) {
        if (event instanceof EventJump) {
            long now = System.currentTimeMillis();
            if (now - lastJumpTime < 700) return false;
            lastJumpTime = now;

            if (mc.player == null || mc.world == null) return false;

            if (waves.size() >= 4) {
                waves.remove(0);
            }

            waves.add(new Wave(
                    (float) mc.player.getPosX(),
                    (float) mc.player.getPosY() + 0.05f,
                    (float) mc.player.getPosZ()
            ));
        }
        else if (event instanceof EventRender render && render.isRender3D()) {
            if (waves.isEmpty()) return false;
            renderWaves(render.matrixStack);
        }
        return false;
    }

    private void renderWaves(MatrixStack stack) {
        Iterator<Wave> it = waves.iterator();
        while (it.hasNext()) {
            Wave wave = it.next();
            wave.update();
            if (wave.alpha <= 0.01f) {
                it.remove();
                continue;
            }
            wave.render(stack);
        }
    }

    private class Wave {
        final float centerX, centerY, centerZ;
        float radius = 0.4f;
        float alpha = 1.0f;

        Wave(float x, float y, float z) {
            this.centerX = x;
            this.centerY = y;
            this.centerZ = z;
        }

        void update() {
            float speedMult = waves.size() > 3 ? 1.5f : 1.0f;
            radius += 0.028f * speedMult;
            alpha -= 0.0014f * speedMult;
            if (alpha < 0) alpha = 0;
        }

        void render(MatrixStack stack) {
            double viewX = mc.getRenderManager().info.getProjectedView().x;
            double viewY = mc.getRenderManager().info.getProjectedView().y;
            double viewZ = mc.getRenderManager().info.getProjectedView().z;

            RenderSystem.pushMatrix();
            RenderSystem.translated(-viewX, -viewY, -viewZ);
            RenderSystem.enableBlend();
            RenderSystem.defaultBlendFunc();
            RenderSystem.disableTexture();
            RenderSystem.disableCull();
            RenderSystem.disableDepthTest();
            RenderSystem.depthMask(false);

            float progress = Math.min(1.0f, radius / 7.5f);
            float fillAlphaBase = alpha * (0.55f - progress * 0.32f);
            float lineAlpha     = alpha * (1.05f - progress * 0.25f);

            float lineWidth = 2.6f;

            int ir = (int) (radius + 3.0f);

            int startColor = ColorUtils.rgba(80, 255, 255, 220);
            int endColor   = ColorUtils.rgba(255, 80, 255, 220);
            for (int dx = -ir; dx <= ir; dx++) {
                for (int dz = -ir; dz <= ir; dz++) {
                    double dist = Math.sqrt(dx * dx + dz * dz);
                    if (dist > radius || dist < radius - 2.2f) continue;

                    for (int dy = -2; dy <= 2; dy++) {
                        BlockPos pos = new BlockPos(
                                MathHelper.floor(centerX) + dx,
                                MathHelper.floor(centerY) + dy,
                                MathHelper.floor(centerZ) + dz
                        );

                        BlockState state = mc.world.getBlockState(pos);
                        if (shouldSkipBlock(state)) continue;

                        AxisAlignedBB bb = new AxisAlignedBB(
                                pos.getX() + 0.002, pos.getY() + 0.002, pos.getZ() + 0.002,
                                pos.getX() + 0.998, pos.getY() + 0.998, pos.getZ() + 0.998
                        );

                        float waveT = (float) (dist / radius);
                        int baseColor = ColorUtils.interpolate(startColor, endColor, waveT);

                        float pulse = (float) Math.sin(dist * 0.45 + radius * 2.0 + dy * 0.9) * 0.3f + 0.7f;

                        float localFillA = fillAlphaBase * pulse;
                        if (dy <= 0) localFillA *= 0.18f;
                        if (dy <= -1) localFillA *= 0.1f;

                        if (localFillA > 0.03f) {
                            RenderSystem.color4f(
                                    ColorUtils.red(baseColor) / 255f,
                                    ColorUtils.green(baseColor) / 255f,
                                    ColorUtils.blue(baseColor) / 255f,
                                    localFillA
                            );
                            drawFilledBox(bb);
                        }

                        RenderSystem.enableDepthTest();
                        RenderSystem.depthMask(true);
                        GL11.glEnable(GL11.GL_LINE_SMOOTH);
                        GL11.glHint(GL11.GL_LINE_SMOOTH_HINT, GL11.GL_NICEST);
                        RenderSystem.lineWidth(lineWidth + (dy <= 0 ? 0.4f : 0f));

                        RenderSystem.color4f(
                                ColorUtils.red(baseColor) / 255f,
                                ColorUtils.green(baseColor) / 255f,
                                ColorUtils.blue(baseColor) / 255f,
                                lineAlpha * pulse * (dy <= 0 ? 1.15f : 1.0f)
                        );
                        drawOutlineBox(bb);

                        GL11.glDisable(GL11.GL_LINE_SMOOTH);
                    }
                }
            }

            RenderSystem.enableCull();
            RenderSystem.enableTexture();
            RenderSystem.enableDepthTest();
            RenderSystem.depthMask(true);
            RenderSystem.disableBlend();
            RenderSystem.popMatrix();
        }

        private boolean shouldSkipBlock(BlockState state) {
            if (state.isAir()) return true;
            Material mat = state.getMaterial();

            if (mat == Material.PLANTS || mat == Material.LEAVES || mat == Material.CORAL) {
                return true;
            }

            Block block = state.getBlock();
            return block instanceof FlowerBlock ||
                    block instanceof TallGrassBlock ||
                    block instanceof DeadBushBlock ||
                    block instanceof SugarCaneBlock ||
                    block instanceof CactusBlock ||
                    block instanceof LilyPadBlock ||
                    block instanceof DoublePlantBlock ||
                    block instanceof VineBlock ||
                    block instanceof NetherSproutsBlock ||
                    block instanceof FungusBlock ||
                    block instanceof WeepingVinesBlock ||
                    block instanceof TwistingVinesBlock ||
                    block instanceof KelpBlock;
        }

        private void drawFilledBox(AxisAlignedBB bb) {
            Tessellator tess = Tessellator.getInstance();
            BufferBuilder buf = tess.getBuffer();
            buf.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION);

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();

            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();

            tess.draw();
        }

        private void drawOutlineBox(AxisAlignedBB bb) {
            Tessellator tess = Tessellator.getInstance();
            BufferBuilder buf = tess.getBuffer();
            buf.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION);

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.minY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();

            buf.pos(bb.minX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.minZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.minZ).endVertex();
            buf.pos(bb.maxX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.maxX, bb.maxY, bb.maxZ).endVertex();
            buf.pos(bb.minX, bb.minY, bb.maxZ).endVertex(); buf.pos(bb.minX, bb.maxY, bb.maxZ).endVertex();

            tess.draw();
        }
    }
}
сразу говорю нужно доработать а то есть мелкие баги
да вы заебали хуйню постить
 

Похожие темы

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