Вопрос Notification мигают при появлении/исчезновении вместе с TargetHUD

Начинающий
Статус
Оффлайн
Регистрация
9 Июн 2024
Сообщения
46
Реакции[?]
0
Поинты[?]
0

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

notification:
import com.mojang.blaze3d.matrix.MatrixStack;
import lombok.Getter;
import lombok.Setter;



import java.util.concurrent.CopyOnWriteArrayList;



public class NotificationManager {

    private final CopyOnWriteArrayList<Notification> notifications = new CopyOnWriteArrayList<>();

    public void add(String text, String content, int time) {
        notifications.add(new Notification(text, content, time));
    }

    public void draw(MatrixStack stack) {
        int yOffset = 0;
        for (Notification notification : notifications) {
            long currentTime = System.currentTimeMillis();

            if (currentTime - notification.getTime() < notification.time2 * 800L) {
                notification.yAnimation.setDirection(Direction.FORWARDS);
            } else {
                notification.yAnimation.setDirection(Direction.BACKWARDS);
            }

            if (notification.yAnimation.finished(Direction.BACKWARDS)) {
                notifications.remove(notification);
                continue;
            }

            float screenWidth = mc.getMainWindow().getScaledWidth();
            float screenHeight = mc.getMainWindow().getScaledHeight();
            float notificationWidth = Fonts.msSemiBold[12].getWidth(notification.getText()) + 100;

            float targetY = screenHeight - 60.0F - yOffset;
            float animatedY = AnimationMath.fast(notification.getY(), targetY, 25);

            float x = (screenWidth - notificationWidth) / 2.0F;
            notification.setX(x);
            notification.setY(animatedY);
            yOffset += 25;

            notification.draw(stack);
        }
    }

    private class Notification {
        [USER=270918]@Getter[/USER]
        [USER=1132491]@setter[/USER]
        private float x, y = mc.getMainWindow().getScaledHeight() + 5;

        [USER=270918]@Getter[/USER]
        private String text;
        [USER=270918]@Getter[/USER]
        private String content;

        [USER=270918]@Getter[/USER]
        private long time = System.currentTimeMillis();

        public Animation yAnimation = new DecelerateAnimation(600, 1, Direction.FORWARDS);
        int time2 = 3;

        public Notification(String text, String content, int time) {
            this.text = text;
            this.content = content;
            this.time2 = time;
        }

