Исходник BlockESP + Xray MCP 1.16.5 ready

Начинающий
Статус
Оффлайн
Регистрация
29 Июл 2022
Сообщения
190
Реакции[?]
5
Поинты[?]
2K
Вот сам код BlockESP, Xray без байпаса подойдет для серверов где нету AntiXray, так же Xray работает на автошахтах на большитсва серверах таких как FunTime, HolyWorld и т.д кому чего не хватает пишите коментарий и я обязательно изменю тему так же не кидайтесь тапками сделал для тех кому это нужно, так же для умников что в коде например:
Пожалуйста, авторизуйтесь для просмотра ссылки.

просто делаем
Пожалуйста, авторизуйтесь для просмотра ссылки.


вот BlockESP
BlockESP:
package KwishClientzxc.modules.impl.render;

import KwishClientzxc.events.Event;
import KwishClientzxc.events.impl.render.EventRender;
import KwishClientzxc.modules.Function;
import KwishClientzxc.modules.FunctionAnnotation;
import KwishClientzxc.modules.Type;
import KwishClientzxc.modules.settings.imp.BooleanOption;
import KwishClientzxc.modules.settings.imp.ModeSetting;
import KwishClientzxc.modules.settings.imp.MultiBoxSetting;
import KwishClientzxc.util.render.RenderUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.minecart.MinecartEntity;
import net.minecraft.tileentity.*;
import net.minecraft.util.math.BlockPos;

import java.awt.*;

@FunctionAnnotation(name = "BlockESP", type = Type.Render)
public class BlockESP extends Function {

    public ModeSetting mode = new ModeSetting("Режим", "Дефолт", "Дефолт", "Xray");
    private final MultiBoxSetting blocksSelection = new MultiBoxSetting("Выбрать блоки",
            new BooleanOption("Сундуки", true),
            new BooleanOption("Эндер Сундуки", true),
            new BooleanOption("Спавнера", true),
            new BooleanOption("Шалкера", true),
            new BooleanOption("Кровати", true),
            new BooleanOption("Вагонетка", true),
            new BooleanOption("Бочки", true)).setVisible(() -> mode.is("Дефолт"));

    public MultiBoxSetting ores = new MultiBoxSetting("Искать",
            new BooleanOption("Уголь", false),
            new BooleanOption("Железо", false),
            new BooleanOption("Редстоун", false),
            new BooleanOption("Золото", false),
            new BooleanOption("Эмеральды", false),
            new BooleanOption("Алмазы", false),
            new BooleanOption("Незерит", false)).setVisible(() -> mode.is("Xray"));

    public BlockESP() {
        addSettings(mode, blocksSelection, ores);
    }

    @Override
    public void onEvent(Event event) {
        if (event instanceof EventRender e) {
            if (mode.is("Xray")) {
                if (e.isRender3D()) {
                    for (int x = -25; x <= 25; x++) {
                        for (int y = -25; y <= 25; y++) {
                            for (int z = -25; z <= 25; z++) {
                                BlockPos pos = new BlockPos(mc.player.getPosX() + x, mc.player.getPosY() + y, mc.player.getPosZ() + z);
                                BlockState state = mc.world.getBlockState(pos);
                                Block block = state.getBlock();
                                if (block == Blocks.COAL_ORE && ores.get(0)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(12, 12, 12, 255).getRGB());
                                }
                                if (block == Blocks.IRON_ORE && ores.get(1)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(122, 122, 122, 255).getRGB());
                                }
                                if (block == Blocks.REDSTONE_ORE && ores.get(2)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(255, 82, 82, 255).getRGB());
                                }
                                if (block == Blocks.GOLD_ORE && ores.get(3)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(247, 255, 102, 255).getRGB());
                                }
                                if (block == Blocks.NETHER_GOLD_ORE && ores.get(3)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(247, 255, 102, 255).getRGB());
                                }
                                if (block == Blocks.EMERALD_ORE && ores.get(4)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(116, 252, 101, 255).getRGB());
                                }
                                if (block == Blocks.DIAMOND_ORE && ores.get(5)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(77, 219, 255, 255).getRGB());
                                }
                                if (block == Blocks.ANCIENT_DEBRIS && ores.get(6)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(105, 60, 12, 255).getRGB());
                                }
                            }
                        }
                    }
                }
            }
            else if (mode.is("Дефолт")) {
                for (TileEntity t : mc.world.loadedTileEntityList) {
                    if (t instanceof ChestTileEntity && blocksSelection.get(0)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof EnderChestTileEntity && blocksSelection.get(1)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof MobSpawnerTileEntity && blocksSelection.get(2)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof ShulkerBoxTileEntity && blocksSelection.get(3)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof BedTileEntity && blocksSelection.get(4)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof BarrelTileEntity && blocksSelection.get(6)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                }

                for (Entity entity : mc.world.getAllEntities()) {
                    if (entity instanceof MinecartEntity && blocksSelection.get(5)) {
                        RenderUtil.Render3D.drawBlockBox(entity.getPosition(), -1);
                    }
                }
            }
        }
    }
}
вот сам EventRender
EventRender:
package KwishClientzxc.events.impl.render;


