Визуальная часть Адекватные EntityESP с ClientFonts | EvaWare 3.1

Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
/del паста
 
если что данные есп работают ТОЛЬКО с ClientFonts если у вас их нету либо добавлять либо менять на Fonts
SS: Прикрепил ниже
-----------------------------------
Код EntityESP:

Код:
Expand Collapse Copy
package vesence.recode.modules.impl.render;

import com.google.common.eventbus.Subscribe;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.systems.RenderSystem;

import net.minecraft.client.gui.DisplayEffectsScreen;
import net.minecraft.client.renderer.texture.PotionSpriteUploader;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.MobEntity;
import net.minecraft.entity.passive.AnimalEntity;
import net.minecraft.potion.Effect;
import vesence.recode.VesenceRecode;
import vesence.recode.commandstorage.FriendStorage;
import vesence.recode.events.EventDisplay;
import vesence.recode.modules.api.Category;
import vesence.recode.modules.api.Module;
import vesence.recode.modules.api.ModuleManager;
import vesence.recode.modules.api.ModuleRegister;
import vesence.recode.modules.impl.misc.NameProtect;
import vesence.recode.modules.settings.impl.BooleanSetting;
import vesence.recode.modules.settings.impl.ColorSetting;
import vesence.recode.modules.settings.impl.ModeListSetting;
import vesence.recode.utils.math.MathUtil;
import vesence.recode.utils.math.Vector4i;
import vesence.recode.utils.projections.ProjectionUtil;
import vesence.recode.utils.render.color.ColorUtils;
import vesence.recode.utils.render.rect.DisplayUtils;
import vesence.recode.utils.render.font.Fonts;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.I18n;
import net.minecraft.client.settings.PointOfView;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.item.ItemEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.nbt.CompoundNBT;
import net.minecraft.nbt.ListNBT;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.Score;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Vector2f;
import net.minecraft.util.math.vector.Vector3d;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.*;
import vesence.recode.utils.text.font.ClientFonts;
import org.lwjgl.opengl.GL11;

import java.util.*;

import static net.minecraft.client.renderer.WorldRenderer.frustum;
import static org.lwjgl.opengl.GL11.glScalef;
import static org.lwjgl.opengl.GL11.glTranslatef;

@ModuleRegister(name = "EntityESP", category = Category.Visuals, description = "123")
public class NameTags extends Module {
    public BooleanSetting tags = new BooleanSetting("NameTags", true);
    public ModeListSetting remove = new ModeListSetting("Убрать", new BooleanSetting("Боксы", false), new BooleanSetting("Полоску хп", false), new BooleanSetting("Зачарования", false), new BooleanSetting("Список эффектов", false).setVisible(() -> tags.get()));
    public ModeListSetting targets = new ModeListSetting("Отображать",
            new BooleanSetting("Себя", true),
            new BooleanSetting("Игроки", true),
            new BooleanSetting("Предметы", false),
            new BooleanSetting("Мобы", false)
    ).setVisible(() -> tags.get());
    float healthAnimation = 0.0f;

    public NameTags() {
        addSettings(tags,targets, remove);
    }

    float length;

    private final HashMap<Entity, Vector4f> positions = new HashMap<>();

    public ColorSetting color = new ColorSetting("Color", -1);

