Исходник EntityESP Zenith Ready (No Recode)

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
7 Май 2025
Сообщения
161
Реакции
1
Выберите загрузчик игры
  1. Fabric

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

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

Спасибо!

Добавил 3D Box, добавил выбор между Corner боксом (который был изначально) и Full боксом (добавил).

также добавил вкл/выкл аутлайн бокса.

База зенит старый, не рекод.

Взял из тгк @vibeclient (noad!)

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


DW - ниже
на селфкод давно так похуй:
Expand Collapse Copy
package ru.vibeclient.implement.features.modules.render;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.ContainerComponent;
import net.minecraft.component.type.ItemEnchantmentsComponent;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
import net.minecraft.entity.Entity;
import net.minecraft.entity.ItemEntity;
import net.minecraft.entity.TntEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.BlockItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.Vec3d;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.registry.entry.RegistryEntry;
import java.util.Optional;
import org.joml.*;
import ru.vibeclient.api.event.EventHandler;
import ru.vibeclient.api.feature.module.Module;
import ru.vibeclient.api.feature.module.ModuleCategory;
import ru.vibeclient.api.feature.module.setting.implement.BooleanSetting;
import ru.vibeclient.api.feature.module.setting.implement.MultiSelectSetting;
import ru.vibeclient.api.feature.module.setting.implement.SelectSetting;
import ru.vibeclient.api.feature.module.setting.implement.ValueSetting;
import ru.vibeclient.api.repository.friend.FriendUtils;
import ru.vibeclient.api.system.font.FontRenderer;
import ru.vibeclient.api.system.font.Fonts;
import ru.vibeclient.api.system.shape.ShapeProperties;
import ru.vibeclient.common.util.color.ColorUtil;
import ru.vibeclient.common.util.world.ServerUtil;
import ru.vibeclient.common.util.math.ProjectionUtil;
import ru.vibeclient.common.util.entity.PlayerIntersectionUtil;
import ru.vibeclient.common.util.other.Instance;
import ru.vibeclient.common.util.render.Render2DUtil;
import ru.vibeclient.common.util.render.Render3DUtil;
import ru.vibeclient.implement.events.player.TickEvent;
import ru.vibeclient.implement.events.render.DrawEvent;
import ru.vibeclient.implement.events.render.WorldLoadEvent;
import ru.vibeclient.implement.events.render.WorldRenderEvent;
import ru.vibeclient.implement.features.modules.combat.AntiBot;

import java.lang.Math;
import java.util.*;

@FieldDefaults(level = AccessLevel.PRIVATE, makeFinal = true)
public class EntityESP extends Module {
    public static EntityESP getInstance() {
        return Instance.get(EntityESP.class);
    }
    Identifier TEXTURE = Identifier.of("textures/container.png");
    List<PlayerEntity> players = new ArrayList<>();
    Map<RegistryKey<Enchantment>, String> encMap = new HashMap<>();
    ValueSetting sizeSetting = new ValueSetting("Tag Size", "Tags size")
            .setValue(13).range(10, 20);
    public MultiSelectSetting entityType = new MultiSelectSetting("Entity Type", "Entity that will be displayed")
            .value("Player", "Item", "TNT");
    MultiSelectSetting playerSetting = new MultiSelectSetting("Player Settings", "Settings for players")
            .value("Box", "Armor", "Enchants", "NameTags", "Hand Items").visible(() -> entityType.isSelected("Player"));
    public SelectSetting boxType = new SelectSetting("Box Type", "Type of Box")
            .value("Corner", "Full", "3D Box").visible(() -> playerSetting.isSelected("Box"));
    public BooleanSetting flatBoxOutline = new BooleanSetting("Outline", "Outline for flat boxes").visible(() -> playerSetting.isSelected("Box") && (boxType.isSelected("Corner") || boxType.isSelected("Full")));
    public ValueSetting boxAlpha = new ValueSetting("Alpha", "Box transparency")
            .setValue(1.0F).range(0.1F, 1.0F).visible(() -> boxType.isSelected("3D Box"));

    public EntityESP() {
        super("EntityESP", "Entity ESP", ModuleCategory.RENDER);
        setup(sizeSetting, entityType, playerSetting, boxType, flatBoxOutline, boxAlpha);
        encMap.put(Enchantments.BLAST_PROTECTION, "B");
        encMap.put(Enchantments.PROTECTION, "P");
        encMap.put(Enchantments.SHARPNESS, "S");
        encMap.put(Enchantments.EFFICIENCY, "E");
        encMap.put(Enchantments.UNBREAKING, "U");
        encMap.put(Enchantments.POWER, "P");
        encMap.put(Enchantments.THORNS, "T");
        encMap.put(Enchantments.MENDING, "M");
        encMap.put(Enchantments.DEPTH_STRIDER, "D");
        encMap.put(Enchantments.QUICK_CHARGE, "Q");
        encMap.put(Enchantments.MULTISHOT, "MS");
        encMap.put(Enchantments.PIERCING, "P");
    }

    @EventHandler
    public void onWorldLoad(WorldLoadEvent e) {
        players.clear();
    }

    @EventHandler
    public void onTick(TickEvent e) {
        players.clear();
        if (mc.world != null) {
            mc.world.getPlayers().stream()
                    .filter(player -> player != mc.player)
                    .forEach(players::add);
        }
    }

    @EventHandler
    public void onWorldRender(WorldRenderEvent e) {
        if (!entityType.isSelected("Player")) return;
        float tickDelta = mc.getRenderTickCounter().getTickDelta(false);
        for (PlayerEntity player : players) {
            if (player == null) continue;
            double interpX = MathHelper.lerp(tickDelta, player.prevX, player.getX());
            double interpY = MathHelper.lerp(tickDelta, player.prevY, player.getY());
            double interpZ = MathHelper.lerp(tickDelta, player.prevZ, player.getZ());
            Vec3d interpCenter = new Vec3d(interpX, interpY, interpZ);
            float distance = (float) mc.getEntityRenderDispatcher().camera.getPos().distanceTo(interpCenter);
            if (distance < 1) continue;
            boolean friend = FriendUtils.isFriend(player);
            int baseColor = friend ? ColorUtil.getFriendColor() : ColorUtil.getClientColor();
            int alpha = (int) (boxAlpha.getValue() * 255);
            int fillColor = (baseColor & 0x00FFFFFF) | (alpha << 24);
            int outlineColor = baseColor | 0xFF000000;

            if (boxType.isSelected("3D Box")) {
                Box interpBox = player.getDimensions(player.getPose()).getBoxAt(interpX, interpY, interpZ);
                Render3DUtil.drawBox(interpBox, fillColor, 2, true, true, true); // Fill with through walls by default
                Render3DUtil.drawBox(interpBox, outlineColor, 2, true, true, true); // Outline with through walls by default
            }
            
        }
    }