import KwishClientzxc.events.Event;
import com.mojang.blaze3d.matrix.MatrixStack;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.MainWindow;
import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.util.math.vector.Matrix4f;

[USER=54968]@data[/USER]
@FieldDefaults(level = AccessLevel.PRIVATE)
public class EventRender extends Event {
    public float partialTicks;
    public MainWindow scaledResolution;
    public Type type;
    public MatrixStack matrixStack;
    public Matrix4f matrix;
    public ActiveRenderInfo activeRenderInfo;



    public EventRender(float partialTicks, MatrixStack stack, MainWindow scaledResolution, Type type,Matrix4f matrix) {
        this.partialTicks = partialTicks;
        this.scaledResolution = scaledResolution;
        this.matrixStack = stack;
        this.type = type;
        this.matrix = matrix;
    }

    public boolean isRender3D() {
        return this.type == Type.RENDER3D;
    }

    public boolean isRender2D() {
        return this.type == Type.RENDER2D;
    }

    public MatrixStack getMatrixStack() {
        return this.matrixStack;
    }
    public ActiveRenderInfo getActiveRenderInfo() {
        return this.activeRenderInfo;
    }

    public float getPartialTicks() {
        return this.partialTicks;
    }

    public enum Type {
        RENDER3D, RENDER2D
    }
}
евент нужно захукать по пути net.minecraft.client.rendererв классе WorldRenderer в методе updateCameraAndRender
снизу этих строк "GlStateManager.setFogAllowed(true);
RenderSystem.pushMatrix();
RenderSystem.multMatrix(matrixStackIn.getLast().getMatrix());"
и сделать так
GlStateManager.setFogAllowed(true);
RenderSystem.pushMatrix();
RenderSystem.multMatrix(matrixStackIn.getLast().getMatrix())

MainWindow sr = mc.getMainWindow();
EventManager.call(new EventRender(partialTicks, matrixStackIn, sr, EventRender.Type.RENDER3D, matrix4f));

