Вопрос Неправильный рендер в jump circle

Начинающий
Статус
Оффлайн
Регистрация
1 Ноя 2023
Сообщения
55
Реакции[?]
3
Поинты[?]
1K

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

Кто может помогите сделать правильные рендер и оптимизировать
Код:
package a.impl.function.impl.render;

import a.impl.event.Event;
import a.impl.event.impl.JumpEvent;
import a.impl.event.impl.render.WorldRenderEvent;
import a.impl.function.Function;
import a.impl.function.FunctionInfo;
import a.impl.function.impl.EnumType;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.AllArgsConstructor;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.math.vector.Quaternion;
import net.minecraft.util.math.vector.Vector3f;
import org.lwjgl.glfw.GLFW;
import org.lwjgl.opengl.GL30;

import java.awt.*;
import java.util.Collections;
import java.util.concurrent.CopyOnWriteArrayList;

@FunctionInfo(type = EnumType.RENDER, name = "JumpCircle")
public class JumpCircle extends Function {

    public JumpCircle() {
        setBind(GLFW.GLFW_KEY_G);
    }

    private CopyOnWriteArrayList<circle> circleList = new CopyOnWriteArrayList<>();

    @Override
    public void execute(Event event) {
        assert mc.player != null;

        if (event instanceof JumpEvent) {
            ClientPlayerEntity player = mc.player;
            circleList.add(new circle(new Vector3f((float) player.getPosX(), (float) player.getPosY(), (float) player.getPosZ()), 2));
        }

        if (event instanceof WorldRenderEvent) {
            event.cancel();
            if (circleList.size() == 1) circleList.remove(1);
            circleList.forEach(circle -> render(((WorldRenderEvent) event).matrixStack, ((WorldRenderEvent) event).partialTicks));
        }
    }

    public void render(MatrixStack matrixStack, float partialTicks) {
        Collections.reverse(circleList);
        for (circle circle : circleList) {
            float x = circle.vector3f.getX(),
                  y = circle.vector3f.getY(),
                  z = circle.vector3f.getZ();

            Tessellator tessellator = new Tessellator();
            BufferBuilder buffer = tessellator.getBuffer();

            matrixStack.push();
            matrixStack.translate(x, y, z);
            matrixStack.translate(
                    -mc.getRenderManager().info.getProjectedView().getX(),
                    -mc.getRenderManager().info.getProjectedView().getY(),
                    -mc.getRenderManager().info.getProjectedView().getX()
            );

            RenderSystem.depthMask(false);
            RenderSystem.enableBlend();
            RenderSystem.shadeModel(7425);
            RenderSystem.disableAlphaTest();
            GlStateManager.blendFuncSeparate(770, 1, 0, 1);

            Color color = new Color(0xFF0000);

            mc.getTextureManager().bindTexture(new ResourceLocation("textures/item/apple.png"));
            buffer.begin(GL30.GL_QUADS, DefaultVertexFormats.POSITION_TEX_COLOR);

            Matrix4f matrix4f = matrixStack.getLast().getMatrix();

            buffer.pos(matrix4f, 0, 0, 0).tex(0, 0).color(
                    color.getRed() / 255F,
                    color.getGreen() / 255F,
                    color.getBlue() / 255F,
                    color.getAlpha() / 255F
            ).endVertex();
            buffer.pos(matrix4f, 0, 0, 2).tex(0, 1).color(
                    color.getRed() / 255F,
                    color.getGreen() / 255F,
                    color.getBlue() / 255F,
                    color.getAlpha() / 255F
            ).endVertex();
            buffer.pos(matrix4f, 2, 2, 2).tex(1, 1).color(
                    color.getRed() / 255F,
                    color.getGreen() / 255F,
                    color.getBlue() / 255F,
                    color.getAlpha() / 255F
            ).endVertex();
            buffer.pos(matrix4f, 2, 0, 0).tex(1, 0).color(
                    color.getRed() / 255F,
                    color.getGreen() / 255F,
                    color.getBlue() / 255F,
                    color.getAlpha() / 255F
            ).endVertex();

            tessellator.draw();
            RenderSystem.enableAlphaTest();
            RenderSystem.disableBlend();
            RenderSystem.depthMask(true);
            matrixStack.pop();
        }
        Collections.reverse(circleList);
    }

    @AllArgsConstructor
    public static class circle {

        public Vector3f vector3f;
        public float factor = 0;
    }
}
 
АМБАССАДОР ЩИТПОСТА
Пользователь
Статус
Оффлайн
Регистрация
24 Мар 2022
Сообщения
178
Реакции[?]
42
Поинты[?]
3K
Код:
#include <iostream>
#include <vector>
#include <cmath>

// Предполагаемые заголовочные файлы и определения классов/структур для работы с векторами и матрицами

struct Vector3f {
    float x, y, z;
};

class MatrixStack {
    // Заглушка для класса MatrixStack
public:
    void push() {
        // Реализация push
    }

    void pop() {
        // Реализация pop
    }

    Matrix4f getLast() {
        // Реализация getLast
        return Matrix4f();
    }
};

struct Matrix4f {
    // Заглушка для класса Matrix4f
};

class BufferBuilder {
    // Заглушка для класса BufferBuilder
public:
    void begin(int mode, int format) {
        // Реализация begin
    }

    void endVertex() {
        // Реализация endVertex
    }

    // Другие необходимые методы
};

class Tessellator {
    // Заглушка для класса Tessellator
public:
    BufferBuilder getBuffer() {
        // Реализация getBuffer
        return BufferBuilder();
    }

    void draw() {
        // Реализация draw
    }
};

class RenderSystem {
    // Заглушка для класса RenderSystem
public:
    static void depthMask(bool value) {
        // Реализация depthMask
    }

    static void enableBlend() {
        // Реализация enableBlend
    }

    static void shadeModel(int mode) {
        // Реализация shadeModel
    }

    static void disableAlphaTest() {
        // Реализация disableAlphaTest
    }

    static void blendFuncSeparate(int srcFactorRGB, int dstFactorRGB, int srcFactorAlpha, int dstFactorAlpha) {
        // Реализация blendFuncSeparate
    }

    static void enableAlphaTest() {
        // Реализация enableAlphaTest
    }

    static void disableBlend() {
        // Реализация disableBlend
    }
};

class JumpEvent {
    // Заглушка для класса JumpEvent
};

class WorldRenderEvent {
    // Заглушка для класса WorldRenderEvent
public:
    MatrixStack matrixStack;
    float partialTicks;
};

class Function {
    // Заглушка для класса Function
public:
    virtual void execute(Event event) = 0;

    // Другие необходимые методы и члены данных
};

// Класс JumpCircle
class JumpCircle : public Function {
public:
    JumpCircle() {
        // Реализация конструктора
    }

    void execute(Event* event) override {
        // Реализация execute
    }

    void render(MatrixStack& matrixStack, float partialTicks) {
        // Реализация render
    }

private:
    struct Circle {
        Vector3f vector3f;
        float factor;
    };

    std::vector<Circle> circleList;
};

int main() {
    // Ваш код
    return 0;
}
 
Начинающий
Статус
Оффлайн
Регистрация
1 Ноя 2023
Сообщения
55
Реакции[?]
3
Поинты[?]
1K
Короче правильно рендерить не из WorldRenderer, а из GameRenderer в методе void worldRender, от матрицы matrixStackIn
 
Сверху Снизу