    @Subscribe
    public void onDisplay(EventDisplay e) {
        if (mc.world == null || e.getType() != EventDisplay.Type.PRE) {
            return;
        }

        positions.clear();

        Vector4i colors = new Vector4i(Theme.getColor(0), Theme.getColor(0),Theme.getColor(0), Theme.getColor(0));
        Vector4i friendColors = new Vector4i(ColorUtils.rgb(144, 238, 144), ColorUtils.rgb(144, 238, 144),ColorUtils.rgb(144, 238, 144), ColorUtils.rgb(144, 238, 144));

        for (Entity entity : mc.world.getAllEntities()) {
            if (!isValid(entity)) continue;
            if (!(entity instanceof PlayerEntity && entity != mc.player && targets.getValueByName("Игроки").get()
                    || entity instanceof ItemEntity && targets.getValueByName("Предметы").get()
                    || (entity instanceof AnimalEntity || entity instanceof MobEntity) && targets.getValueByName("Мобы").get()
                    || entity == mc.player && targets.getValueByName("Себя").get() && !(mc.gameSettings.getPointOfView() == PointOfView.FIRST_PERSON) && !VesenceRecode.getInstance().getModuleManager().getWorldTweaks().child
            )) continue;

            double x = MathUtil.interpolate(entity.getPosX(), entity.lastTickPosX, e.getPartialTicks());
            double y = MathUtil.interpolate(entity.getPosY(), entity.lastTickPosY, e.getPartialTicks());
            double z = MathUtil.interpolate(entity.getPosZ(), entity.lastTickPosZ, e.getPartialTicks());

            Vector3d size = new Vector3d(entity.getBoundingBox().maxX - entity.getBoundingBox().minX, entity.getBoundingBox().maxY - entity.getBoundingBox().minY, entity.getBoundingBox().maxZ - entity.getBoundingBox().minZ);

            AxisAlignedBB aabb = new AxisAlignedBB(x - size.x / 2f, y, z - size.z / 2f, x + size.x / 2f, y + size.y, z + size.z / 2f);

            Vector4f position = null;
            for (int i = 0; i < 8; i++) {
                Vector2f vector = ProjectionUtil.project(i % 2 == 0 ? aabb.minX : aabb.maxX, (i / 2) % 2 == 0 ? aabb.minY : aabb.maxY, (i / 4) % 2 == 0 ? aabb.minZ : aabb.maxZ);

                if (position == null) {
                    position = new Vector4f(vector.x, vector.y, 1, 1.0f);
                } else {
                    position.x = Math.min(vector.x, position.x);
                    position.y = Math.min(vector.y, position.y);
                    position.z = Math.max(vector.x, position.z);
                    position.w = Math.max(vector.y, position.w);
                }
            }

            positions.put(entity, position);
        }


        RenderSystem.enableBlend();
        RenderSystem.disableTexture();
        RenderSystem.defaultBlendFunc();
        RenderSystem.shadeModel(7425);

        buffer.begin(7, DefaultVertexFormats.POSITION_COLOR);
        for (Map.Entry<Entity, Vector4f> entry : positions.entrySet()) {
            Vector4f position = entry.getValue();
            if (entry.getKey() instanceof LivingEntity entity) {
                if (!remove.getValueByName("Боксы").get()) {
                    DisplayUtils.drawBox(position.x - 0.5f, position.y - 0.5f, position.z + 0.5f, position.w + 0.5f, 2, ColorUtils.rgba(0, 0, 0, 128));
                    DisplayUtils.drawBoxTest(position.x, position.y, position.z, position.w, 1, FriendStorage.isFriend(entity.getName().getString()) ? friendColors : colors);
                }
                float hpOffset = 3f;
                float out = 0.5f;
                if (!remove.getValueByName("Полоску хп").get()) {
                    String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();

                    DisplayUtils.drawRectBuilding(position.x - hpOffset - out, position.y - out, position.x - hpOffset + 1 + out, position.w + out, ColorUtils.rgba(0, 0, 0, 128));
                    DisplayUtils.drawRectBuilding(position.x - hpOffset, position.y, position.x - hpOffset + 1, position.w, ColorUtils.rgba(0, 0, 0, 128));
                    float hp = entity.getHealth();
                    float maxHp = entity.getMaxHealth();
                    Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));
                    if (entity instanceof PlayerEntity) {
                        if (score.getScorePoints() != 0){
                            hp = score.getScorePoints();
                        }
                    }
                    DisplayUtils.drawMCVerticalBuilding(position.x - hpOffset, position.y + (position.w - position.y) * (1 - MathHelper.clamp(hp / maxHp, 0, 1)), position.x - hpOffset + 1, position.w, FriendStorage.isFriend(entity.getName().getString()) ? friendColors.w : colors.w, FriendStorage.isFriend(entity.getName().getString()) ? friendColors.x : colors.x);
                }
            }
        }
        Tessellator.getInstance().draw();
        RenderSystem.shadeModel(7424);
        RenderSystem.enableTexture();
        RenderSystem.disableBlend();

        for (Map.Entry<Entity, Vector4f> entry : positions.entrySet()) {
            Entity entity = entry.getKey();

            if (entity instanceof LivingEntity living) {
                float hp = living.getHealth();
                float maxHp = living.getMaxHealth();
                String header = mc.ingameGUI.getTabList().header == null ? " " : mc.ingameGUI.getTabList().header.getString().toLowerCase();
                ModuleManager moduleManager = VesenceRecode.getInstance().getModuleManager();
                Score score = mc.world.getScoreboard().getOrCreateScore(entity.getScoreboardName(), mc.world.getScoreboard().getObjectiveInDisplaySlot(2));
                if (entity instanceof PlayerEntity) {
                    if (score.getScorePoints() != 0){
                        hp = score.getScorePoints();
                    }
                }

                Vector4f position = entry.getValue();
                float width = position.z - position.x;

                GL11.glPushMatrix();

                String friendPrefix = FriendStorage.isFriend(entity.getName().getString()) ? TextFormatting.GREEN + "[F] " : "";
                String creativePrefix = "";
                if (entity instanceof PlayerEntity && ((PlayerEntity) entity).isCreative()) {
                    creativePrefix = TextFormatting.GRAY + " [" + TextFormatting.RED + "GM" + TextFormatting.GRAY + "]";
                } else {
                    if (mc.getCurrentServerData() != null && mc.getCurrentServerData().serverIP.contains("funtime") && (header.contains("анархия") || header.contains("гриферский"))) {
                        creativePrefix = TextFormatting.GRAY + " [" + TextFormatting.RED + (int) hp + TextFormatting.GRAY + "]";
                    } else {
                        creativePrefix = TextFormatting.GRAY + " [" + TextFormatting.RED + ((int) hp + (int) living.getAbsorptionAmount()) + TextFormatting.GRAY + "]";
                    }
                }

                healthAnimation = MathUtil.fast(healthAnimation, MathHelper.clamp(hp / maxHp, 0, 1), 10);
                NameProtect nameProtect = moduleManager.getNameProtect();
                TextComponent name = (TextComponent) ITextComponent.getTextComponentOrEmpty(friendPrefix);
                int colorRect = FriendStorage.isFriend(entity.getName().getString()) ? ColorUtils.rgba(66, 163, 60, 120) : ColorUtils.rgba(10, 10, 10, 120);
                name.append(FriendStorage.isFriend(entity.getName().getString()) && nameProtect.isState() ? ITextComponent.getTextComponentOrEmpty(TextFormatting.RED + "protected") : entity.getDisplayName());
                name.appendString(creativePrefix);
                glCenteredScale(position.x + width / 2f - length / 2f - 4, position.y - 9, length + 8, 13, 0.5f);

                length = ClientFonts.interRegular[24].getWidth(name.getString());
                DisplayUtils.drawRoundedRect(position.x + width / 2f - length / 2f -12.5f, position.y - 16.3f, length + 16, 17, 2,ColorUtils.rgba(17,17,17,140));
                Fonts.damage.drawText(e.getMatrixStack(),"C",position.x + width / 2f - length / 2f - 11,position.y - 12.5f,ColorUtils.red,10);
                ClientFonts.interRegular[24].drawString(e.getMatrixStack(), name.getString(), position.x + width / 2f - length / 2f, position.y - 12.5f, -1);

                if (entity instanceof PlayerEntity) {
                    PlayerEntity player = (PlayerEntity)entity;
                    ItemStack stack = player.getHeldItemOffhand();
                    String nameS = "";
                    String itemName = stack.getDisplayName().getString();
                    if (stack.getItem() == Items.PLAYER_HEAD) {
                        CompoundNBT tag = stack.getTag();
                        if (tag != null && tag.contains("display", 10)) {
                            CompoundNBT display = tag.getCompound("display");
                            if (display.contains("Lore", 9)) {
                                ListNBT lore = display.getList("Lore", 8);
                                if (!lore.isEmpty()) {
                                    String firstLore = lore.getString(0);
                                    int levelIndex = firstLore.indexOf("Уровень");
                                    if (levelIndex != -1) {
                                        String levelString = firstLore.substring(levelIndex + "Уровень".length()).trim();
                                        if (levelString.contains("1/3")) {
                                            nameS = "- 1/3]";
                                        } else if (levelString.contains("2/3")) {
                                            nameS = "- 2/3]";
                                        } else if (levelString.contains("MAX")) {
                                            nameS = "- MAX]";
                                        } else {
                                            nameS = "";
                                        }
                                    }
                                }

                            }

                            if (itemName.contains("Пандора")) {
                                itemName = "Пандора ";
                            } else if (itemName.contains("Аполлона")) {
                                itemName = "Апалона ";
                            } else if (itemName.contains("Титанка")) {
                                itemName = "Титана ";
                            } else if (itemName.contains("Осириса")) {
                                itemName = "Осириса ";
                            } else if (itemName.contains("Андромеды")) {
                                itemName = "Андромеда";
                            } else if (itemName.contains("Химеры")) {
                                itemName = "Химера ";
                            } else if (itemName.contains("Астрея")) {
                                itemName = "Астрея ";
                            }

                            ClientFonts.interRegular[24].drawCenteredString(e.getMatrixStack(), itemName + nameS, position.x + 23.0F, position.y - 60.0F, ColorUtils.rgb(255, 16, 16));
                        }
                    }
                }

                if (entity instanceof PlayerEntity) {
                    PlayerEntity player = (PlayerEntity)entity;
                    ItemStack stack = player.getHeldItemOffhand();
                    String nameS = "";
                    String itemName = stack.getDisplayName().getString();
                    if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
                        CompoundNBT tag = stack.getTag();
                        if (tag != null && tag.contains("display", 10)) {
                            CompoundNBT display = tag.getCompound("display");
                            if (display.contains("Lore", 9)) {
                                ListNBT lore = display.getList("Lore", 8);
                                if (!lore.isEmpty()) {
                                    String firstLore = lore.getString(0);
                                    int levelIndex = firstLore.indexOf("Уровень");
                                    if (levelIndex != -1) {
                                        String levelString = firstLore.substring(levelIndex + "Уровень".length()).trim();
                                        if (levelString.contains("1/3")) {
                                            nameS = "- 1/3]";
                                        } else if (levelString.contains("2/3")) {
                                            nameS = "- 2/3]";
                                        } else if (levelString.contains("MAX")) {
                                            nameS = "- MAX]";
                                        } else {
                                            nameS = "";
                                        }
                                    }
                                }
                            }
                        }

                        if (itemName.contains("Талисман Ехидны")) {
                            itemName = "[EXIDNA ";
                        } else if (itemName.contains("Талисман Гармонии")) {
                            itemName = "[GARMONIYA ";
                        } else if (itemName.contains("Талисма Крушителя")) {
                            itemName = "[KRUSH ";
                        } else if (itemName.contains("Талисман Карателя")) {
                            itemName = "[KARATELYA ";
                        } else if (itemName.contains("Талисман Грани")) {
                            itemName = "[GRANI ";
                        } else if (itemName.contains("Талисман Тритона")) {
                            itemName = "[TRITONA ";
                        } else if (itemName.contains("Талисман Феникса")) {
                            itemName = "[FENIKSA ";
                        }

                        ClientFonts.interRegular[24].drawCenteredString(e.getMatrixStack(), itemName + nameS, position.x + 23.0F, position.y - 60.0F, ColorUtils.rgb(255, 16, 16));
                    }

                }
                GL11.glPopMatrix();

                if (!remove.getValueByName("Список эффектов").get()) {
                    drawPotions(e.getMatrixStack(), living, position.z + 2, position.y);
                }
                drawItems(e.getMatrixStack(), living, (int) (position.x + width / 2f), (int) (position.y - 14.5f));
            } else if (entity instanceof ItemEntity item) {
                Vector4f position = entry.getValue();
                float width = position.z - position.x;
                float length = mc.fontRenderer.getStringPropertyWidth(entity.getDisplayName());
//                float length = ClientFonts.msBold[24].getWidth(entity.getDisplayName().getString());
                GL11.glPushMatrix();

                glCenteredScale(position.x + width / 2f - length / 2f, position.y - 7, length, 10, 0.5f);

                mc.fontRenderer.func_243246_a(e.getMatrixStack(), entity.getDisplayName(), position.x + width / 2f - length / 2f, position.y - 7, -1);
//                ClientFonts.msBold[24].drawString(e.getMatrixStack(), entity.getDisplayName(), position.x + width / 2f - length / 2f, position.y - 7, -1);
                GL11.glPopMatrix();
            }
        }
    }

    public boolean isInView(Entity ent) {

        if (mc.getRenderViewEntity() == null) {
            return false;
        }
        frustum.setCameraPosition(mc.getRenderManager().info.getProjectedView().x, mc.getRenderManager().info.getProjectedView().y, mc.getRenderManager().info.getProjectedView().z);
        return frustum.isBoundingBoxInFrustum(ent.getBoundingBox()) || ent.ignoreFrustumCheck;
    }
    int index = 0;
    private void drawPotions(MatrixStack matrixStack, LivingEntity entity, float posX, float posY) {
        for (Iterator var8 = entity.getActivePotionEffects().iterator(); var8.hasNext(); ++index) {
            EffectInstance effectInstance = (EffectInstance)var8.next();

            int amp = effectInstance.getAmplifier() + 1;
            String ampStr = "";

            if (amp >= 1 && amp <= 9) {
                ampStr = " " + I18n.format("enchantment.level." + (amp + 1));
            }

            String text = I18n.format(effectInstance.getEffectName(), new Object[0]) + ampStr + " - " + EffectUtils.getPotionDurationString(effectInstance, 1);
            PotionSpriteUploader potionspriteuploader = mc.getPotionSpriteUploader();
            Effect effect = effectInstance.getPotion();
            int iconSize = 8;
            TextureAtlasSprite textureatlassprite = potionspriteuploader.getSprite(effect);
            mc.getTextureManager().bindTexture(textureatlassprite.getAtlasTexture().getTextureLocation());
            DisplayEffectsScreen.blit(matrixStack, (int)posX,  (int)posY - 1, iconSize, iconSize, iconSize, textureatlassprite);

            Fonts.consolas.drawTextWithOutline(matrixStack, text, posX + iconSize, posY, -1, 6, 0.05f);
            posY += Fonts.consolas.getHeight(6) + 4;
        }
    }

    private void drawItems(MatrixStack matrixStack, LivingEntity entity, int posX, int posY) {
        int size = 8;
        int padding = 6;

        float fontHeight = Fonts.consolas.getHeight(6);

        List<ItemStack> items = new ArrayList<>();

        ItemStack mainStack = entity.getHeldItemMainhand();

        if (!mainStack.isEmpty()) {
            items.add(mainStack);
        }

        for (ItemStack itemStack : entity.getArmorInventoryList()) {
            if (itemStack.isEmpty()) continue;
            items.add(itemStack);
        }

        ItemStack offStack = entity.getHeldItemOffhand();

        if (!offStack.isEmpty()) {
            items.add(offStack);
        }

        posX -= (items.size() * (size + padding)) / 2f;

        for (ItemStack itemStack : items) {
            if (itemStack.isEmpty()) continue;

            GL11.glPushMatrix();

            glCenteredScale(posX, posY - 5, size / 2f, size / 2f, 0.5f);

            mc.getItemRenderer().renderItemAndEffectIntoGUI(itemStack, posX, posY - 5);
            mc.getItemRenderer().renderItemOverlayIntoGUI(mc.fontRenderer, itemStack, posX, posY - 5, null);

            GL11.glPopMatrix();

            if (itemStack.isEnchanted() && !remove.getValueByName("Зачарования").get()) {
                int ePosY = (int) (posY - fontHeight);

                Map<Enchantment, Integer> enchantmentsMap = EnchantmentHelper.getEnchantments(itemStack);

                for (Enchantment enchantment : enchantmentsMap.keySet()) {
                    int level = enchantmentsMap.get(enchantment);

                    if (level < 1 || !enchantment.canApply(itemStack)) continue;

                    IFormattableTextComponent iformattabletextcomponent = new TranslationTextComponent(enchantment.getName());

                    String enchText = iformattabletextcomponent.getString().substring(0, 2) + level;

                    Fonts.consolas.drawText(matrixStack, enchText, posX, ePosY - 5, -1, 6, 0.05f);

                    ePosY -= (int) fontHeight;
                }
            }

            posX += size + padding;
        }
    }

    public boolean isValid(Entity e) {
        if (e instanceof PlayerEntity p) {
            if (!e.getUniqueID().equals(PlayerEntity.getOfflineUUID(p.getGameProfile().getName()))) {
                return false;
            }
        }
        return isInView(e);
    }

    public static void drawMcRect(
            double left,
            double top,
            double right,
            double bottom,
            int color) {
        if (left < right) {
            double i = left;
            left = right;
            right = i;
        }

        if (top < bottom) {
            double j = top;
            top = bottom;
            bottom = j;
        }

        float f3 = (float) (color >> 24 & 255) / 255.0F;
        float f = (float) (color >> 16 & 255) / 255.0F;
        float f1 = (float) (color >> 8 & 255) / 255.0F;
        float f2 = (float) (color & 255) / 255.0F;
        BufferBuilder bufferbuilder = Tessellator.getInstance().getBuffer();

        bufferbuilder.pos(left, bottom, 1.0F).color(f, f1, f2, f3).endVertex();
        bufferbuilder.pos(right, bottom, 1.0F).color(f, f1, f2, f3).endVertex();
        bufferbuilder.pos(right, top, 1.0F).color(f, f1, f2, f3).endVertex();
        bufferbuilder.pos(left, top, 1.0F).color(f, f1, f2, f3).endVertex();

    }

    public void glCenteredScale(final float x, final float y, final float w, final float h, final float f) {
        glTranslatef(x + w / 2, y + h / 2, 0);
        glScalef(f, f, 1);
        glTranslatef(-x - w / 2, -y - h / 2, 0);
    }
}

Вроде это самые адекватные EntityESP которые сливали да и ещё на EvaWare/3.1
Жду оценочек! :bayan:
/del /paste сливали
 
Назад
Сверху Снизу