Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
/del /paste сливалиесли что данные есп работают ТОЛЬКО с ClientFonts если у вас их нету либо добавлять либо менять на Fonts
SS: Прикрепил ниже
-----------------------------------
Код EntityESP:
Код: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
Жду оценочек!![]()
Скачять паста юзер учить руссикесли что данные есп работают ТОЛЬКО с ClientFonts если у вас их нету либо добавлять либо менять на Fonts
SS: Прикрепил ниже
-----------------------------------
Код EntityESP:
Код: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
Жду оценочек!![]()
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz