Вопрос 1.21.5 фэбрик рендер через стены

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
3 Сен 2023
Сообщения
332
Реакции
5

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

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

Спасибо!

ребята хочу простую подсветку диа сделать для себя но незнаю какк отключить глубину шоб у меня через стенки рендер был вот код если он необходим
Java:
Expand Collapse Copy
package fun.rebuild;

import fun.rebuild.gui.Interface;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderContext;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.util.InputUtil;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.Text;
import net.minecraft.util.Hand;
import net.minecraft.util.hit.BlockHitResult;
import net.minecraft.util.hit.HitResult;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.ColorHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import net.minecraft.block.BlockState;
import net.minecraft.block.CocoaBlock;
import org.joml.Matrix3f;
import org.joml.Matrix4f;
import org.joml.Vector3f;
import org.lwjgl.glfw.GLFW;
import java.util.ArrayList;
import java.util.List;

public class SodiumRebuildClient implements ClientModInitializer {

    private Interface iinterface;
    private static KeyBinding openGuiKey;
    private final List<BlockPos> diamondOrePositions = new ArrayList<>();
    private boolean renderO = false;

    @Override
    public void onInitializeClient() {
        iinterface = new Interface();

        openGuiKey = KeyBindingHelper.registerKeyBinding(new KeyBinding(
                "Переключить статус",
                InputUtil.Type.KEYSYM,
                GLFW.GLFW_KEY_RIGHT_CONTROL,
                "SodiumRebuild"
        ));

        ClientTickEvents.END_CLIENT_TICK.register(client -> {
            if (openGuiKey.wasPressed()) {
                renderO = !renderO;
                if (renderO) {
                    scanForDiamondOres();
                }
            }

            if (renderO && client.world != null) {
                    scanForDiamondOres();
            }
        });

        WorldRenderEvents.AFTER_TRANSLUCENT.register((context) -> {
            if (renderO) {
                renderDia(context);
            }
        });
    }

    private void scanForDiamondOres() {
        diamondOrePositions.clear();
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.player == null || client.world == null) return;

        int r = 15;

        for (int x = -r; x <= r; x++) {
            for (int y = -r; y <= r; y++) {
                for (int z = -r; z <= r; z++) {
                    BlockPos pos = client.player.getBlockPos().add(x, y, z);
                    BlockState state = client.world.getBlockState(pos);
                    if (state.getBlock() == Blocks.DIAMOND_ORE) {
                        diamondOrePositions.add(pos);
                    }
                }
            }
        }
    }

    private void renderDia(WorldRenderContext context) {
        MinecraftClient client = MinecraftClient.getInstance();
        if (client.player == null || diamondOrePositions.isEmpty()) return;

        Vec3d cameraPos = context.camera().getPos();
        MatrixStack matrices = context.matrixStack();

        float r = 0.0f;
        float gr = 0.5f;
        float b= 1.0f;
        float a = 0.8f;
        int color = ColorHelper.getArgb((int)(a * 255), (int)(r * 255), (int)(gr * 255), (int)(b * 255));

        matrices.push();
        matrices.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);

        VertexConsumer vertexConsumer = context.consumers().getBuffer(RenderLayer.getLines());
        MatrixStack.Entry matrixEntry = matrices.peek();
        Matrix4f positionMatrix = matrixEntry.getPositionMatrix();
        MatrixStack.Entry normalMatrix = matrixEntry;

        for (BlockPos pos : diamondOrePositions) {
            Box box = new Box(pos);
            renderbox(vertexConsumer, positionMatrix, normalMatrix, box, color);
        }

        matrices.pop();
    }

    private void renderbox(VertexConsumer vertexConsumer, Matrix4f positionMatrix, MatrixStack.Entry normalMatrix, Box box, int color) {
        Vector3f normal = new Vector3f(0, 1, 0);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.minZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.maxX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);

        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.minY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
        vertexConsumer.vertex(positionMatrix, (float)box.minX, (float)box.maxY, (float)box.maxZ).color(color).normal(normalMatrix, normal.x, normal.y, normal.z);
    }
}
 
