Подпишитесь на наш Telegram-канал, чтобы всегда быть в курсе важных обновлений! Перейти

Визуальная часть BlockESP upd | Zenith Recode 1.21.4

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Фев 2023
Сообщения
20
Реакции
0
Выберите загрузчик игры
  1. Fabric
Сразу говорю пастерки, это имба была сделана гптхой, сделано реально не плохо так как это не ваши дипсики чат гпт
Теперь не лагает, в кряке очень начинало лагать


BlockESP.java:
Expand Collapse Copy
package zenith.zov.client.modules.impl.render;

import com.darkmagician6.eventapi.EventTarget;
import net.minecraft.block.AirBlock;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.MapColor;
import net.minecraft.block.entity.*;
import net.minecraft.entity.Entity;
import net.minecraft.entity.vehicle.ChestMinecartEntity;
import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket;
import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import zenith.zov.base.events.impl.render.EventRender3D;
import zenith.zov.base.events.impl.server.EventPacket;
import zenith.zov.client.modules.api.Category;
import zenith.zov.client.modules.api.Module;
import zenith.zov.client.modules.api.ModuleAnnotation;
import zenith.zov.client.modules.api.setting.impl.ItemSelectSetting;
import zenith.zov.client.modules.api.setting.impl.ModeSetting;
import zenith.zov.client.modules.api.setting.impl.NumberSetting;
import zenith.zov.utility.math.Timer;
import zenith.zov.utility.render.level.Render3DUtil;

import java.awt.Color;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@ModuleAnnotation(name = "BlockESP", category = Category.RENDER, description = "Подсвечивает блоки")
public final class BlockESP extends Module {


    private volatile List<BlockPos> blockPos = new ArrayList<>();
    private volatile List<BlockPos> defaultModeCache = new ArrayList<>();
   
    private ModeSetting espMode = new ModeSetting("Режим");
    private ModeSetting.Value defaultMode = new ModeSetting.Value(espMode, "Дефолт").select();
    private ModeSetting.Value xrayMode = new ModeSetting.Value(espMode, "Xray");
   
    private final ItemSelectSetting itemSelectSetting = new ItemSelectSetting("Блоки", new ArrayList<>());
   
    private ModeSetting scanMode = new ModeSetting("Мод сканирования");
    private ModeSetting.Value onlyUpdate = new ModeSetting.Value(scanMode,"Обновление").select();
    private ModeSetting.Value all = new ModeSetting.Value(scanMode,"Сканировать");

    private final NumberSetting range = new NumberSetting("Радиус", 80, 1, 128, 2, () -> all.isSelected() && xrayMode.isSelected());
    private final NumberSetting time = new NumberSetting("Таймер", 4, 0, 100, 5, () -> all.isSelected() && xrayMode.isSelected());
    private final NumberSetting defaultUpdateTime = new NumberSetting("Обновление (сек)", 2, 0.5f, 10, 0.5f, defaultMode::isSelected);

    private final Timer timerUtil = new Timer();
    private final Timer defaultModeTimer = new Timer();
    private final ExecutorService executor = Executors.newSingleThreadExecutor();
    private volatile boolean isStarted = true;

    public static BlockESP INSTANCE = new BlockESP();
    private BlockESP() {
        itemSelectSetting.add(Blocks.DIAMOND_ORE);
        itemSelectSetting.setVisible(xrayMode::isSelected);
        scanMode.setVisible(xrayMode::isSelected);
    }
    @Override
    public void onEnable() {
        timerUtil.setMillis(0);
        defaultModeTimer.setMillis(0);
        isStarted = true;
        super.onEnable();
    }

    @Override
    public void onDisable() {
        isStarted = false;
        defaultModeCache.clear();
        super.onDisable();
    }

    @EventTarget
    public void render(EventRender3D eventRender3D) {
        if (xrayMode.isSelected()) {
            renderXrayMode();
        } else if (defaultMode.isSelected()) {
            renderDefaultMode();
        }
    }
   