так же для тех у кого нету метода drawBlockBox
drawBlockBox:
 public static void drawBlockBox(BlockPos blockPos, int color) {
            drawBox(new AxisAlignedBB(blockPos).offset(-mc.getRenderManager().info.getProjectedView().x, -mc.getRenderManager().info.getProjectedView().y, -mc.getRenderManager().info.getProjectedView().z), color);
        }

        public static void drawBox(AxisAlignedBB bb, int color) {
            GL11.glPushMatrix();
            GL11.glDisable(GL11.GL_TEXTURE_2D);
            GL11.glDisable(GL_DEPTH_TEST);
            GL11.glEnable(GL_LINE_SMOOTH);
            GL11.glLineWidth(1);
            float[] rgb = IntColor.rgb(color);
            GlStateManager.color4f(rgb[0], rgb[1], rgb[2], rgb[3]);
            Tessellator tessellator = Tessellator.getInstance();
            BufferBuilder vertexbuffer = tessellator.getBuffer();
            vertexbuffer.begin(3, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            vertexbuffer.begin(3, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            vertexbuffer.begin(1, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            GlStateManager.color4f(rgb[0], rgb[1], rgb[2], rgb[3]);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            GL11.glEnable(GL_DEPTH_TEST);
            GL11.glDisable(GL_LINE_SMOOTH);
            GL11.glPopMatrix();

        }
    }
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
10 Май 2023
Сообщения
576
Реакции[?]
8
Поинты[?]
3K
Вот сам код BlockESP, Xray без байпаса подойдет для серверов где нету AntiXray, так же Xray работает на автошахтах на большитсва серверах таких как FunTime, HolyWorld и т.д кому чего не хватает пишите коментарий и я обязательно изменю тему так же не кидайтесь тапками сделал для тех кому это нужно, так же для умников что в коде например:
Пожалуйста, авторизуйтесь для просмотра ссылки.

просто делаем
Пожалуйста, авторизуйтесь для просмотра ссылки.


вот BlockESP
BlockESP:
package KwishClientzxc.modules.impl.render;

import KwishClientzxc.events.Event;
import KwishClientzxc.events.impl.render.EventRender;
import KwishClientzxc.modules.Function;
import KwishClientzxc.modules.FunctionAnnotation;
import KwishClientzxc.modules.Type;
import KwishClientzxc.modules.settings.imp.BooleanOption;
import KwishClientzxc.modules.settings.imp.ModeSetting;
import KwishClientzxc.modules.settings.imp.MultiBoxSetting;
import KwishClientzxc.util.render.RenderUtil;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.minecart.MinecartEntity;
import net.minecraft.tileentity.*;
import net.minecraft.util.math.BlockPos;

import java.awt.*;

@FunctionAnnotation(name = "BlockESP", type = Type.Render)
public class BlockESP extends Function {

    public ModeSetting mode = new ModeSetting("Режим", "Дефолт", "Дефолт", "Xray");
    private final MultiBoxSetting blocksSelection = new MultiBoxSetting("Выбрать блоки",
            new BooleanOption("Сундуки", true),
            new BooleanOption("Эндер Сундуки", true),
            new BooleanOption("Спавнера", true),
            new BooleanOption("Шалкера", true),
            new BooleanOption("Кровати", true),
            new BooleanOption("Вагонетка", true),
            new BooleanOption("Бочки", true)).setVisible(() -> mode.is("Дефолт"));

    public MultiBoxSetting ores = new MultiBoxSetting("Искать",
            new BooleanOption("Уголь", false),
            new BooleanOption("Железо", false),
            new BooleanOption("Редстоун", false),
            new BooleanOption("Золото", false),
            new BooleanOption("Эмеральды", false),
            new BooleanOption("Алмазы", false),
            new BooleanOption("Незерит", false)).setVisible(() -> mode.is("Xray"));

    public BlockESP() {
        addSettings(mode, blocksSelection, ores);
    }

    @Override
    public void onEvent(Event event) {
        if (event instanceof EventRender e) {
            if (mode.is("Xray")) {
                if (e.isRender3D()) {
                    for (int x = -25; x <= 25; x++) {
                        for (int y = -25; y <= 25; y++) {
                            for (int z = -25; z <= 25; z++) {
                                BlockPos pos = new BlockPos(mc.player.getPosX() + x, mc.player.getPosY() + y, mc.player.getPosZ() + z);
                                BlockState state = mc.world.getBlockState(pos);
                                Block block = state.getBlock();
                                if (block == Blocks.COAL_ORE && ores.get(0)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(12, 12, 12, 255).getRGB());
                                }
                                if (block == Blocks.IRON_ORE && ores.get(1)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(122, 122, 122, 255).getRGB());
                                }
                                if (block == Blocks.REDSTONE_ORE && ores.get(2)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(255, 82, 82, 255).getRGB());
                                }
                                if (block == Blocks.GOLD_ORE && ores.get(3)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(247, 255, 102, 255).getRGB());
                                }
                                if (block == Blocks.NETHER_GOLD_ORE && ores.get(3)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(247, 255, 102, 255).getRGB());
                                }
                                if (block == Blocks.EMERALD_ORE && ores.get(4)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(116, 252, 101, 255).getRGB());
                                }
                                if (block == Blocks.DIAMOND_ORE && ores.get(5)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(77, 219, 255, 255).getRGB());
                                }
                                if (block == Blocks.ANCIENT_DEBRIS && ores.get(6)) {
                                    RenderUtil.Render3D.drawBlockBox(pos, new Color(105, 60, 12, 255).getRGB());
                                }
                            }
                        }
                    }
                }
            }
            else if (mode.is("Дефолт")) {
                for (TileEntity t : mc.world.loadedTileEntityList) {
                    if (t instanceof ChestTileEntity && blocksSelection.get(0)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof EnderChestTileEntity && blocksSelection.get(1)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof MobSpawnerTileEntity && blocksSelection.get(2)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof ShulkerBoxTileEntity && blocksSelection.get(3)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof BedTileEntity && blocksSelection.get(4)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                    if (t instanceof BarrelTileEntity && blocksSelection.get(6)) {
                        RenderUtil.Render3D.drawBlockBox(t.getPos(), -1);
                    }
                }

                for (Entity entity : mc.world.getAllEntities()) {
                    if (entity instanceof MinecartEntity && blocksSelection.get(5)) {
                        RenderUtil.Render3D.drawBlockBox(entity.getPosition(), -1);
                    }
                }
            }
        }
    }
}
вот сам EventRender
EventRender:
package KwishClientzxc.events.impl.render;


