Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2025
- Сообщения
- 32
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Попытался сделать чето нормальное, вышло вроде неплохо если довести до ума думаю пойдет.
SS
SS
targethud:
if (lastTarget != null || animation.getValue() > 0) {
Hud hud = Evaware.getInstance().getModuleManager().getHud();
if (hud.thMode.is("New")) {
LivingEntity renderTarget = lastTarget != null ? lastTarget : mc.player;
if (renderTarget == null) {
return;
}
float padding = 4.0f;
float innerPadding = 4.0f;
float avatarSize = 14.0f;
float nameSize = 6.25f;
float hpSize = 5.0f;
float spacing = 2.5f;
float healthBarHeight = 3.0f;
String nameText = renderTarget.getNameString();
float nameWidth = Fonts.robotomedium.getWidth(nameText, nameSize);
float nameHeight = Fonts.robotomedium.getHeight(nameSize);
float multiplier = (float) Math.pow(10, 1);
float currentHealth = renderTarget.getHealth();
float maxHealth = Math.max(renderTarget.getMaxHealth(), 1.0f);
float absorptionAmount = renderTarget.getAbsorptionAmount();
float finalHealth = Math.round(currentHealth * multiplier) / multiplier;
float finalAbsorption = Math.round(absorptionAmount * multiplier) / multiplier;
String hpText = "HP: " + finalHealth;
float hpWidth = Fonts.robotomedium.getWidth(hpText, hpSize);
float hpHeight = Fonts.robotomedium.getHeight(hpSize);
boolean hasAbsorption = absorptionAmount > 0;
String absorptionText = hasAbsorption ? "" + finalAbsorption : "";
float absorptionTextWidth = hasAbsorption ? Fonts.robotomedium.getWidth(absorptionText, hpSize) : 0.0f;
float combinedHpWidth = hasAbsorption ? hpWidth + absorptionTextWidth + 12.0f : hpWidth;
float contentWidth = Math.max(nameWidth, combinedHpWidth);
float healthBarWidth = Math.max(contentWidth, 55.0f);
float totalWidth = padding + avatarSize + innerPadding + healthBarWidth + padding;
float totalHeight = padding + nameHeight + spacing + hpHeight + spacing + healthBarHeight + padding;
draggable.setWidth(totalWidth);
draggable.setHeight(totalHeight);
GlStateManager.pushMatrix();
GLUtil.sizeAnimation(draggable.getX() + draggable.getWidth() / 2.0f, draggable.getY() + draggable.getHeight() / 2.0f, animation.getValue());
float healthRatio = MathHelper.clamp(currentHealth / maxHealth, 0.0f, 1.0f);
float absorptionRatio = MathHelper.clamp(absorptionAmount / maxHealth, 0.0f, 1.0f);
healthBackAnim.run(healthBarWidth * healthRatio);
healthBackAnim.setDuration(1750);
healthAnim.run(healthBarWidth * healthRatio);
absorptionAnim.run(healthBarWidth * MathHelper.clamp(healthRatio + absorptionRatio, 0.0f, 1.0f));
absorptionAnim.setDuration(450);
absorptionXAnim.run(hasAbsorption ? 1 : 0);
absorptionXAnim.setDuration(450);
int bgAlpha = (int) (140 * MathHelper.clamp((float) animation.getValue(), 0.0f, 1.0f));
DrawUtil.drawRoundedRect(draggable.getX(), draggable.getY(), draggable.getWidth(), draggable.getHeight(), 3.0f, ColorUtil.rgba(0, 0, 0, bgAlpha));
float avatarX = draggable.getX() + padding;
float avatarY = draggable.getY() + (draggable.getHeight() - avatarSize) / 2.0f;
drawRoundFace(stack, avatarX, avatarY, (int) avatarSize, 1.0f, 2.0f, renderTarget);
float textX = avatarX + avatarSize + innerPadding;
float nameY = draggable.getY() + padding;
Fonts.robotomedium.drawText(stack, nameText, textX, nameY, -1, nameSize);
float hpY = nameY + nameHeight + spacing;
Fonts.robotomedium.drawText(stack, hpText, textX, hpY, -1, hpSize);
if (hasAbsorption && absorptionXAnim.getValue() > 0) {
float absorptionDrawX = draggable.getX() + draggable.getWidth() - padding - absorptionTextWidth;
int goldColor = ColorUtil.rgba(255, 217, 13, (int) (absorptionXAnim.getValue() * 255));
Fonts.robotomedium.drawText(stack, absorptionText, absorptionDrawX, hpY, goldColor, hpSize);
}
float healthBarX = textX;
float healthBarY = hpY + hpHeight + spacing;
DrawUtil.drawRoundedRect(healthBarX, healthBarY, healthBarWidth, healthBarHeight, 1.0f, ColorUtil.rgba(0, 0, 0, 150));
float healthFill = MathHelper.clamp((float) healthAnim.getValue(), 0.0f, healthBarWidth);
if (healthFill > 0) {
int themeColor = ColorUtil.getCurrentThemeWithFirstColor();
int colorStart = ColorUtil.setAlpha(themeColor, 210);
int colorEnd = ColorUtil.setAlpha(ColorUtil.rgba(255, 255, 255, 255), 255);
DrawUtil.drawRoundedRect(healthBarX, healthBarY, healthFill, healthBarHeight, 1.0f, 1.0f,
new Vector4i(colorStart, colorStart, colorEnd, colorEnd));
}
if (hasAbsorption && absorptionXAnim.getValue() > 0) {
float absorptionOverlay = healthBarWidth * MathHelper.clamp(absorptionAmount / maxHealth, 0.0f, 1.0f);
if (absorptionOverlay > 0) {
int goldStart = ColorUtil.rgba(57, 34, 4, (int) (absorptionXAnim.getValue() * 200));
int goldEnd = ColorUtil.rgba(255, 217, 13, (int) (absorptionXAnim.getValue() * 255));
DrawUtil.drawRoundedRect(healthBarX, healthBarY, Math.min(absorptionOverlay, healthBarWidth), healthBarHeight, 1.0f, 1.0f,
new Vector4i(goldStart, goldStart, goldEnd, goldEnd));
}
}