    @EventHandler
    public void onDraw(DrawEvent e) {
        DrawContext context = e.getDrawContext();
        MatrixStack matrix = context.getMatrices();
        FontRenderer font = Fonts.getSize(sizeSetting.getInt(), Fonts.Type.DEFAULT);
        FontRenderer bigFont = Fonts.getSize(sizeSetting.getInt() + 2, Fonts.Type.DEFAULT);
        if (entityType.isSelected("Player")) {
            for (PlayerEntity player : players) {
                if (player == null) continue;
                Vector4d vec4d = ProjectionUtil.getVector4D(player);
                float distance = (float) mc.getEntityRenderDispatcher().camera.getPos().distanceTo(player.getBoundingBox().getCenter());
                boolean friend = FriendUtils.isFriend(player);
                if (distance < 1) continue;
                if (ProjectionUtil.cantSee(vec4d)) continue;
                if (playerSetting.isSelected("Box")) drawBox(friend, vec4d, player);
                if (playerSetting.isSelected("Armor")) drawArmor(context, player, vec4d, font);
                if (playerSetting.isSelected("Hand Items")) drawHands(matrix, player, font, vec4d);
                MutableText text = getTextPlayer(player, friend);
                if (ServerUtil.isAresMine()) {
                    float startX = (float) ProjectionUtil.centerX(vec4d);
                    float startY = (float) (vec4d.y);
                    float width = mc.textRenderer.getWidth(text);
                    float height = mc.textRenderer.fontHeight;
                    float posX = startX - width / 2f;
                    float posY = startY - 11F;
                    blur.render(ShapeProperties.create(matrix,
                                    posX - 2f,
                                    posY - 0.75f,
                                    width + 4f,
                                    height + 1.5f)
                            .round(height / 4f)
                            .color(ColorUtil.HALF_BLACK)
                            .build());
                    context.drawText(mc.textRenderer, text, (int)posX, (int)posY + 1, ColorUtil.getColor(255), false);
                } else {
                    drawText(matrix, text, ProjectionUtil.centerX(vec4d), vec4d.y - 2, font);
                }
            }
        }
        List<Entity> entities = PlayerIntersectionUtil.streamEntities()
                .sorted(Comparator.comparing(ent -> ent instanceof ItemEntity item && item.getStack().getName().getContent().toString().equals("empty")))
                .toList();
        for (Entity entity : entities) {
            if (entity instanceof ItemEntity item && entityType.isSelected("Item")) {
                Vector4d vec4d = ProjectionUtil.getVector4D(entity);
                ItemStack stack = item.getStack();
                ContainerComponent compoundTag = stack.get(DataComponentTypes.CONTAINER);
                List<ItemStack> list = compoundTag != null ? compoundTag.stream().toList() : List.of();
                if (ProjectionUtil.cantSee(vec4d)) continue;
                Text text = item.getStack().getName();
                if (stack.getCount() > 1) text = text.copy().append(Formatting.RESET + " [" + Formatting.RED + stack.getCount() + Formatting.GRAY + "x" + Formatting.RESET + "]");
                if (!list.isEmpty()) drawShulkerBox(context, stack, list, vec4d);
                else drawText(matrix, text, ProjectionUtil.centerX(vec4d), vec4d.y, text.getContent().toString().equals("empty") ? bigFont : font);
            } else if (entity instanceof TntEntity tnt && entityType.isSelected("TNT")) {
                Vector4d vec4d = ProjectionUtil.getVector4D(entity);
                if (ProjectionUtil.cantSee(vec4d)) continue;
                drawText(matrix, tnt.getStyledDisplayName(), ProjectionUtil.centerX(vec4d), vec4d.y, font);
            }
        }
    }

    private void drawBox(boolean friend, Vector4d vec, PlayerEntity player) {
        if (boxType.isSelected("3D Box")) {
            return;
        }
        int client = friend ? ColorUtil.getFriendColor() : ColorUtil.getClientColor();
        int black = ColorUtil.HALF_BLACK;
        float posX = (float) vec.x;
        float posY = (float) vec.y;
        float endPosX = (float) vec.z;
        float endPosY = (float) vec.w;
        float size = (endPosX - posX) / 3;
        if (boxType.isSelected("Corner")) {
            Render2DUtil.drawQuad(posX - 0.5F, posY - 0.5F, size, 0.5F, client);
            Render2DUtil.drawQuad(posX - 0.5F, posY, 0.5F, size + 0.5F, client);
            Render2DUtil.drawQuad(posX - 0.5F, endPosY - size - 0.5F, 0.5F, size, client);
            Render2DUtil.drawQuad(posX - 0.5F, endPosY - 0.5F, size, 0.5F, client);
            Render2DUtil.drawQuad(endPosX - size + 1, posY - 0.5F, size, 0.5F, client);
            Render2DUtil.drawQuad(endPosX + 0.5F, posY, 0.5F, size + 0.5F, client);
            Render2DUtil.drawQuad(endPosX + 0.5F, endPosY - size - 0.5F, 0.5F, size, client);
            Render2DUtil.drawQuad(endPosX - size + 1, endPosY - 0.5F, size, 0.5F, client);
            if (flatBoxOutline.isValue()) {
                Render2DUtil.drawQuad(posX - 1F, posY - 1, size + 1, 1.5F, black);
                Render2DUtil.drawQuad(posX - 1F, posY + 0.5F, 1.5F, size + 0.5F, black);
                Render2DUtil.drawQuad(posX - 1F, endPosY - size - 1, 1.5F, size, black);
                Render2DUtil.drawQuad(posX - 1F, endPosY - 1, size + 1, 1.5F, black);
                Render2DUtil.drawQuad(endPosX - size + 0.5F, posY - 1, size + 1, 1.5F, black);
                Render2DUtil.drawQuad(endPosX, posY + 0.5F, 1.5F, size + 0.5F, black);
                Render2DUtil.drawQuad(endPosX, endPosY - size - 1, 1.5F, size, black);
                Render2DUtil.drawQuad(endPosX - size + 0.5F, endPosY - 1, size + 1, 1.5F, black);
            }
        } else if (boxType.isSelected("Full")) {
            if (flatBoxOutline.isValue()) {
                Render2DUtil.drawQuad(posX - 1F, posY - 1F, endPosX - posX + 2F, 1.5F, black);
                Render2DUtil.drawQuad(posX - 1F, posY - 1F, 1.5F, endPosY - posY + 2F, black);
                Render2DUtil.drawQuad(posX - 1F, endPosY - 1F, endPosX - posX + 2F, 1.5F, black);
                Render2DUtil.drawQuad(endPosX - 0.5F, posY - 1F, 1.5F, endPosY - posY + 2F, black);
            }
            Render2DUtil.drawQuad(posX - 0.5F, posY - 0.5F, endPosX - posX + 1F, 0.5F, client);
            Render2DUtil.drawQuad(posX - 0.5F, posY - 0.5F, 0.5F, endPosY - posY + 1F, client);
            Render2DUtil.drawQuad(posX - 0.5F, endPosY - 0.5F, endPosX - posX + 1F, 0.5F, client);
            Render2DUtil.drawQuad(endPosX, posY - 0.5F, 0.5F, endPosY - posY + 1F, client);
        }
    }

    private void drawArmor(DrawContext context, PlayerEntity player, Vector4d vec, FontRenderer font) {
        MatrixStack matrix = context.getMatrices();
        List<ItemStack> items = new ArrayList<>();
        player.getEquippedItems().forEach(s -> {if (!s.isEmpty()) items.add(s);});
        float posX = (float) (ProjectionUtil.centerX(vec) - items.size() * 5.5);
        float posY = (float) (vec.y - sizeSetting.getInt() / 1.5 - 15);
        float padding = 0.5F;
        float offset = -11;
        if (!items.isEmpty()) {
            matrix.push();
            matrix.translate(posX, posY, 0);
            blur.render(ShapeProperties.create(matrix,
                            -padding,
                            -padding,
                            items.size() * 11 - 1 + padding * 2,
                            10 + padding * 2)
                    .round(2.5F)
                    .color(ColorUtil.HALF_BLACK)
                    .build());
            for (ItemStack stack : items) {
                offset += 11;
                Render2DUtil.defaultDrawStack(context, stack, offset, 0, false, false, 0.5F);
                if (playerSetting.isSelected("Enchants")) {
                    ItemEnchantmentsComponent enchants = EnchantmentHelper.getEnchantments(stack);
                    float enchantY = -font.getFont().getSize() / 1.5F - 2;
                    for (Map.Entry<RegistryKey<Enchantment>, String> entry : encMap.entrySet()) {
                        RegistryKey<Enchantment> enchantment = entry.getKey();
                        String id = entry.getValue();
                        Optional<RegistryEntry<Enchantment>> registryEntry =
                                mc.world.getRegistryManager()
                                        .getOptional(RegistryKeys.ENCHANTMENT)
                                        .flatMap(registry -> registry.getEntry(enchantment.getValue()));
                        if (registryEntry.isPresent() && enchants.getEnchantments().contains(registryEntry.get())) {
                            int level = enchants.getLevel(registryEntry.get());
                            MutableText enchantText = Text.literal(id + level);
                            float textWidth = font.getStringWidth(enchantText);
                            float textX = offset + 9f - textWidth / 2;
                            float textY = enchantY + 8;
                            drawText(matrix, enchantText, textX, textY, font);
                            enchantY -= font.getFont().getSize() / 1.5F + 1;
                        }
                    }
                }
            }
            matrix.pop();
        }
    }