    private void renderXrayMode() {
        if (timerUtil.finished(time.getCurrent() * 1000) && !onlyUpdate.isSelected() && isStarted) {
            executor.submit(this::scan);
            timerUtil.reset();
        }

        for (BlockPos pos : blockPos) {
            Block block = mc.world.getBlockState(pos).getBlock();

            if (itemSelectSetting.contains(block)) {
                if ((block == Blocks.DIAMOND_ORE || block == Blocks.DEEPSLATE_DIAMOND_ORE)) {
                    drawBox(pos, Color.cyan.getRGB());
                } else if ((block == Blocks.GOLD_ORE || block == Blocks.DEEPSLATE_GOLD_ORE)) {
                    drawBox(pos, 0xFFFFD700);
                } else if (block == Blocks.NETHER_GOLD_ORE) {
                    drawBox(pos, 0xFFFFD700);
                } else if ((block == Blocks.EMERALD_ORE || block == Blocks.DEEPSLATE_EMERALD_ORE)) {
                    drawBox(pos, 0xFF00FF4D);
                } else if ((block == Blocks.IRON_ORE || block == Blocks.DEEPSLATE_IRON_ORE)) {
                    drawBox(pos, 0xFFD5D5D5);
                } else if ((block == Blocks.REDSTONE_ORE || block == Blocks.DEEPSLATE_REDSTONE_ORE)) {
                    drawBox(pos, 0xFFFF0000);
                } else if (block == Blocks.ANCIENT_DEBRIS) {
                    drawBox(pos, 0xFFFFFFFF);
                } else {
                    MapColor color = block.getDefaultMapColor();
                    int rgb = new Color(color.color).getRGB();
                    drawBox(pos, rgb);
                }
            }
        }
    }
   
    private void renderDefaultMode() {
        if (mc.world == null || mc.player == null) return;
       
        if (defaultModeTimer.finished((long)(defaultUpdateTime.getCurrent() * 1000))) {
            executor.submit(this::scanDefaultMode);
            defaultModeTimer.reset();
        }
       
        for (BlockPos pos : defaultModeCache) {
            BlockEntity blockEntity = mc.world.getBlockEntity(pos);
           
            if (blockEntity instanceof ChestBlockEntity) {
                drawBox(pos, Color.YELLOW.getRGB());
            } else if (blockEntity instanceof EnderChestBlockEntity) {
                drawBox(pos, Color.MAGENTA.getRGB());
            } else if (blockEntity instanceof MobSpawnerBlockEntity) {
                drawBox(pos, Color.RED.getRGB());
            } else if (blockEntity instanceof ShulkerBoxBlockEntity) {
                drawBox(pos, Color.PINK.getRGB());
            } else if (blockEntity instanceof BedBlockEntity) {
                drawBox(pos, Color.WHITE.getRGB());
            } else if (blockEntity instanceof BarrelBlockEntity) {
                drawBox(pos, Color.ORANGE.getRGB());
            }
        }
       
        for (Entity entity : mc.world.getEntities()) {
            if (entity instanceof ChestMinecartEntity) {
                drawBox(entity.getBlockPos(), Color.YELLOW.getRGB());
            }
        }
    }
   
    private void scanDefaultMode() {
        if (mc.world == null || mc.player == null) return;
       
        ArrayList<BlockPos> found = new ArrayList<>();
        int range = 50;
        BlockPos playerPos = mc.player.getBlockPos();
       
        for (int x = -range; x <= range; x++) {
            for (int y = -range; y <= range; y++) {
                for (int z = -range; z <= range; z++) {
                    if (!isStarted) return;
                   
                    BlockPos pos = playerPos.add(x, y, z);
                    BlockEntity blockEntity = mc.world.getBlockEntity(pos);
                   
                    if (blockEntity instanceof ChestBlockEntity ||
                        blockEntity instanceof EnderChestBlockEntity ||
                        blockEntity instanceof MobSpawnerBlockEntity ||
                        blockEntity instanceof ShulkerBoxBlockEntity ||
                        blockEntity instanceof BedBlockEntity ||
                        blockEntity instanceof BarrelBlockEntity) {
                        found.add(pos);
                    }
                }
            }
        }
       
        defaultModeCache = found;
    }