private void renderDia(WorldRenderContext context) { MinecraftClient client = MinecraftClient.getInstance(); if (client.player == null || diamondOrePositions.isEmpty()) return; Vec3d cameraPos = context.camera().getPos(); MatrixStack matrices = context.matrixStack(); float r = 0.0f; float gr = 0.5f; float b= 1.0f; float a = 0.8f; int color = ColorHelper.getArgb((int)(a * 255), (int)(r * 255), (int)(gr * 255), (int)(b * 255)); matrices.push(); matrices.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z); VertexConsumer vertexConsumer = context.consumers().getBuffer(RenderLayer.getLines()); MatrixStack.Entry matrixEntry = matrices.peek(); Matrix4f positionMatrix = matrixEntry.getPositionMatrix(); MatrixStack.Entry normalMatrix = matrixEntry; for (BlockPos pos : diamondOrePositions) { Box box = new Box(pos); renderbox(vertexConsumer, positionMatrix, normalMatrix, box, color); } matrices.pop(); }

Java:
Expand Collapse Copy
private void renderDia(WorldRenderContext context) {
    MinecraftClient client = MinecraftClient.getInstance();
    if (client.player == null || diamondOrePositions.isEmpty()) return;

    Vec3d cameraPos = context.camera().getPos();
    MatrixStack matrices = context.matrixStack();

    float r = 0.0f;
    float gr = 0.5f;
    float b = 1.0f;
    float a = 0.8f;
    int color = ColorHelper.getArgb((int)(a * 255), (int)(r * 255), (int)(gr * 255), (int)(b * 255));

    matrices.push();
    matrices.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);

    RenderSystem.disableDepthTest();
    RenderSystem.depthMask(false);

    VertexConsumer vertexConsumer = context.consumers().getBuffer(RenderLayer.getLines());
    MatrixStack.Entry matrixEntry = matrices.peek();
    Matrix4f positionMatrix = matrixEntry.getPositionMatrix();
    MatrixStack.Entry normalMatrix = matrixEntry;

    for (BlockPos pos : diamondOrePositions) {
        Box box = new Box(pos);
        renderbox(vertexConsumer, positionMatrix, normalMatrix, box, color);
    }

    RenderSystem.depthMask(true);
    RenderSystem.enableDepthTest();

    matrices.pop();
}
попробуй. хотя сомневаюсь, что это тебе поможет
 
Java:
Expand Collapse Copy
private void renderDia(WorldRenderContext context) {
    MinecraftClient client = MinecraftClient.getInstance();
    if (client.player == null || diamondOrePositions.isEmpty()) return;

    Vec3d cameraPos = context.camera().getPos();
    MatrixStack matrices = context.matrixStack();

    float r = 0.0f;
    float gr = 0.5f;
    float b = 1.0f;
    float a = 0.8f;
    int color = ColorHelper.getArgb((int)(a * 255), (int)(r * 255), (int)(gr * 255), (int)(b * 255));

    matrices.push();
    matrices.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);

    RenderSystem.disableDepthTest();
    RenderSystem.depthMask(false);

    VertexConsumer vertexConsumer = context.consumers().getBuffer(RenderLayer.getLines());
    MatrixStack.Entry matrixEntry = matrices.peek();
    Matrix4f positionMatrix = matrixEntry.getPositionMatrix();
    MatrixStack.Entry normalMatrix = matrixEntry;

    for (BlockPos pos : diamondOrePositions) {
        Box box = new Box(pos);
        renderbox(vertexConsumer, positionMatrix, normalMatrix, box, color);
    }

    RenderSystem.depthMask(true);
    RenderSystem.enableDepthTest();

    matrices.pop();
}
попробуй. хотя сомневаюсь, что это тебе поможет
нема таких методов к сожелению, мб они как то иначе называются или в других класса
 
нема таких методов к сожелению, мб они как то иначе называются или в других класса
ну тебе нужно тогда свой RenderLayer сделать. посмотри как создаётся RenderLayer.getLines
 
ну тебе нужно тогда свой RenderLayer сделать. посмотри как создаётся RenderLayer.getLines
RenderLayer же для существ, не?

Вообще можно втупую вырубить запись в буффер глубины на время рендеринга, тогда если рендеринг происходит сразу а не отложен через какой-то буффер то это вполне себе сработает скорее всего даже с 2 вызовами ГЛ-а напрямую, но я бы поискал бы инструменты как это сделать по другому

У кубача вроде как в 1.21 появился RenderPipeline, и по идее можно прогнать это через него, ток тут я уже особо ничего не подскажу, не разбирался в рендеринге на 1.20+
 
что. нет. точно нет. посмотри что это, они юзают это теперь везде для отрисовки почти всего
1755025379708.png

Буквально только существа
 
Назад
Сверху Снизу