Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2025
- Сообщения
- 110
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
Привет югейм, скиднул тх энерджи
Вроде 5 пост сильно не хуярьте вроде вышло вполне нормально, иконку найдете и вставите сами это вполне не трудно думаю
SS:
Вроде 5 пост сильно не хуярьте вроде вышло вполне нормально, иконку найдете и вставите сами это вполне не трудно думаю
SS:
шедеврокод:
package sweetie.evaware.client.ui.widget.overlay;
import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import sweetie.evaware.api.utils.animation.AnimationUtil;
import sweetie.evaware.api.utils.color.ColorUtil;
import sweetie.evaware.api.utils.color.UIColors;
import sweetie.evaware.api.utils.math.MathUtil;
import sweetie.evaware.api.utils.render.RenderUtil;
import sweetie.evaware.api.utils.render.fonts.Fonts;
import sweetie.evaware.api.system.files.FileUtil;
import sweetie.evaware.client.features.modules.combat.AuraModule;
import sweetie.evaware.client.ui.widget.Widget;
import java.awt.*;
public class TargetInfoNewWidget extends Widget {
private static final Identifier HEART = FileUtil.getImage("particles/heart2");
@Override public String getName() { return "Target info"; }
public TargetInfoNewWidget() { super(30f, 30f); }
private final AnimationUtil showAnimation = new AnimationUtil();
private float healthAnimation = 0f;
private LivingEntity lastTarget;
@Override
public void render(MatrixStack matrixStack) {
showAnimation.update();
showAnimation.run(getTarget() != null ? 1.0 : 0.0, getDuration(), getEasing());
LivingEntity fresh = getTarget();
if (fresh != null) lastTarget = fresh;
if (showAnimation.getValue() <= 0.0 || lastTarget == null) return;
float anim = (float) showAnimation.getValue();
float targetHp = lastTarget.getHealth();
float maxHp = Math.max(lastTarget.getMaxHealth(), 1f);
healthAnimation = MathUtil.interpolate(healthAnimation,
MathHelper.clamp(targetHp / maxHp, 0f, 1f), 0.1f);
float x = getDraggable().getX();
float y = getDraggable().getY();
float radius = scaled(7f);
float padH = scaled(4f);
float padV = scaled(4f);
float avatarSz = scaled(22f);
float nameSize = scaled(6.5f);
float hpSize = scaled(6f);
float textGap = scaled(2.5f);
float spacing = scaled(3f);
float barH = scaled(5f);
float extraW = scaled(12f);
String name = lastTarget.getName().getString();
String hpText = String.format("%.1f", targetHp);
float heartSz = hpSize;
float absorptionAmount = lastTarget.getAbsorptionAmount();
boolean hasAbsorption = absorptionAmount > 0;
String absorptionText = hasAbsorption ? String.format("(%.1f)", absorptionAmount) : "";
float nameW = Fonts.SF_BOLD.getWidth(name, nameSize);
float hpLineW = heartSz + scaled(2f) + Fonts.SF_SEMIBOLD.getWidth(hpText, hpSize)
+ (hasAbsorption ? scaled(3f) + Fonts.SF_SEMIBOLD.getWidth(absorptionText, hpSize) : 0);
float textBlockW = Math.max(nameW, hpLineW);
float totalW = padH + avatarSz + padH + textBlockW + padH + extraW;
float totalH = padV + avatarSz + spacing + barH + padV;
int a = (int)(255 * anim);
RenderUtil.BLUR_RECT.draw(matrixStack, x, y, totalW, totalH, radius,
new Color(20, 20, 30, (int)(230 * anim)));
float avatarX = x + padH;
float avatarY = y + padV;
if (lastTarget instanceof PlayerEntity player) {
RenderUtil.TEXTURE_RECT.drawHead(matrixStack, player,
avatarX, avatarY, avatarSz, avatarSz,
1f, scaled(5f), ColorUtil.setAlpha(Color.WHITE, a));
} else {
RenderUtil.RECT.draw(matrixStack, avatarX, avatarY, avatarSz, avatarSz,
scaled(5f), new Color(60, 60, 60, a));
getSemiBoldFont().drawCenteredText(matrixStack, "?",
avatarX + avatarSz / 2f,
avatarY + avatarSz / 2f - nameSize / 2f,
nameSize, UIColors.textColor(a));
}
float tx = avatarX + avatarSz + scaled(3f);
float textTotalH = nameSize + textGap + hpSize;
float textStartY = avatarY + (avatarSz - textTotalH) / 2f;
Fonts.SF_BOLD.drawText(matrixStack, name, tx, textStartY, nameSize,
ColorUtil.setAlpha(Color.WHITE, a));
float hpY = textStartY + nameSize + textGap;
try {
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
int texId = mc.getTextureManager().getTexture(HEART).getGlId();
RenderUtil.TEXTURE_RECT.draw(matrixStack, tx, hpY, heartSz, heartSz, scaled(1f),
ColorUtil.setAlpha(UIColors.primary(), a), 0, 0, 1, 1, texId);
} catch (Exception e) {
RenderUtil.RECT.draw(matrixStack, tx, hpY, heartSz, heartSz, scaled(1f),
ColorUtil.setAlpha(UIColors.primary(), a));
}
Fonts.SF_SEMIBOLD.drawText(matrixStack, hpText,
tx + heartSz + scaled(2f), hpY, hpSize,
ColorUtil.setAlpha(Color.WHITE, a));
if (hasAbsorption) {
float hpTextW = Fonts.SF_SEMIBOLD.getWidth(hpText, hpSize);
Fonts.SF_SEMIBOLD.drawText(matrixStack, " " + absorptionText,
tx + heartSz + scaled(2f) + hpTextW, hpY, hpSize,
new Color(255, 210, 50, a));
}
float barX = x + padH;
float barY = y + padV + avatarSz + spacing;
float barW = totalW - padH * 2f;
float barR = barH / 2f;
RenderUtil.RECT.draw(matrixStack, barX, barY, barW, barH, barR,
new Color(0, 0, 0, (int)(100 * anim)));
float fill = barW * healthAnimation;
if (fill > 0) {
RenderUtil.GRADIENT_RECT.draw(matrixStack, barX, barY, fill, barH, barR,
ColorUtil.setAlpha(UIColors.primary(), a),
ColorUtil.setAlpha(UIColors.secondary(), a),
ColorUtil.setAlpha(UIColors.primary(), a),
ColorUtil.setAlpha(UIColors.secondary(), a));
}
if (hasAbsorption) {
float absorptionFill = Math.min(barW * MathHelper.clamp(absorptionAmount / maxHp, 0f, 1f), barW);
if (absorptionFill > 0) {
RenderUtil.RECT.draw(matrixStack, barX, barY, absorptionFill, barH, barR,
new Color(30, 20, 0, (int)(255 * anim)));
RenderUtil.GRADIENT_RECT.draw(matrixStack, barX, barY, absorptionFill, barH, barR,
new Color(180, 120, 0, (int)(255 * anim)),
new Color(255, 210, 50, (int)(255 * anim)),
new Color(180, 120, 0, (int)(255 * anim)),
new Color(255, 210, 50, (int)(255 * anim)));
}
}
getDraggable().setWidth(totalW);
getDraggable().setHeight(totalH);
}
private LivingEntity getTarget() {
AuraModule aura = AuraModule.getInstance();
if (aura.isEnabled() && aura.target != null) return aura.target;
if (mc.currentScreen instanceof ChatScreen) return mc.player;
return null;
}
}