    private void drawHands(MatrixStack matrix, PlayerEntity player, FontRenderer font, Vector4d vec) {
        double posY = vec.w;
        for (ItemStack stack : player.getHandItems()) {
            if (stack.isEmpty()) continue;
            MutableText text = Text.empty().append(stack.getName());
            if (stack.getCount() > 1) text.append(Formatting.RESET + " [" + Formatting.RED + stack.getCount() + Formatting.GRAY + "x" + Formatting.RESET + "]");
            posY += font.getStringHeight(text) / 2 + 3;
            drawText(matrix, text, ProjectionUtil.centerX(vec), posY, font);
        }
    }

    private void drawShulkerBox(DrawContext context, ItemStack itemStack, List<ItemStack> stacks, Vector4d vec) {
        MatrixStack matrix = context.getMatrices();
        int width = 176;
        int height = 67;
        int color = ColorUtil.multBright(ColorUtil.replAlpha(((BlockItem) itemStack.getItem()).getBlock().getDefaultMapColor().color, 1F), 1);
        matrix.push();
        matrix.translate(ProjectionUtil.centerX(vec) - (double) width / 4, vec.w + 2, -200 + Math.cos(vec.x));
        matrix.scale(0.5F, 0.5F, 1);
        context.drawTexture(RenderLayer::getGuiTextured, TEXTURE, 0, 0, 0, 0, width, height, width, height, color);
        int posX = 7;
        int posY = 6;
        for (ItemStack stack : stacks.stream().toList()) {
            Render2DUtil.defaultDrawStack(context, stack, posX, posY, false, true, 1);
            posX += 18;
            if (posX >= 165) {
                posY += 18;
                posX = 7;
            }
        }
        matrix.pop();
    }

    private void drawText(MatrixStack matrix, Text text, double startX, double startY, FontRenderer font) {
        int paddingX = 2;
        float paddingY = 0.75F;
        float height = font.getFont().getSize() / 1.5F;
        float width = font.getStringWidth(text);
        float posX = (float) (startX - width / 2);
        float posY = (float) startY - height;
        blur.render(ShapeProperties.create(matrix, posX - paddingX, posY - paddingY, width + paddingX * 2, height + paddingY * 2)
                .round(height / 4).color(ColorUtil.HALF_BLACK).build());
        font.drawText(matrix, text, posX, posY + 3);
    }

    private MutableText getTextPlayer(PlayerEntity player, boolean friend) {
        float health = PlayerIntersectionUtil.getHealth(player);
        MutableText text = Text.empty();
        if (friend) text.append("[" + Formatting.GREEN + "F" + Formatting.RESET + "] ");
        if (AntiBot.getInstance().isBot(player)) text.append("[" + Formatting.DARK_RED + "BOT" + Formatting.RESET + "] ");
        if (playerSetting.isSelected("NameTags")) text.append(player.getDisplayName()); else text.append(player.getName());
        if (player.getOffHandStack().getItem().equals(Items.PLAYER_HEAD) || player.getOffHandStack().getItem().equals(Items.TOTEM_OF_UNDYING))
            text.append(Formatting.RESET + getSphere(player.getOffHandStack()));
        if (health >= 0 && health <= player.getMaxHealth())
            text.append(Formatting.RESET + " [" + Formatting.RED + PlayerIntersectionUtil.getHealthString(player) + Formatting.RESET + "]");
        return text;
    }

    private String getSphere(ItemStack stack) {
        var component = stack.get(DataComponentTypes.CUSTOM_DATA);
        if (ServerUtil.isFunTime() && component != null) {
            NbtCompound compound = component.copyNbt();
            if (compound.getInt("tslevel") != 0) {
                return " [" + Formatting.GOLD + compound.getString("don-item").replace("sphere-", "").toUpperCase() + Formatting.RESET + "]";
            }
        }
        return "";
    }
}
 
пиздец, типок тупо с блинка вырезал рендер бокса и всунул в есп :goplol:
 
по коду - не годно
а так - красиво, не слушай никого
 
Назад
Сверху Снизу