Начинающий
- Статус
- Оффлайн
- Регистрация
- 7 Мар 2025
- Сообщения
- 97
- Реакции
- 2
- Выберите загрузчик игры
- Vanilla
самое худшее что я делал скид вилда но вообще не похоже ну короче вот вам говно говно
SS -
Code -
SS -
Code -
сарделька:
package dev.sk3d.display.hud;
import dev.sk3d.Hawen;
import dev.sk3d.common.animation.Animation;
import dev.sk3d.common.animation.implement.Decelerate;
import dev.sk3d.utils.display.render.post.KawaseBlur;
import dev.sk3d.utils.interactions.interact.PlayerInteractionHelper;
import dev.sk3d.utils.math.time.StopWatch;
import dev.sk3d.utils.theme.ThemeManager;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.entity.EntityRenderer;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.state.LivingEntityRenderState;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.LivingEntity;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import dev.sk3d.utils.client.managers.api.draggable.AbstractDraggable;
import dev.sk3d.features.impl.combat.Aura;
import dev.sk3d.features.impl.render.Hud;
import dev.sk3d.common.animation.Direction;
import dev.sk3d.common.animation.implement.EaseOut;
import dev.sk3d.utils.display.render.font.FontRenderer;
import dev.sk3d.utils.display.render.font.Fonts;
import dev.sk3d.utils.display.render.shape.ShapeProperties;
import dev.sk3d.utils.display.color.ColorAssist;
import dev.sk3d.utils.math.calc.Calculate;
import dev.sk3d.utils.display.render.geometry.Render2D;
import dev.sk3d.utils.display.scissor.ScissorAssist;
import java.awt.*;
import java.util.HashMap;
import java.util.Map;
public class TargetHud extends AbstractDraggable {
private final Animation faceAlphaAnimation = new Decelerate().setMs(125).setValue(1);
private final StopWatch stopWatch = new StopWatch();
private LivingEntity lastTarget;
private float health;
private static final Map<String, DonateInfo> DONAT_PREFIXES = new HashMap<>();
static {
DONAT_PREFIXES.put("ꔀ", new DonateInfo("PLAYER", new Color(170, 170, 170)));
DONAT_PREFIXES.put("ꔄ", new DonateInfo("HERO", new Color(85, 85, 255)));
DONAT_PREFIXES.put("ꔈ", new DonateInfo("TITAN", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔒ", new DonateInfo("AVENGER", new Color(85, 255, 85)));
DONAT_PREFIXES.put("ꔖ", new DonateInfo("OVERLORD", new Color(85, 255, 255)));
DONAT_PREFIXES.put("ꔠ", new DonateInfo("MAGISTER", new Color(255, 170, 0)));
DONAT_PREFIXES.put("ꔤ", new DonateInfo("IMPERATOR", new Color(255, 85, 85)));
DONAT_PREFIXES.put("ꔨ", new DonateInfo("DRAGON", new Color(255, 85, 255)));
DONAT_PREFIXES.put("ꔲ", new DonateInfo("BULL", new Color(170, 0, 170)));
DONAT_PREFIXES.put("ꕒ", new DonateInfo("RABBIT", new Color(255, 255, 255)));
DONAT_PREFIXES.put("ꔶ", new DonateInfo("TIGER", new Color(255, 170, 0)));
DONAT_PREFIXES.put("ꕄ", new DonateInfo("DRACULA", new Color(255, 85, 85)));
DONAT_PREFIXES.put("ꕖ", new DonateInfo("BUNNY", new Color(255, 255, 255)));
DONAT_PREFIXES.put("ꕀ", new DonateInfo("HYDRA", new Color(0, 170, 0)));
DONAT_PREFIXES.put("ꕈ", new DonateInfo("COBRA", new Color(85, 255, 85)));
DONAT_PREFIXES.put("ꕅ", new DonateInfo("VAMPIRE", new Color(255, 85, 85)));
DONAT_PREFIXES.put("ꔁ", new DonateInfo("MEDIA", new Color(85, 85, 255)));
DONAT_PREFIXES.put("ꔅ", new DonateInfo("YT", new Color(255, 85, 85)));
DONAT_PREFIXES.put("ꕠ", new DonateInfo("D.HELPER", new Color(85, 255, 85)));
DONAT_PREFIXES.put("ꔉ", new DonateInfo("HELPER", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔓ", new DonateInfo("ML.MODER", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔗ", new DonateInfo("MODER", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔡ", new DonateInfo("MODER+", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔥ", new DonateInfo("ST.MODER", new Color(255, 255, 85)));
DONAT_PREFIXES.put("ꔩ", new DonateInfo("GL.MODER", new Color(255, 170, 0)));
DONAT_PREFIXES.put("ꔳ", new DonateInfo("ML.ADMIN", new Color(255, 85, 85)));
DONAT_PREFIXES.put("ꔷ", new DonateInfo("ADMIN", new Color(170, 0, 0)));
}
private record DonateInfo(String name, Color color) {}
public TargetHud() {
super("Target Hud", 10, 80, 120, 40, true);
this.scaleAnimation = new EaseOut().setValue(1).setMs(150);
}
@Override
public boolean visible() {
if (Hud.getInstance() == null) return false;
boolean isTargetHudSelected = Hud.getInstance().interfaceSettings.isSelected("Target Hud");
boolean isHudEnabled = Hud.getInstance().state;
boolean isActive = isTargetHudSelected && isHudEnabled;
return isActive && scaleAnimation.isDirection(Direction.FORWARDS);
}
@Override
public void tick() {
if (!Hud.getInstance().interfaceSettings.isSelected("Target Hud") || !Hud.getInstance().state) {
return;
}
LivingEntity auraTarget = Aura.getInstance().getTarget();
if (auraTarget != null) {
lastTarget = auraTarget;
startAnimation();
faceAlphaAnimation.setDirection(Direction.FORWARDS);
} else if (PlayerInteractionHelper.isChat(mc.currentScreen) && mc.player != null) {
lastTarget = mc.player;
startAnimation();
faceAlphaAnimation.setDirection(Direction.FORWARDS);
} else if (stopWatch.finished(500)) {
stopAnimation();
faceAlphaAnimation.setDirection(Direction.BACKWARDS);
}
}
@Override
public void drawDraggable(DrawContext context) {
boolean isActive = Hud.getInstance().interfaceSettings.isSelected("Target Hud") && Hud.getInstance().state;
if (isActive && lastTarget != null) {
MatrixStack matrix = context.getMatrices();
drawTargetHud(context, matrix);
}
}
private void drawTargetHud(DrawContext context, MatrixStack matrix) {
float x = getX();
float y = getY();
float width = 120f;
float height = 40f;
setWidth((int) width);
setHeight((int) height);
float hp = PlayerInteractionHelper.getHealth(lastTarget);
health = MathHelper.clamp(Calculate.interpolateSmooth(1, health, hp / lastTarget.getMaxHealth()), 0, 1);
if (Hud.blur.isValue()) {
Render2D.rectangleWithMask(matrix.peek().getPositionMatrix(), x, y, width, height, 5f, 0,
KawaseBlur.INSTANCE.fbos.getFirst().getColorAttachment());
}
rectangle.render(ShapeProperties.create(matrix, x, y, width, height)
.round(5f)
.color(ThemeManager.BackgroundGui.getColor())
.build());
float headSize = 32f;
float headX = x + 3f;
float headY = y + 5f;
rectangle.render(ShapeProperties.create(matrix, headX, headY, headSize, headSize)
.round(3f)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
float infoX = headX + headSize + 5f;
float infoY = y + 4f;
float infoWidth = width - headSize - 11f;
float nameHeight = 12f;
rectangle.render(ShapeProperties.create(matrix, infoX, infoY, infoWidth, nameHeight)
.round(2f)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
FontRenderer nameFont = Fonts.getSize(12, Fonts.Type.BOLD);
String playerName = lastTarget.getName().getString();
DonateInfo donate = getDonateFromName(lastTarget.getDisplayName());
if (donate != null) {
FontRenderer donateFont = Fonts.getSize(8, Fonts.Type.BOLD);
nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
donateFont.drawString(matrix, donate.name(), infoX + 5f + nameFont.getStringWidth(playerName) + 3f, infoY + 5.5f, donate.color().getRGB());
} else {
nameFont.drawString(matrix, playerName, infoX + 5f, infoY + 5f, ThemeManager.textColor.getColor());
}
float bottomPanelY = infoY + nameHeight + 2f;
float bottomPanelHeight = 18f;
rectangle.render(ShapeProperties.create(matrix, infoX, bottomPanelY, infoWidth, bottomPanelHeight)
.round(2f)
.color(ThemeManager.BackgroundSettings.getColor())
.build());
drawArmor(context, matrix, infoX, bottomPanelY);
float hpValue = hp;
String hpNumber = String.format(java.util.Locale.US, "%.1f", hpValue);
String hpLabel = " hp";
FontRenderer hpFont = Fonts.getSize(12, Fonts.Type.BOLD);
float hpNumberWidth = hpFont.getStringWidth(hpNumber);
float hpLabelWidth = hpFont.getStringWidth(hpLabel);
float hpTextX = infoX + infoWidth - hpNumberWidth - hpLabelWidth - 5f;
hpFont.drawString(matrix, hpNumber, hpTextX, bottomPanelY + 5f, ThemeManager.textColor.getColor());
hpFont.drawString(matrix, hpLabel, hpTextX + hpNumberWidth, bottomPanelY + 5f, new Color(150, 150, 150).getRGB());
float hpBarX = infoX + 3f;
float hpBarY = bottomPanelY + 13f;
float hpBarWidth = infoWidth - 6f;
float hpBarHeight = 3f;
rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, hpBarWidth, hpBarHeight)
.round(1.5f)
.color(new Color(0, 0, 0, 100).getRGB())
.build());
float filledWidth = hpBarWidth * health;
if (filledWidth > 0) {
rectangle.render(ShapeProperties.create(matrix, hpBarX, hpBarY, filledWidth, hpBarHeight)
.round(1.5f)
.color(ColorAssist.getClientColor(), ColorAssist.getClientColor(),
ColorAssist.getClientColor2(), ColorAssist.getClientColor2())
.build());
}
drawFace(context, matrix, headX, headY, headSize);
}
private void drawArmor(DrawContext context, MatrixStack matrix, float panelX, float panelY) {
if (lastTarget == null) return;
net.minecraft.item.ItemStack[] armor = new net.minecraft.item.ItemStack[] {
lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.HEAD),
lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.CHEST),
lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.LEGS),
lastTarget.getEquippedStack(net.minecraft.entity.EquipmentSlot.FEET)
};
float startX = panelX + 3f;
float y = panelY + 1f;
float itemSpacing = 11f;
float itemSize = 16 * 0.6F;
for (int i = 0; i < 4; i++) {
float currentX = startX + i * itemSpacing;
if (!armor[i].isEmpty()) {
matrix.push();
matrix.translate(0, 0, 100);
Render2D.defaultDrawStack(context, armor[i], currentX, y, true, true, 0.6F);
matrix.pop();
} else {
String xText = "p";
FontRenderer font = Fonts.getSize(10, Fonts.Type.HAWEN);
float textWidth = font.getStringWidth(xText);
float textHeight = font.getStringHeight(xText);
float textX = currentX + (itemSize - textWidth) / 2.0F;
float textY = y + (itemSize - textHeight) / 2.0F;
font.drawString(matrix, xText, textX, textY + 5f, new Color(137, 137, 140, 255).getRGB());
}
}
}
private void drawFace(DrawContext context, MatrixStack matrix, float x, float y, float size) {
if (mc.getEntityRenderDispatcher() == null || lastTarget == null) {
return;
}
EntityRenderer<? super LivingEntity, ?> baseRenderer = mc.getEntityRenderDispatcher().getRenderer(lastTarget);
if (baseRenderer == null || !(baseRenderer instanceof LivingEntityRenderer<?, ?, ?>)) {
return;
}
@SuppressWarnings("unchecked")
LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?> renderer =
(LivingEntityRenderer<LivingEntity, LivingEntityRenderState, ?>) baseRenderer;
LivingEntityRenderState state = renderer.getAndUpdateRenderState(lastTarget, tickCounter.getTickDelta(false));
if (state == null) {
return;
}
Identifier textureLocation = renderer.getTexture(state);
float alpha = faceAlphaAnimation.getOutput().floatValue();
Calculate.setAlpha(alpha, () -> {
float padding = 4f;
float faceSize = size - padding * 2;
float faceX = x + padding;
float faceY = y + padding;
Render2D.drawTexture(context, textureLocation, faceX, faceY, faceSize, 3f, 8, 8, 64,
ColorAssist.getRect(1), ColorAssist.multRed(-1, 1 + lastTarget.hurtTime / 4F));
});
}
private DonateInfo getDonateFromName(Text displayName) {
String fullName = displayName.getString();
for (Map.Entry<String, DonateInfo> entry : DONAT_PREFIXES.entrySet()) {
if (fullName.contains(entry.getKey())) {
return entry.getValue();
}
}
return null;
}
}