-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
Доделанный худ из HudFunction в expensive 2.0
Код:
package Anova.modules.impl.render;
import Anova.modules.settings.imp.ModeSetting;
import Anova.ui.midnight.StyleManager;
import Anova.util.misc.TimerUtil;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import lombok.Getter;
import net.minecraft.client.MainWindow;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.AbstractClientPlayerEntity;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.network.play.NetworkPlayerInfo;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldVertexBufferUploader;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.item.AirItem;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.potion.EffectInstance;
import net.minecraft.potion.EffectUtils;
import net.minecraft.scoreboard.ScorePlayerTeam;
import net.minecraft.scoreboard.Team;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Matrix4f;
import net.minecraft.util.math.vector.Vector4f;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.StringTextComponent;
import net.minecraft.world.GameType;
import org.joml.Vector2i;
import org.joml.Vector4i;
import org.lwjgl.opengl.GL11;
import Anova.Initilization;
import Anova.events.Event;
import Anova.events.impl.player.EventUpdate;
import Anova.events.impl.render.EventRender;
import Anova.managment.Managment;
import Anova.modules.Function;
import Anova.modules.FunctionModule;
import Anova.modules.Category;
import Anova.modules.settings.imp.BooleanOption;
import Anova.modules.settings.imp.MultiBoxSetting;
import Anova.modules.settings.imp.SliderSetting;
import Anova.util.ClientUtil;
import Anova.util.animations.Animation;
import Anova.util.animations.Direction;
import Anova.util.animations.impl.EaseBackIn;
import Anova.util.drag.Dragging;
import Anova.util.font.Fonts;
import Anova.util.font.styled.StyledFont;
import Anova.util.math.MathUtil;
import Anova.util.misc.HudUtil;
import Anova.util.render.BloomHelper;
import Anova.util.render.ColorUtil;
import Anova.util.render.RenderUtil;
import Anova.util.render.animation.AnimationMath;
import Anova.util.render.RenderUtil.SmartScissor;
import java.awt.*;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.List;
import java.util.concurrent.atomic.AtomicReference;
import java.util.regex.Pattern;
import java.text.SimpleDateFormat;
import java.util.Date;
import static Anova.modules.impl.render.HudFunction.Status.*;
import static Anova.modules.impl.render.HudFunction.Status.VANISHED;
import static Anova.ui.alt.AltManager.white;
import static Anova.ui.clickgui.Window.dark;
import static Anova.util.render.ColorUtil.rgba;
import static Anova.util.render.RenderUtil.Render2D.*;
/**
* @author Swoe228
* @since 23.07.2024
*/
@FunctionModule(name = "HUD", type = Category.Render)
public class HUD2 extends Function {
int firstColor;
int secondColor;
public final MultiBoxSetting elements = new MultiBoxSetting("Элементы",
new BooleanOption("Ватермарка", true),
new BooleanOption("Активные функции", true),
new BooleanOption("Активный таргет", true),
new BooleanOption("Активные стаффы", true),
new BooleanOption("Активные бинды", true),
new BooleanOption("Активные эффекты", true),
new BooleanOption("Таймер", true),
new BooleanOption("Броня",true)
);
public static final BooleanOption Renderutils = new BooleanOption("Невьебический рендер",false);
List<Function> sortedFunctions = new ArrayList<>();
TimerUtil delay = new TimerUtil();
public HUD2() {
addsetting(elements,Renderutils);
}
final float round_degree = 3;
final float cWidth = 4;
final Vector4f left_vec = new Vector4f(round_degree, round_degree, 0, 0);
final Vector4f right_vec = new Vector4f(0, 0, round_degree, round_degree);
final int b_color = new Color(0, 0, 0, 128).getRGB();
final int t_color = Color.WHITE.getRGB();
int[] colors = new int[360];
final StyledFont icons = Fonts.icons1[20];
final StyledFont medium = Fonts.msMedium[16];
final StyledFont small = Fonts.msMedium[14];
MainWindow window;
List<Function> functions = new ArrayList<>();
public Dragging potionStatus = Initilization.createDrag(this, "PotionStatus", 200, 50);
final Dragging keyBinds = Initilization.createDrag(this, "KeyBinds-new", 10, 100);
final Dragging staffList = Initilization.createDrag(this, "StaffList-new", 10, 200);
private final Animation targetHudAnimation = new EaseBackIn(200, 1, 1.5f);
final Dragging timerHUD = Initilization.createDrag(this, "TimerHUD-new", 10, 400);
Animation tHudAnimation = new EaseBackIn(400, 1, 1.5f);
PlayerEntity target = null;
private final Pattern namePattern = Pattern.compile("^\\w{3,16}$");
private final Pattern prefixMatches = Pattern.compile(".*(mod|der|stager|adm|help|wne|мод|хелп|помо|адм|владе|отри|таф|taf|curat|курато|dev|раз|supp|сапп|yt|ютуб).*");
@Override
public void onEventModule(Event event) {
if (mc.player == null || mc.world == null) return;
if (event instanceof EventUpdate) {
staffPlayers.clear();
for (ScorePlayerTeam team : mc.world.getScoreboard().getTeams().stream().sorted(Comparator.comparing(Team::getName)).toList()) {
String name = team.getMembershipCollection().toString();
name = name.substring(1, name.length() - 1);
if (namePattern.matcher(name).matches()) {
if (prefixMatches.matcher(team.getPrefix().getString().toLowerCase(Locale.ROOT)).matches() || Managment.STAFF_MANAGER.isStaff(name)) {
}
}
}
if (Managment.FUNCTION_MANAGER.getFunctions().isEmpty() || !functions.isEmpty()) return;
updateFunctions();
}
if (event instanceof EventRender e && e.isRender2D()) {
for (int i = 0; i < colors.length; i++) {
colors[i] = Managment.STYLE_MANAGER.getCurrentStyle().getColor(i);
}
window = e.scaledResolution;
final MatrixStack matrixStack = e.matrixStack;
if (elements.get(0)) renderWatermark(matrixStack);
if (elements.get(1)) renderArrayList(matrixStack);
if (elements.get(2)) onRenderTargetHUD(matrixStack);
if (elements.get(3)) onStaffListRender(matrixStack, e);
if (elements.get(4)) onKeyBindsRender(matrixStack);
if (elements.get(5)) renderPotions(matrixStack,e);
if (elements.get(6))renderTimer(matrixStack);
if (elements.get(7)) RenderArmor(e);
}
}
private void renderWatermark(MatrixStack matrixStack) {
final Vector4i colorVec = new Vector4i(
ColorUtil.getColorStyle(0),
ColorUtil.getColorStyle(90),
ColorUtil.getColorStyle(180),
ColorUtil.getColorStyle(270)
);
int roundDegree = 4;
int headerHeight = 14;
//Время
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
String time = now.format(formatter);
final String title = " | " + " " + time + " " + " | " + " " + mc.debugFPS + " " + " | " + " " + HudUtil.calculatePing();
final String gradientText = "anova gamma ";
// Координаты ватермарки
final float x = 1;
final float y = 1;
final float titleWidth = Fonts.gilroyBold[15].getWidth(gradientText + title) + 45;
final float titleHeight = 18;
drawShadow(x, y, titleWidth, titleHeight, 5, colorVec.x, colorVec.y, colorVec.w, colorVec.z);
drawGradientRound(x, y, titleWidth, titleHeight + headerHeight + 2.5f, roundDegree, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
drawRoundedRect(x, y, titleWidth, titleHeight, 3, rgba(20, 20, 20, 255));
Fonts.gilroyBold[18].drawString(matrixStack, gradientText, x + 3, y + Fonts.gilroyBold[18].getFontHeight() / 2f + 0.3f, ColorUtil.getColorStyle(255));
Fonts.gilroyBold[18].drawString(matrixStack, title, x + Fonts.gilroyBold[18].getWidth(gradientText) + 3.5f, y + Fonts.gilroyBold[18].getFontHeight() / 2f + 0.3f, ColorUtil.getColorStyle(255));
}
private void RenderArmor(final EventRender renderEvent) {
int count = 0;
for (int i = 0; i < mc.player.inventory.getSizeInventory(); i++) {
ItemStack s = mc.player.inventory.getStackInSlot(i);
if (s.getItem() == Items.TOTEM_OF_UNDYING) {
count++;
}
}
float xPos = renderEvent.scaledResolution.scaledWidth() / 2f;
float yPos = renderEvent.scaledResolution.scaledHeight();
boolean totemInInv = mc.player.inventory.mainInventory.stream().map(ItemStack::getItem).toList().contains(Items.TOTEM_OF_UNDYING);
int off = totemInInv ? +5 : 0;
if (mc.player.isCreative()) {
yPos += 17;
}
for (ItemStack s : mc.player.inventory.armorInventory) {
ESPFunction.drawItemStack(s, xPos - off + 74 * (mc.gameSettings.guiScale / 2f), yPos - 56 * (mc.gameSettings.guiScale / 2f), null, false);
off += 15;
}
if (totemInInv)
ESPFunction.drawItemStack(new ItemStack(Items.TOTEM_OF_UNDYING), xPos - off + 73 * (mc.gameSettings.guiScale / 2f), yPos - 56 * (mc.gameSettings.guiScale / 2f), String.valueOf(count), false);
}
int fontSize = 18;
private void renderArrayList(MatrixStack stack) {
float x = 1;
float y = 25;
float height = 10;
float yOffset = 0;
final StyledFont font = Fonts.gilroyBold[fontSize];
StyleManager styleManager = Managment.STYLE_MANAGER;
if (delay.hasTimeElapsed(10000)) {
sortedFunctions = HudUtil.getSorted(font);
delay.reset();
}
float gradientForce = 1;
int fontOffset = (fontSize > 14 ? -14 + fontSize
- (fontSize > 14 ? 1 : 0) : 0);
int firstColor;
int secondColor;
for (Function function : sortedFunctions) {
function.animation = AnimationMath.lerp(function.animation, function.state ? 1 : 0, 15);
if (function.animation >= 0.01) {
float width = font.getWidth(function.name) + 5;
firstColor = styleManager.getCurrentStyle()
.getColor((int) ((yOffset + height * function.animation) * gradientForce));
secondColor = styleManager.getCurrentStyle()
.getColor((int) (yOffset * gradientForce));
RenderSystem.pushMatrix();
RenderSystem.translatef(x + width / 2F, y + yOffset, 0);
RenderSystem.scalef(1, function.animation, 1);
RenderSystem.translatef(-(x + width / 2F), -(y + yOffset), 0);
drawShadow(x, y + yOffset, width, height, 10, firstColor, secondColor);
RenderSystem.popMatrix();
yOffset += height * function.animation;
}
}
yOffset = 0;
for (Function function : sortedFunctions) {
function.animation = AnimationMath.lerp(function.animation, function.state ? 1 : 0, 15);
if (function.animation >= 0.01) {
float width = font.getWidth(function.name) + 5;
secondColor = styleManager.getCurrentStyle()
.getColor((int) (yOffset * gradientForce));
RenderSystem.pushMatrix();
RenderSystem.translatef(x + width / 2F, y + yOffset, 0);
RenderSystem.scalef(1, function.animation, 1);
RenderSystem.translatef(-(x + width / 2F), -(y + yOffset), 0);
RenderUtil.Render2D.drawRect(x, y + yOffset, width, height, rgba(21, 21, 21, 200));
font.drawString(stack, function.name, x + 3,
y + yOffset + font.getFontHeight() / 2f - fontOffset - 1, secondColor);
RenderSystem.popMatrix();
yOffset += height * function.animation;
}
}
yOffset = 0;
for (Function function : sortedFunctions) {
function.animation = AnimationMath.lerp(function.animation, function.state ? 1 : 0, 15);
if (function.animation >= 0.01) {
float width = font.getWidth(function.name) + 4;
firstColor = styleManager.getCurrentStyle()
.getColor((int) ((yOffset + height * function.animation) * gradientForce));
secondColor = styleManager.getCurrentStyle()
.getColor((int) (yOffset * gradientForce));
RenderSystem.pushMatrix();
RenderSystem.translatef(x + width / 2F, y + yOffset, 0);
RenderSystem.scalef(1, function.animation, 1);
RenderSystem.translatef(-(x + width / 2F), -(y + yOffset), 0);
RenderUtil.Render2D.drawShadow(x, y + yOffset, 1, height, 8, firstColor, secondColor);
RenderUtil.Render2D.drawVertical(x, y + yOffset, 1, height, firstColor, secondColor);
RenderSystem.popMatrix();
yOffset += height * function.animation;
}
}
}
private float hDynamic = 0;
private int activePotions = 0;
private void renderPotions(final MatrixStack matrixStack, final EventRender renderEvent) {
float posX = potionStatus.getX();
float posY = potionStatus.getY();
int roundDegree = 4;
int headerHeight = 14;
int width = 100;
int padding = 5;
int offset = 10;
int headerColor = new Color(30, 30, 30, 200).getRGB();
int backgroundColor = new Color(40, 40, 40, 230).getRGB();
int firstColor = ColorUtil.getColorStyle(0);
int secondColor = ColorUtil.getColorStyle(90);
float height = activePotions * offset;
this.hDynamic = AnimationMath.fast(this.hDynamic, height, 15);
RenderUtil.Render2D.drawShadow(posX, posY, width, headerHeight + hDynamic + padding / 2f, 10, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawGradientRound(posX, posY, width, hDynamic + headerHeight + 2.5f, roundDegree, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawRoundedCorner(potionStatus.getX(), posY, width, headerHeight, new Vector4f(roundDegree, 0, roundDegree, 0), headerColor);
Fonts.gilroyBold[18].drawCenteredString(matrixStack, ClientUtil.gradient("active potions", firstColor, secondColor), potionStatus.getX() + width / 2f, posY + 5.5f, firstColor);
RenderUtil.Render2D.drawRoundedCorner(posX, posY + headerHeight, width, hDynamic + padding / 2f, new Vector4f(0, roundDegree, 0, roundDegree), backgroundColor);
RenderUtil.SmartScissor.push();
RenderUtil.SmartScissor.setFromComponentCoordinates(posX, posY, width, headerHeight + hDynamic + padding / 2f);
int index = 0;
for (EffectInstance p : mc.player.getActivePotionEffects()) {
if (p.isShowIcon()) {
String durationText = EffectUtils.getPotionDurationString(p, 1);
float durationWidth = Fonts.gilroyBold[12].getWidth(durationText);
Fonts.gilroyBold[18].drawString(matrixStack, I18n.format(p.getEffectName()), posX + padding - 2, posY + headerHeight + padding + (index * offset), ColorUtil.getColorStyle(255));
Fonts.gilroyBold[18].drawString(matrixStack, durationText, posX + width - durationWidth - padding - 2, posY + headerHeight + padding + (index * offset), ColorUtil.getColorStyle(255));
index++;
}
}
RenderUtil.SmartScissor.unset();
RenderUtil.SmartScissor.pop();
activePotions = index;
potionStatus.setWidth(width);
potionStatus.setHeight(activePotions * offset + headerHeight);
}
private float heightDynamic = 0;
float kbHeight = 0;
float kbWidth = 100;
float yOffset = 5;
float height = 5;
float kbHeightAnimation = 0;
int fontOffset = (fontSize > 18 ? -18 + fontSize - (fontSize > 18 ? 1 : 0) : 0);
float kbWidthAnimation = 0;
private int activeModules = 0;
private void onKeyBindsRender(MatrixStack stack) {
float posX = keyBinds.getX();
float posY = keyBinds.getY();
int roundDegree = 4;//Нужная залупа
int headerHeight = 14;//Нужная залупа
int width = 100;//Нужная залупа
int padding = 5;//Нужная залупа
int offset = 10;//Нужная залупа
int headerColor = new Color(30, 30, 30, 200).getRGB();//Цвета
int backgroundColor = new Color(40, 40, 40, 230).getRGB();//Цвета
int firstColor = ColorUtil.getColorStyle(0);//Цвета
int secondColor = ColorUtil.getColorStyle(90);//Цвета
float height = activeModules * offset;
this.heightDynamic = AnimationMath.fast(this.heightDynamic, height, 10);
RenderUtil.Render2D.drawShadow(posX, posY, width, headerHeight + heightDynamic + padding / 2f, 10, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawGradientRound(posX, posY, width, heightDynamic + headerHeight + 2.5f, roundDegree - 1, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawRoundedCorner(keyBinds.getX(), posY, width, headerHeight, new Vector4f(roundDegree, 0, roundDegree, 0), headerColor);
Fonts.gilroyBold[18].drawCenteredString(stack, ClientUtil.gradient("key bind", firstColor, secondColor), keyBinds.getX() + width / 2f, posY + 5.5f, firstColor);//Текст
RenderUtil.Render2D.drawRoundedCorner(posX, posY + headerHeight, width, heightDynamic + padding / 2f, new Vector4f(0, roundDegree, 0, roundDegree), backgroundColor);
RenderUtil.SmartScissor.push();
RenderUtil.SmartScissor.setFromComponentCoordinates(posX, posY, width, headerHeight + heightDynamic + padding / 2f);
int index = 0;
for (Function f : Managment.FUNCTION_MANAGER.getFunctions()) {
if (f.bind != 0 && f.state) {
String text = ClientUtil.getKey(f.bind);
if (text == null) {
continue;
}
String bindText = "[" + text.toUpperCase() + "]";
float bindWidth = Fonts.gilroyBold[12].getWidth(bindText);
Fonts.gilroyBold[18].drawString(stack, f.name, posX + padding -1, posY + headerHeight + padding + (index * offset)- 1, ColorUtil.getColorStyle(255));
Fonts.gilroyBold[18].drawString(stack, bindText, posX + width - bindWidth - padding - 1, posY + headerHeight + padding + (index * offset) - 1, ColorUtil.getColorStyle(255));
index++;
}
}
RenderUtil.SmartScissor.unset();
RenderUtil.SmartScissor.pop();
activeModules = index;
keyBinds.setWidth(width);
keyBinds.setHeight(activeModules * offset + headerHeight);
}
private int activeStaff = 0;
private float hDynam = 0;
private float widthDynamic = 0;
private float nameWidth = 0;
List<HUD2.StaffPlayer> staffPlayers = new ArrayList<>();
private void onStaffListRender(MatrixStack matrixStack, EventRender render) {
float posX = staffList.getX();
float posY = staffList.getY();
int roundDegree = 4;
int headerHeight = 14;
float width = Math.max(nameWidth + 40, 100);
int padding = 5;
int offset = 10;
int headerColor = new Color(30, 30, 30, 200).getRGB();
int backgroundColor = new Color(35, 35, 35, 230).getRGB();
int firstColor = ColorUtil.getColorStyle(0);
int secondColor = ColorUtil.getColorStyle(90);
float height = activeStaff * offset;
this.hDynam = AnimationMath.fast(this.hDynam, height, 10);
this.widthDynamic = AnimationMath.fast(this.widthDynamic, width, 10);
RenderUtil.Render2D.drawShadow(posX, posY, widthDynamic, headerHeight + hDynam + padding / 2f, 10, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawGradientRound(posX, posY, widthDynamic, hDynam + headerHeight + 2.5f, roundDegree - 1, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawRoundedCorner(posX, posY, widthDynamic, headerHeight, new Vector4f(roundDegree, 0, roundDegree, 0), headerColor);
Fonts.gilroyBold[18].drawCenteredString(matrixStack, ClientUtil.gradient("staff list", firstColor, secondColor), posX + widthDynamic / 2f, posY + 5.5f, ColorUtil.getColorStyle(255));
RenderUtil.Render2D.drawRoundedCorner(posX, posY + headerHeight, widthDynamic, hDynam + padding / 2f, new Vector4f(0, roundDegree, 0, roundDegree), backgroundColor);
int index = 0;
SmartScissor.push();
SmartScissor.setFromComponentCoordinates(posX, posY, widthDynamic, headerHeight + hDynam + padding / 2f);
if (!staffPlayers.isEmpty()) {
for (HUD2.StaffPlayer staff : staffPlayers) {
String name = staff.getName();
ITextComponent prefix = staff.getPrefix();
String status = staff.getStatus().getString();
Fonts.gilroyBold[12].drawString(matrixStack, prefix, posX + padding, posY + headerHeight + padding + (index * offset), -1);
Fonts.gilroyBold[12].drawString(matrixStack, name + status, posX + padding + Fonts.gilroyBold[12].getWidth(prefix.getString()), posY + headerHeight + padding + (index * offset), -1);
nameWidth = Fonts.gilroyBold[12].getWidth(prefix.getString() + name + status);
index++;
}
} else {
nameWidth = 0;
}
SmartScissor.unset();
SmartScissor.pop();
activeStaff = index;
staffList.setWidth(widthDynamic);
staffList.setHeight(hDynam + headerHeight);
}
private class StaffPlayer {
@Getter
String name;
@Getter
ITextComponent prefix;
@Getter
HudFunction.Status status;
private StaffPlayer(String name, ITextComponent prefix) {
this.name = name;
this.prefix = prefix;
updateStatus();
}
private void updateStatus() {
for (AbstractClientPlayerEntity player : mc.world.getPlayers()) {
if (player.getNameClear().equals(name)) {
status = NEAR;
return;
}
}
for (NetworkPlayerInfo info : mc.getConnection().getPlayerInfoMap()) {
if (info.getGameProfile().getName().equals(name)) {
if (info.getGameType() == GameType.SPECTATOR) {
status = SPEC;
return;
}
status = NONE;
return;
}
}
status = VANISHED;
}
}
public final Dragging targetHUD = Initilization.createDrag(this, "TargetHUD", 500, 50);
private float health = 0;
private double scale = 0.0D;
private void onRenderTargetHUD(final MatrixStack stack) {
this.target = getTarget(this.target);
this.targetHudAnimation.setDuration(300);
this.scale = targetHudAnimation.getOutput();
if (scale == 0.0F) {
target = null;
}
if (target == null) {
return;
}
final String targetName = this.target.getName().getString();
String substring = targetName.substring(0, Math.min(targetName.length(), 10));//Нужная залупа
final float nameWidth = Fonts.gilroyBold[18].getWidth(substring);//Нужная залупа
final float xPosition = this.targetHUD.getX();//Нужная залупа
final float yPosition = this.targetHUD.getY();//Нужная залупа
final float maxWidth = Math.max(nameWidth + 50, 120);//Нужная залупа
final float maxHeight = 30;//Нужная залупа
this.health = AnimationMath.fast(health, target.getHealth() / target.getMaxHealth(), 5);//Типо должна быть анимация
this.health = MathHelper.clamp(this.health, 0, 1);//Типо должна быть анимация
GlStateManager.pushMatrix();
AnimationMath.sizeAnimation(xPosition + (maxWidth / 2), yPosition + (maxHeight / 2), scale);
Vector2i colorVec = new Vector2i(ColorUtil.getColorStyle(0), ColorUtil.getColorStyle(90));
RenderUtil.Render2D.drawShadow(xPosition, yPosition, maxWidth, maxHeight, 10, colorVec.x, colorVec.y, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawGradientRound(xPosition, yPosition, maxWidth, maxHeight, 3, colorVec.x, colorVec.y, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawRoundedRect(xPosition, yPosition, maxWidth, maxHeight, 2.5f, rgba(21, 21, 21, 200));
drawFace(xPosition + 4, yPosition + 3.25f, 8F, 8F, 8F, 8F, 24, 24, 64F, 64F, (AbstractClientPlayerEntity) target);//Ебло чела
drawCircle(
xPosition + maxWidth - 15, // X-координата
yPosition + maxHeight / 2, // Y-координата
12.0f, // Радиус круга
4.0f, // Ширина линии
false, // Не заполненный круг
ColorUtil.getColorStyle(255), // Цвет
360 // Количество сегментов
);
drawItemStack(xPosition + 32, yPosition + 22 - 5.5f, 10);
Fonts.gilroyBold[18].drawString(stack, substring, xPosition + maxWidth - 90, yPosition + 6, -1);//Ник
String healthValue = (int) MathUtil.round(this.health * 20 + target.getAbsorptionAmount(), 0.5f) + "";
Fonts.gilroyBold[18].drawCenteredString(stack, healthValue, xPosition + maxWidth - 15, yPosition + maxHeight / 2 - 2.2f, ColorUtil.rgba(255, 255, 255, 255));//Hp
GlStateManager.popMatrix();
this.targetHUD.setWidth(maxWidth);
this.targetHUD.setHeight(maxHeight);
}
private void drawItemStack(float x, float y, float offset) {
List<ItemStack> stackList = new ArrayList<>(Arrays.asList(target.getHeldItemMainhand(), target.getHeldItemOffhand()));
stackList.addAll((Collection<? extends ItemStack>) target.getArmorInventoryList());
final AtomicReference<Float> posX = new AtomicReference<>(x);
stackList.stream()
.filter(stack -> !stack.isEmpty())
.forEach(stack -> HudUtil.drawItemStack(stack,
posX.getAndAccumulate(offset, Float::sum),
y,
true,
true, 0.6f));
}
private float perc;
private void renderTimer(MatrixStack matrixStack) {
float posX = timerHUD.getX();
float posY = timerHUD.getY();
int firstColor = ColorUtil.getColorStyle(0);
int secondColor = ColorUtil.getColorStyle(90);
float quotient = Managment.FUNCTION_MANAGER.timerFunction.maxViolation / Managment.FUNCTION_MANAGER.timerFunction.timerAmount.getValue().floatValue();
float minimumValue = Math.min(Managment.FUNCTION_MANAGER.timerFunction.getViolation(), quotient);
perc = AnimationMath.lerp(perc, ((quotient - minimumValue) / quotient), 10);
String text = (int) (perc * 100) + "%";
float width = 80;
int width2 = 70;
timerHUD.setWidth(width);
timerHUD.setHeight(20);
RenderUtil.Render2D.drawShadow(posX, posY, width, 27, 10, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawGradientRound(posX - 0.25f, posY - 0.25f, width + 0.25f, 27 + 0.25f, 3, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
RenderUtil.Render2D.drawRoundedRect(posX, posY, width, 27,3, RenderUtil.reAlphaInt(ColorUtil.rgba(15, 15, 15, 255), 170));
medium.drawString(matrixStack, "Timer", posX + 27.5, posY + 6, ColorUtil.getColorStyle(255));
RenderUtil.Render2D.drawGradientRound(posX + 5f, posY + 24 - 8, width2 * perc, 7,1, firstColor, secondColor, ColorUtil.getColorStyle(180), ColorUtil.getColorStyle(270));
medium.drawString(matrixStack, text, posX + width - medium.getWidth(text) - 3 - 27, posY + 17.5, t_color);
}
private PlayerEntity getTarget(PlayerEntity nullTarget) {
PlayerEntity target = nullTarget;
if (Managment.FUNCTION_MANAGER.auraFunction.getTarget() instanceof PlayerEntity) {
target = (PlayerEntity) Managment.FUNCTION_MANAGER.auraFunction.getTarget();
tHudAnimation.setDirection(Direction.FORWARDS);
} else if (mc.currentScreen instanceof ChatScreen) {
target = mc.player;
tHudAnimation.setDirection(Direction.FORWARDS);
} else {
tHudAnimation.setDirection(Direction.BACKWARDS);
}
return target;
}
private void updateFunctions() {
for (Function function : Managment.FUNCTION_MANAGER.getFunctions()) {
if (function.category == Category.Render) continue;
functions.add(function);
}
functions.sort((f1, f2) -> Float.compare(small.getWidth(f2.name), small.getWidth(f1.name)));
}
private int getColor(int index) {
return colors[index % colors.length];
}
}