    @EventTarget
    public void packer(EventPacket eventPacket) {
        if (eventPacket.isReceive()) {
            if (eventPacket.getPacket() instanceof ChunkDeltaUpdateS2CPacket chunkDelta)
                chunkDelta.visitUpdates((pos, state) -> {
                    if(itemSelectSetting.contains(state.getBlock())) {
                        blockPos.add(pos);
                    }
                });
            if (eventPacket.getPacket() instanceof BlockUpdateS2CPacket chunkDelta) {

                if (itemSelectSetting.contains(chunkDelta.getState ().getBlock())){
                    blockPos.add(chunkDelta.getPos());
                }
            }

        }
    }

    public void drawBox(BlockPos blockPos, int start) {
        Render3DUtil.drawBox(new Box(blockPos),start, 1);
    }

    private void scan() {

        ArrayList<BlockPos> blocks = new ArrayList<>();
        int startX = (int) Math.floor(mc.player.getX() - range.getCurrent());
        int endX = (int) Math.ceil(mc.player.getX() + range.getCurrent());
        int startY = mc.world.getBottomY() + 1;
        int endY = mc.world.getTopYInclusive();
        int startZ = (int) Math.floor(mc.player.getZ() - range.getCurrent());
        int endZ = (int) Math.ceil(mc.player.getZ() + range.getCurrent());

        for (int x = startX; x <= endX; x++) {

            for (int y = startY; y <= endY; y++) {

                for (int z = startZ; z <= endZ; z++) {
                    if (!isStarted) return;
                    BlockPos pos = new BlockPos(x, y, z);
                    Block block = mc.world.getBlockState(pos).getBlock();

                    if (!(block instanceof AirBlock) && itemSelectSetting.contains(block)) {
                        blocks.add(pos);
                    }


                }
            }
        }
        this.blockPos = blocks;
        isStarted = true;
    }


}

ФИКС РЕКОДА: все что связано с music либкой сносите или ставте на null
она не воркает просто в кряке

ss defualt
1762269269201.png
1762269322932.png






ss xray
1762269525124.png
1762269543582.png
 
Последнее редактирование:
потому что 1.16.5 живет последний понедельник, и это давно понятно было, ситуация такая же как и с 1.12.2
 
Тут я согласен, но тип почему берут именно зенит?
так тут готовый рендер есть, +- килка уже готовая, много разного полезного функционала которому самому можно не делать
 
мега крутая база в которой уже почти все есть почему бы не взять
я бы сказал там килка да пенит ебет на фт, но мало функций, и сломана база (рендер починить изи там закомментирована строка)
 
Сразу говорю пастерки, это имба была сделана гптхой, сделано реально не плохо так как это не ваши дипсики чат гпт
Теперь не лагает, в кряке очень начинало лагать


BlockESP.java:
Expand Collapse Copy
package zenith.zov.client.modules.impl.render;

import com.darkmagician6.eventapi.EventTarget;
import net.minecraft.block.AirBlock;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.block.MapColor;
import net.minecraft.block.entity.*;
import net.minecraft.entity.Entity;
import net.minecraft.entity.vehicle.ChestMinecartEntity;
import net.minecraft.network.packet.s2c.play.BlockUpdateS2CPacket;
import net.minecraft.network.packet.s2c.play.ChunkDeltaUpdateS2CPacket;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import zenith.zov.base.events.impl.render.EventRender3D;
import zenith.zov.base.events.impl.server.EventPacket;
import zenith.zov.client.modules.api.Category;
import zenith.zov.client.modules.api.Module;
import zenith.zov.client.modules.api.ModuleAnnotation;
import zenith.zov.client.modules.api.setting.impl.ItemSelectSetting;
import zenith.zov.client.modules.api.setting.impl.ModeSetting;
import zenith.zov.client.modules.api.setting.impl.NumberSetting;
import zenith.zov.utility.math.Timer;
import zenith.zov.utility.render.level.Render3DUtil;

import java.awt.Color;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

@ModuleAnnotation(name = "BlockESP", category = Category.RENDER, description = "Подсвечивает блоки")
public final class BlockESP extends Module {


    private volatile List<BlockPos> blockPos = new ArrayList<>();
    private volatile List<BlockPos> defaultModeCache = new ArrayList<>();
  
    private ModeSetting espMode = new ModeSetting("Режим");
    private ModeSetting.Value defaultMode = new ModeSetting.Value(espMode, "Дефолт").select();
    private ModeSetting.Value xrayMode = new ModeSetting.Value(espMode, "Xray");
  
    private final ItemSelectSetting itemSelectSetting = new ItemSelectSetting("Блоки", new ArrayList<>());
  
    private ModeSetting scanMode = new ModeSetting("Мод сканирования");
    private ModeSetting.Value onlyUpdate = new ModeSetting.Value(scanMode,"Обновление").select();
    private ModeSetting.Value all = new ModeSetting.Value(scanMode,"Сканировать");

    private final NumberSetting range = new NumberSetting("Радиус", 80, 1, 128, 2, () -> all.isSelected() && xrayMode.isSelected());
    private final NumberSetting time = new NumberSetting("Таймер", 4, 0, 100, 5, () -> all.isSelected() && xrayMode.isSelected());
    private final NumberSetting defaultUpdateTime = new NumberSetting("Обновление (сек)", 2, 0.5f, 10, 0.5f, defaultMode::isSelected);

    private final Timer timerUtil = new Timer();
    private final Timer defaultModeTimer = new Timer();
    private final ExecutorService executor = Executors.newSingleThreadExecutor();
    private volatile boolean isStarted = true;

    public static BlockESP INSTANCE = new BlockESP();
    private BlockESP() {
        itemSelectSetting.add(Blocks.DIAMOND_ORE);
        itemSelectSetting.setVisible(xrayMode::isSelected);
        scanMode.setVisible(xrayMode::isSelected);
    }
    @Override
    public void onEnable() {
        timerUtil.setMillis(0);
        defaultModeTimer.setMillis(0);
        isStarted = true;
        super.onEnable();
    }

    @Override
    public void onDisable() {
        isStarted = false;
        defaultModeCache.clear();
        super.onDisable();
    }

    @EventTarget
    public void render(EventRender3D eventRender3D) {
        if (xrayMode.isSelected()) {
            renderXrayMode();
        } else if (defaultMode.isSelected()) {
            renderDefaultMode();
        }
    }
  
    private void renderXrayMode() {
        if (timerUtil.finished(time.getCurrent() * 1000) && !onlyUpdate.isSelected() && isStarted) {
            executor.submit(this::scan);
            timerUtil.reset();
        }

        for (BlockPos pos : blockPos) {
            Block block = mc.world.getBlockState(pos).getBlock();

            if (itemSelectSetting.contains(block)) {
                if ((block == Blocks.DIAMOND_ORE || block == Blocks.DEEPSLATE_DIAMOND_ORE)) {
                    drawBox(pos, Color.cyan.getRGB());
                } else if ((block == Blocks.GOLD_ORE || block == Blocks.DEEPSLATE_GOLD_ORE)) {
                    drawBox(pos, 0xFFFFD700);
                } else if (block == Blocks.NETHER_GOLD_ORE) {
                    drawBox(pos, 0xFFFFD700);
                } else if ((block == Blocks.EMERALD_ORE || block == Blocks.DEEPSLATE_EMERALD_ORE)) {
                    drawBox(pos, 0xFF00FF4D);
                } else if ((block == Blocks.IRON_ORE || block == Blocks.DEEPSLATE_IRON_ORE)) {
                    drawBox(pos, 0xFFD5D5D5);
                } else if ((block == Blocks.REDSTONE_ORE || block == Blocks.DEEPSLATE_REDSTONE_ORE)) {
                    drawBox(pos, 0xFFFF0000);
                } else if (block == Blocks.ANCIENT_DEBRIS) {
                    drawBox(pos, 0xFFFFFFFF);
                } else {
                    MapColor color = block.getDefaultMapColor();
                    int rgb = new Color(color.color).getRGB();
                    drawBox(pos, rgb);
                }
            }
        }
    }
  