import KwishClientzxc.events.Event;
import com.mojang.blaze3d.matrix.MatrixStack;
import lombok.AccessLevel;
import lombok.Data;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.MainWindow;
import net.minecraft.client.renderer.ActiveRenderInfo;
import net.minecraft.util.math.vector.Matrix4f;

[USER=54968]@data[/USER]
@FieldDefaults(level = AccessLevel.PRIVATE)
public class EventRender extends Event {
    public float partialTicks;
    public MainWindow scaledResolution;
    public Type type;
    public MatrixStack matrixStack;
    public Matrix4f matrix;
    public ActiveRenderInfo activeRenderInfo;



    public EventRender(float partialTicks, MatrixStack stack, MainWindow scaledResolution, Type type,Matrix4f matrix) {
        this.partialTicks = partialTicks;
        this.scaledResolution = scaledResolution;
        this.matrixStack = stack;
        this.type = type;
        this.matrix = matrix;
    }

    public boolean isRender3D() {
        return this.type == Type.RENDER3D;
    }

    public boolean isRender2D() {
        return this.type == Type.RENDER2D;
    }

    public MatrixStack getMatrixStack() {
        return this.matrixStack;
    }
    public ActiveRenderInfo getActiveRenderInfo() {
        return this.activeRenderInfo;
    }

    public float getPartialTicks() {
        return this.partialTicks;
    }

    public enum Type {
        RENDER3D, RENDER2D
    }
}
евент нужно захукать по пути net.minecraft.client.rendererв классе WorldRenderer в методе updateCameraAndRender
снизу этих строк "GlStateManager.setFogAllowed(true);
RenderSystem.pushMatrix();
RenderSystem.multMatrix(matrixStackIn.getLast().getMatrix());"
и сделать так
GlStateManager.setFogAllowed(true);
RenderSystem.pushMatrix();
RenderSystem.multMatrix(matrixStackIn.getLast().getMatrix())

MainWindow sr = mc.getMainWindow();
EventManager.call(new EventRender(partialTicks, matrixStackIn, sr, EventRender.Type.RENDER3D, matrix4f));

так же для тех у кого нету метода drawBlockBox
drawBlockBox:
 public static void drawBlockBox(BlockPos blockPos, int color) {
            drawBox(new AxisAlignedBB(blockPos).offset(-mc.getRenderManager().info.getProjectedView().x, -mc.getRenderManager().info.getProjectedView().y, -mc.getRenderManager().info.getProjectedView().z), color);
        }

        public static void drawBox(AxisAlignedBB bb, int color) {
            GL11.glPushMatrix();
            GL11.glDisable(GL11.GL_TEXTURE_2D);
            GL11.glDisable(GL_DEPTH_TEST);
            GL11.glEnable(GL_LINE_SMOOTH);
            GL11.glLineWidth(1);
            float[] rgb = IntColor.rgb(color);
            GlStateManager.color4f(rgb[0], rgb[1], rgb[2], rgb[3]);
            Tessellator tessellator = Tessellator.getInstance();
            BufferBuilder vertexbuffer = tessellator.getBuffer();
            vertexbuffer.begin(3, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            vertexbuffer.begin(3, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            vertexbuffer.begin(1, DefaultVertexFormats.POSITION);
            vertexbuffer.pos(bb.minX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.minZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.maxX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.minY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            vertexbuffer.pos(bb.minX, bb.maxY, bb.maxZ).color(rgb[0], rgb[1], rgb[2], rgb[3]).endVertex();
            tessellator.draw();
            GlStateManager.color4f(rgb[0], rgb[1], rgb[2], rgb[3]);
            GL11.glEnable(GL11.GL_TEXTURE_2D);
            GL11.glEnable(GL_DEPTH_TEST);
            GL11.glDisable(GL_LINE_SMOOTH);
            GL11.glPopMatrix();

        }
    }
сепесе, запасщу
 
Сверху Снизу