        public float draw(MatrixStack stack) {

            float textWidth = Fonts.comfortaa[12].getWidth(text) + 40;

            float screenWidth = mc.getMainWindow().getScaledWidth();

            float centerX = (screenWidth - textWidth) / 2.0F;

            int backgroundColor = ClientHUD.getCurrentBackgroundColor();
            int textColor = ClientHUD.getCurrentTextColor();

            RenderUtil.Render2D.drawRoundedCorner(centerX, y, textWidth, 14 + 1, 5.5F, backgroundColor);
            RenderUtil.Render2D.drawRoundedCorner(centerX, y, textWidth - 1, 14, 5.5F, backgroundColor);

            Fonts.comfortaa[13].drawString(stack, text, centerX + 12, y + 6, textColor);

            String symbol = text.contains("§2вкл.") ? "F" : "F";
            Fonts.zloboocgip[16].drawString(stack, symbol, centerX + 2, y + 5, ColorUtil.getColorStyle(90f));

            return 10; // Высота уведомления
        }
    }
}
А если 2 анимации одновременно работают то нотифы багаются и не исчезают.
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
9 Июн 2024
Сообщения
46
Реакции[?]
0
Поинты[?]
0
123:
    private void onRenderTargetHUD(MatrixStack stack) {
        float x = this.targetHUD.getX();
        float y = this.targetHUD.getY();
        float width = 102.5F;
        float height = 32.0F;
        double bps = getTargetSpeed(target);
        this.target = this.getTarget(this.target);
        this.targetHudAnimation.setDuration(350);
        this.scale = this.targetHudAnimation.getOutput();


        double speed = Math.round(getTargetSpeed(target) * 20 * 10.0) / 10.0;


        if (this.target != null) {
            GlStateManager.pushMatrix();
            float xHP = x + 31.5F;
            float yHP = y + 23.5F;
            float widthHP = 70.0F;
            float heightHP = 7.0F;
            
            AnimationMath.sizeAnimation((double)(x + width / 2.0F), (double)(y + 60.0F), this.scale);
            
            Render2D.drawShadow(x, y, width, height - 2.0F, 12, ColorUtil.getColorStyle(90.0F));

            if(yes){
                Render2D.drawRoundedCorner(x, y, width, height - 2.0F, 7.0F, new Color(44, 44, 44, 155).getRGB());
                GaussianBlur.startBlur();
            }
            Render2D.drawRoundedCorner(x, y, width, height - 2.0F, 7.0F, currentBackgroundColor);
            if(yes){
                GaussianBlur.endBlur(15, 3);
            }
            if (this.target instanceof PlayerEntity) {
                Render2D.drawFace(x + 3.5F, y + 3.0F, 8.0F, 8.0F, 8.0F, 8.0F, 24.0F, 24.0F, 64.0F, 64.0F, (AbstractClientPlayerEntity)this.target);
            }
            
            this.health = AnimationMath.fast(this.health, this.target.getHealth() / this.target.getMaxHealth(), 45.0F);
            this.health = MathHelper.clamp(this.health, 0.0F, 1.0F);

            this.absorpation = AnimationMath.fast(this.absorpation, this.target.getAbsorptionAmount() / this.target.getMaxHealth(), 45.0F);
            this.absorpation = MathHelper.clamp(this.absorpation, 0.0F, 1.0F);

            float absorpationHP = 3.5F;
            float widthHPgradient = 69.0F;
            float healthPercentage = this.target.getHealth() / this.target.getMaxHealth();
            int color = this.getHealthColor(healthPercentage);



            Render2D.drawRoundedCorner(xHP + -1.5F, yHP, widthHP - 0.1F, absorpationHP, 3.0F, -1);

            Render2D.drawGradientRound(xHP + -1.0F, yHP + 1.0F, widthHPgradient * this.health, heightHP - 5.5F, 2.0F, color, color, color, color);
            float playerHealth = mc.player.getHealth() + mc.player.getAbsorptionAmount();
            float targetHealth = this.target.getHealth() + this.target.getAbsorptionAmount();
            if (targetHealth > playerHealth) {
                Fonts.comfortaa[14].drawString(stack, "-> LOSE", (double)(x + 49.5F), (double)(y + 17.0F), (new Color(255, 0, 0, 255)).getRGB());
            } else {
                Fonts.comfortaa[14].drawString(stack, "-> WIN", (double)(x + 49.0F), (double)(y + 17.0F), (new Color(0, 255, 0, 255)).getRGB());
            }

            Render2D.drawRoundedCorner(xHP + -1.5F, yHP, widthHP * this.absorpation, absorpationHP, 2.5F, (new Color(255, 213, 0, 255)).getRGB());
            String HP = String.valueOf(this.target.getHealth() + this.target.getAbsorptionAmount());
            HP.substring(0, Math.min(HP.length(), 4));
            StyledFont small = Fonts.comfortaa[14];
            String targetName = this.target.getName().getString();
            String substring = targetName.substring(0, Math.min(targetName.length(), 9));
            if (small.getWidth(substring) > widthHP - 0.5F) {
                substring = targetName.substring(0, Math.min(targetName.length(), 10));
            }

            StyledFont RenderName = Fonts.comfortaa[20];
            StyledFont RenderBps = Fonts.comfortaa[14];
            RenderName.drawString(stack, substring, (double)(x - -30.5F), (double)(y - -6.5F), this.currentTextColor);

            RenderBps.drawString(stack, String.valueOf(speed), (double)(x - -80.5F), (double)(y - -17.5F), this.currentTextColor);
            this.drawItemStack(x + 2.0F, y + -11.0F, 9.0F);
            String Absorpation = String.valueOf(this.target.getAbsorptionAmount());
            Absorpation.substring(0, Math.min(Absorpation.length(), 4));
            String targetHP = HP.substring(0, Math.min(HP.length(), 4));
            if (this.target.getAbsorptionAmount() <= 1.0F) {
                Fonts.comfortaa[14].drawString(stack, " " + targetHP, (double)(x + 28.5F), (double)(y + 17.0F), this.currentTextColor);
            }

            if (this.target.getAbsorptionAmount() > 1.0F) {
                Fonts.comfortaa[14].drawString(stack, " " + targetHP, (double)(x + 28.5F), (double)(y + 17.0F), this.currentTextColor);
            }

            GlStateManager.popMatrix();
            this.targetHUD.setWidth(width);
            this.targetHUD.setHeight(height);
        }

    }
 
Сверху Снизу