    private void renderDefaultMode() {
        if (mc.world == null || mc.player == null) return;
      
        if (defaultModeTimer.finished((long)(defaultUpdateTime.getCurrent() * 1000))) {
            executor.submit(this::scanDefaultMode);
            defaultModeTimer.reset();
        }
      
        for (BlockPos pos : defaultModeCache) {
            BlockEntity blockEntity = mc.world.getBlockEntity(pos);
          
            if (blockEntity instanceof ChestBlockEntity) {
                drawBox(pos, Color.YELLOW.getRGB());
            } else if (blockEntity instanceof EnderChestBlockEntity) {
                drawBox(pos, Color.MAGENTA.getRGB());
            } else if (blockEntity instanceof MobSpawnerBlockEntity) {
                drawBox(pos, Color.RED.getRGB());
            } else if (blockEntity instanceof ShulkerBoxBlockEntity) {
                drawBox(pos, Color.PINK.getRGB());
            } else if (blockEntity instanceof BedBlockEntity) {
                drawBox(pos, Color.WHITE.getRGB());
            } else if (blockEntity instanceof BarrelBlockEntity) {
                drawBox(pos, Color.ORANGE.getRGB());
            }
        }
      
        for (Entity entity : mc.world.getEntities()) {
            if (entity instanceof ChestMinecartEntity) {
                drawBox(entity.getBlockPos(), Color.YELLOW.getRGB());
            }
        }
    }
  
    private void scanDefaultMode() {
        if (mc.world == null || mc.player == null) return;
      
        ArrayList<BlockPos> found = new ArrayList<>();
        int range = 50;
        BlockPos playerPos = mc.player.getBlockPos();
      
        for (int x = -range; x <= range; x++) {
            for (int y = -range; y <= range; y++) {
                for (int z = -range; z <= range; z++) {
                    if (!isStarted) return;
                  
                    BlockPos pos = playerPos.add(x, y, z);
                    BlockEntity blockEntity = mc.world.getBlockEntity(pos);
                  
                    if (blockEntity instanceof ChestBlockEntity ||
                        blockEntity instanceof EnderChestBlockEntity ||
                        blockEntity instanceof MobSpawnerBlockEntity ||
                        blockEntity instanceof ShulkerBoxBlockEntity ||
                        blockEntity instanceof BedBlockEntity ||
                        blockEntity instanceof BarrelBlockEntity) {
                        found.add(pos);
                    }
                }
            }
        }
      
        defaultModeCache = found;
    }

    @EventTarget
    public void packer(EventPacket eventPacket) {
        if (eventPacket.isReceive()) {
            if (eventPacket.getPacket() instanceof ChunkDeltaUpdateS2CPacket chunkDelta)
                chunkDelta.visitUpdates((pos, state) -> {
                    if(itemSelectSetting.contains(state.getBlock())) {
                        blockPos.add(pos);
                    }
                });
            if (eventPacket.getPacket() instanceof BlockUpdateS2CPacket chunkDelta) {

                if (itemSelectSetting.contains(chunkDelta.getState ().getBlock())){
                    blockPos.add(chunkDelta.getPos());
                }
            }

        }
    }

    public void drawBox(BlockPos blockPos, int start) {
        Render3DUtil.drawBox(new Box(blockPos),start, 1);
    }

    private void scan() {

        ArrayList<BlockPos> blocks = new ArrayList<>();
        int startX = (int) Math.floor(mc.player.getX() - range.getCurrent());
        int endX = (int) Math.ceil(mc.player.getX() + range.getCurrent());
        int startY = mc.world.getBottomY() + 1;
        int endY = mc.world.getTopYInclusive();
        int startZ = (int) Math.floor(mc.player.getZ() - range.getCurrent());
        int endZ = (int) Math.ceil(mc.player.getZ() + range.getCurrent());

        for (int x = startX; x <= endX; x++) {

            for (int y = startY; y <= endY; y++) {

                for (int z = startZ; z <= endZ; z++) {
                    if (!isStarted) return;
                    BlockPos pos = new BlockPos(x, y, z);
                    Block block = mc.world.getBlockState(pos).getBlock();

                    if (!(block instanceof AirBlock) && itemSelectSetting.contains(block)) {
                        blocks.add(pos);
                    }


                }
            }
        }
        this.blockPos = blocks;
        isStarted = true;
    }


}

ФИКС РЕКОДА: все что связано с music либкой сносите или ставте на null
она не воркает просто в кряке

ss defualtПосмотреть вложение 319120Посмотреть вложение 319121





ss xray Посмотреть вложение 319123Посмотреть вложение 319124
красиво сделал, но сама по себе база зафакана. начиная говорить о говнокоде, можно закончить говнорендером
 
Назад
Сверху Снизу