Визуальная часть Notifications | exp 3.1 ready

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
14 Янв 2024
Сообщения
87
Реакции
0
Выберите загрузчик игры
  1. Fabric

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

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

Спасибо!

прошу не кидать в меня палки, моя 1 тема
сделал нотфы на 3.1,по установке см гайд - Notifications nurik skid | Exp 3.1 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz

ss =
Пожалуйста, авторизуйтесь для просмотра ссылки.


pasta:
Expand Collapse Copy
package wtf.dart.ui;

import com.mojang.blaze3d.matrix.MatrixStack;

import java.util.concurrent.CopyOnWriteArrayList;

import wtf.dart.command.friends.FriendStorage;
import wtf.dart.utils.animations.Animation;
import wtf.dart.utils.animations.Direction;
import wtf.dart.utils.animations.impl.EaseBackIn;
import wtf.dart.utils.animations.impl.EaseInOutQuad;
import wtf.dart.utils.math.MathUtil;
import wtf.dart.utils.render.ColorUtils;
import wtf.dart.utils.render.DisplayUtils;
import wtf.dart.utils.render.font.Fonts;
import static wtf.dart.utils.client.IMinecraft.mc;

public class NotificationManager {
    public static final FriendStorage NOTIFICATION_MANAGER = null;
    private final CopyOnWriteArrayList<Notification> notifications = new CopyOnWriteArrayList<>();
    private MathUtil AnimationMath;
    boolean state;

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

    public void draw(MatrixStack stack) {
        int yOffset = 0;


        float startY = (float) mc.getMainWindow().scaledHeight() / 2f + 20f;

        for (Notification notification : this.notifications) {
            long currentTime = System.currentTimeMillis();
            long elapsed = currentTime - notification.getTime();
            long totalDuration = notification.time2 * 1000L;

            if (elapsed <= totalDuration - 300L) {
                notification.yAnimation.setDirection(Direction.FORWARDS);
                notification.fadeAnimation.setDirection(Direction.FORWARDS);
            }

            if (elapsed > totalDuration - 300L) {
                notification.fadeAnimation.setDirection(Direction.BACKWARDS);
            }

            if (elapsed > totalDuration) {
                notification.yAnimation.setDirection(Direction.BACKWARDS);
            }

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

            float x = (float) mc.getMainWindow().scaledWidth() / 2f - notification.getWidth() / 2f;
            notification.yAnimation.setEndPoint(yOffset);
            notification.yAnimation.setDuration(500);
            notification.setX(x);
            notification.setY(MathUtil.fast(notification.getY(), startY + yOffset, 15.0f));
            yOffset += notification.getHeight() + 1.5f;

            notification.draw(stack);
        }
    }

    private class Notification {
        private float x = 0.0f;
        private float y = mc.getMainWindow().scaledHeight() + 22;
        private String text;
        private String content;
        private long time = System.currentTimeMillis();
        public Animation animation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        public Animation yAnimation = new EaseBackIn(300, 1.0, 1.0f);
        public Animation fadeAnimation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        float alpha;
        int time2 = 3;
        private boolean isState;
        private boolean state;

        private final float padding = 8.0f;
        private final float fontSize = 6.10f;
        private final float panelHeight = 17.5f;
        private final float cornerRadius = 3.3f;
        private final int bgAlpha = 160;

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

        public float draw(MatrixStack stack) {
            float panelWidth = getWidth();
            float panelX = getX();
            float panelY = getY();

            float fadeAlpha = (float) fadeAnimation.getOutput();
            int finalBgAlpha = (int) (bgAlpha * fadeAlpha);
            int textAlpha = (int) (230 * fadeAlpha);
            int contentAlpha = this.text.toLowerCase().contains("зелье") ?
                    (int) (200 * fadeAlpha) : (int) (180 * fadeAlpha);

            DisplayUtils.drawRoundedRect(panelX, panelY, panelWidth, panelHeight, cornerRadius,
                    ColorUtils.rgba(0, 0, 0, finalBgAlpha));

            float iconX = panelX + 5f;
            float iconY = panelY + 5f;

            // modules
            if (this.text.contains("включен")) {
                Fonts.icons2.drawText(stack, "J", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            } else if (this.text.contains("выключен")) {
                Fonts.icons2.drawText(stack, "K", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            }
            

            // shieldd
            if (this.text.contains("Сломал")) {
                Fonts.icons2.drawText(stack, "L", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            // potion
            if (this.text.contains("закончилось")) {
                Fonts.icons2.drawText(stack, "E", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            float textX = panelX + 19f;
            float textY = panelY + 6.5f;

            Fonts.sfMedium.drawText(stack, text, textX, textY,
                    ColorUtils.rgba(255, 255, 255, textAlpha), fontSize);

            if (content != null && !content.isEmpty()) {
                if (this.text.toLowerCase().contains("зелье")) {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 0, 255, contentAlpha), fontSize - 0.5f);
                } else {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 180, 180, contentAlpha), fontSize - 0.5f);
                }
            }

            return panelHeight;
        }



        public float getWidth() {
            float textWidth = Fonts.sfMedium.getWidth(text, fontSize);
            float contentWidth = content != null ? Fonts.sfMedium.getWidth(content, fontSize - 0.5f) : 0;
            float maxWidth = Math.max(textWidth, contentWidth);
            return maxWidth + 28f;
        }

        public float getHeight() {
            return content != null && !content.isEmpty() ? panelHeight + 5.0f : panelHeight;
        }

        public float getX() {
            return this.x;
        }

        public float getY() {
            return this.y;
        }

        public void setX(float x) {
            this.x = x;
        }

        public void setY(float y) {
            this.y = y;
        }

        public String getText() {
            return this.text;
        }

        public String getContent() {
            return this.content;
        }

        public long getTime() {
            return this.time;
        }
    }
}
 
ну пойдёт
 
норм:smilingimp:
 
прошу не кидать в меня палки, моя 1 тема
сделал нотфы на 3.1,по установке см гайд - Notifications nurik skid | Exp 3.1 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz

ss =
Пожалуйста, авторизуйтесь для просмотра ссылки.
дефолтненькие, но иконки можно было бы сделать поменьше конечно
 
прошу не кидать в меня палки, моя 1 тема
сделал нотфы на 3.1,по установке см гайд - Notifications nurik skid | Exp 3.1 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz

ss =
Пожалуйста, авторизуйтесь для просмотра ссылки.


pasta:
Expand Collapse Copy
package wtf.dart.ui;

import com.mojang.blaze3d.matrix.MatrixStack;

import java.util.concurrent.CopyOnWriteArrayList;

import wtf.dart.command.friends.FriendStorage;
import wtf.dart.utils.animations.Animation;
import wtf.dart.utils.animations.Direction;
import wtf.dart.utils.animations.impl.EaseBackIn;
import wtf.dart.utils.animations.impl.EaseInOutQuad;
import wtf.dart.utils.math.MathUtil;
import wtf.dart.utils.render.ColorUtils;
import wtf.dart.utils.render.DisplayUtils;
import wtf.dart.utils.render.font.Fonts;
import static wtf.dart.utils.client.IMinecraft.mc;

public class NotificationManager {
    public static final FriendStorage NOTIFICATION_MANAGER = null;
    private final CopyOnWriteArrayList<Notification> notifications = new CopyOnWriteArrayList<>();
    private MathUtil AnimationMath;
    boolean state;

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

    public void draw(MatrixStack stack) {
        int yOffset = 0;


        float startY = (float) mc.getMainWindow().scaledHeight() / 2f + 20f;

        for (Notification notification : this.notifications) {
            long currentTime = System.currentTimeMillis();
            long elapsed = currentTime - notification.getTime();
            long totalDuration = notification.time2 * 1000L;

            if (elapsed <= totalDuration - 300L) {
                notification.yAnimation.setDirection(Direction.FORWARDS);
                notification.fadeAnimation.setDirection(Direction.FORWARDS);
            }

            if (elapsed > totalDuration - 300L) {
                notification.fadeAnimation.setDirection(Direction.BACKWARDS);
            }

            if (elapsed > totalDuration) {
                notification.yAnimation.setDirection(Direction.BACKWARDS);
            }

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

            float x = (float) mc.getMainWindow().scaledWidth() / 2f - notification.getWidth() / 2f;
            notification.yAnimation.setEndPoint(yOffset);
            notification.yAnimation.setDuration(500);
            notification.setX(x);
            notification.setY(MathUtil.fast(notification.getY(), startY + yOffset, 15.0f));
            yOffset += notification.getHeight() + 1.5f;

            notification.draw(stack);
        }
    }

    private class Notification {
        private float x = 0.0f;
        private float y = mc.getMainWindow().scaledHeight() + 22;
        private String text;
        private String content;
        private long time = System.currentTimeMillis();
        public Animation animation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        public Animation yAnimation = new EaseBackIn(300, 1.0, 1.0f);
        public Animation fadeAnimation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        float alpha;
        int time2 = 3;
        private boolean isState;
        private boolean state;

        private final float padding = 8.0f;
        private final float fontSize = 6.10f;
        private final float panelHeight = 17.5f;
        private final float cornerRadius = 3.3f;
        private final int bgAlpha = 160;

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

        public float draw(MatrixStack stack) {
            float panelWidth = getWidth();
            float panelX = getX();
            float panelY = getY();

            float fadeAlpha = (float) fadeAnimation.getOutput();
            int finalBgAlpha = (int) (bgAlpha * fadeAlpha);
            int textAlpha = (int) (230 * fadeAlpha);
            int contentAlpha = this.text.toLowerCase().contains("зелье") ?
                    (int) (200 * fadeAlpha) : (int) (180 * fadeAlpha);

            DisplayUtils.drawRoundedRect(panelX, panelY, panelWidth, panelHeight, cornerRadius,
                    ColorUtils.rgba(0, 0, 0, finalBgAlpha));

            float iconX = panelX + 5f;
            float iconY = panelY + 5f;

            // modules
            if (this.text.contains("включен")) {
                Fonts.icons2.drawText(stack, "J", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            } else if (this.text.contains("выключен")) {
                Fonts.icons2.drawText(stack, "K", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            }
           

            // shieldd
            if (this.text.contains("Сломал")) {
                Fonts.icons2.drawText(stack, "L", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            // potion
            if (this.text.contains("закончилось")) {
                Fonts.icons2.drawText(stack, "E", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            float textX = panelX + 19f;
            float textY = panelY + 6.5f;

            Fonts.sfMedium.drawText(stack, text, textX, textY,
                    ColorUtils.rgba(255, 255, 255, textAlpha), fontSize);

            if (content != null && !content.isEmpty()) {
                if (this.text.toLowerCase().contains("зелье")) {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 0, 255, contentAlpha), fontSize - 0.5f);
                } else {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 180, 180, contentAlpha), fontSize - 0.5f);
                }
            }

            return panelHeight;
        }



        public float getWidth() {
            float textWidth = Fonts.sfMedium.getWidth(text, fontSize);
            float contentWidth = content != null ? Fonts.sfMedium.getWidth(content, fontSize - 0.5f) : 0;
            float maxWidth = Math.max(textWidth, contentWidth);
            return maxWidth + 28f;
        }

        public float getHeight() {
            return content != null && !content.isEmpty() ? panelHeight + 5.0f : panelHeight;
        }

        public float getX() {
            return this.x;
        }

        public float getY() {
            return this.y;
        }

        public void setX(float x) {
            this.x = x;
        }

        public void setY(float y) {
            this.y = y;
        }

        public String getText() {
            return this.text;
        }

        public String getContent() {
            return this.content;
        }

        public long getTime() {
            return this.time;
        }
    }
}
штоо, на югейме кто-то знает что такое анимации?
 
кайф, только чуть доработать и имба будет
 
прошу не кидать в меня палки, моя 1 тема
сделал нотфы на 3.1,по установке см гайд - Notifications nurik skid | Exp 3.1 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz

ss =
Пожалуйста, авторизуйтесь для просмотра ссылки.


pasta:
Expand Collapse Copy
package wtf.dart.ui;

import com.mojang.blaze3d.matrix.MatrixStack;

import java.util.concurrent.CopyOnWriteArrayList;

import wtf.dart.command.friends.FriendStorage;
import wtf.dart.utils.animations.Animation;
import wtf.dart.utils.animations.Direction;
import wtf.dart.utils.animations.impl.EaseBackIn;
import wtf.dart.utils.animations.impl.EaseInOutQuad;
import wtf.dart.utils.math.MathUtil;
import wtf.dart.utils.render.ColorUtils;
import wtf.dart.utils.render.DisplayUtils;
import wtf.dart.utils.render.font.Fonts;
import static wtf.dart.utils.client.IMinecraft.mc;

public class NotificationManager {
    public static final FriendStorage NOTIFICATION_MANAGER = null;
    private final CopyOnWriteArrayList<Notification> notifications = new CopyOnWriteArrayList<>();
    private MathUtil AnimationMath;
    boolean state;

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

    public void draw(MatrixStack stack) {
        int yOffset = 0;


        float startY = (float) mc.getMainWindow().scaledHeight() / 2f + 20f;

        for (Notification notification : this.notifications) {
            long currentTime = System.currentTimeMillis();
            long elapsed = currentTime - notification.getTime();
            long totalDuration = notification.time2 * 1000L;

            if (elapsed <= totalDuration - 300L) {
                notification.yAnimation.setDirection(Direction.FORWARDS);
                notification.fadeAnimation.setDirection(Direction.FORWARDS);
            }

            if (elapsed > totalDuration - 300L) {
                notification.fadeAnimation.setDirection(Direction.BACKWARDS);
            }

            if (elapsed > totalDuration) {
                notification.yAnimation.setDirection(Direction.BACKWARDS);
            }

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

            float x = (float) mc.getMainWindow().scaledWidth() / 2f - notification.getWidth() / 2f;
            notification.yAnimation.setEndPoint(yOffset);
            notification.yAnimation.setDuration(500);
            notification.setX(x);
            notification.setY(MathUtil.fast(notification.getY(), startY + yOffset, 15.0f));
            yOffset += notification.getHeight() + 1.5f;

            notification.draw(stack);
        }
    }

    private class Notification {
        private float x = 0.0f;
        private float y = mc.getMainWindow().scaledHeight() + 22;
        private String text;
        private String content;
        private long time = System.currentTimeMillis();
        public Animation animation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        public Animation yAnimation = new EaseBackIn(300, 1.0, 1.0f);
        public Animation fadeAnimation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        float alpha;
        int time2 = 3;
        private boolean isState;
        private boolean state;

        private final float padding = 8.0f;
        private final float fontSize = 6.10f;
        private final float panelHeight = 17.5f;
        private final float cornerRadius = 3.3f;
        private final int bgAlpha = 160;

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

        public float draw(MatrixStack stack) {
            float panelWidth = getWidth();
            float panelX = getX();
            float panelY = getY();

            float fadeAlpha = (float) fadeAnimation.getOutput();
            int finalBgAlpha = (int) (bgAlpha * fadeAlpha);
            int textAlpha = (int) (230 * fadeAlpha);
            int contentAlpha = this.text.toLowerCase().contains("зелье") ?
                    (int) (200 * fadeAlpha) : (int) (180 * fadeAlpha);

            DisplayUtils.drawRoundedRect(panelX, panelY, panelWidth, panelHeight, cornerRadius,
                    ColorUtils.rgba(0, 0, 0, finalBgAlpha));

            float iconX = panelX + 5f;
            float iconY = panelY + 5f;

            // modules
            if (this.text.contains("включен")) {
                Fonts.icons2.drawText(stack, "J", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            } else if (this.text.contains("выключен")) {
                Fonts.icons2.drawText(stack, "K", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            }
           

            // shieldd
            if (this.text.contains("Сломал")) {
                Fonts.icons2.drawText(stack, "L", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            // potion
            if (this.text.contains("закончилось")) {
                Fonts.icons2.drawText(stack, "E", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            float textX = panelX + 19f;
            float textY = panelY + 6.5f;

            Fonts.sfMedium.drawText(stack, text, textX, textY,
                    ColorUtils.rgba(255, 255, 255, textAlpha), fontSize);

            if (content != null && !content.isEmpty()) {
                if (this.text.toLowerCase().contains("зелье")) {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 0, 255, contentAlpha), fontSize - 0.5f);
                } else {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 180, 180, contentAlpha), fontSize - 0.5f);
                }
            }

            return panelHeight;
        }



        public float getWidth() {
            float textWidth = Fonts.sfMedium.getWidth(text, fontSize);
            float contentWidth = content != null ? Fonts.sfMedium.getWidth(content, fontSize - 0.5f) : 0;
            float maxWidth = Math.max(textWidth, contentWidth);
            return maxWidth + 28f;
        }

        public float getHeight() {
            return content != null && !content.isEmpty() ? panelHeight + 5.0f : panelHeight;
        }

        public float getX() {
            return this.x;
        }

        public float getY() {
            return this.y;
        }

        public void setX(float x) {
            this.x = x;
        }

        public void setY(float y) {
            this.y = y;
        }

        public String getText() {
            return this.text;
        }

        public String getContent() {
            return this.content;
        }

        public long getTime() {
            return this.time;
        }
    }
}
так себе
 
вопрос не ап темы как сделать
if (this.text.contains("Заюзал")) { // "Заюзал" используется для установки иконки к нотифкам, в которых содержится этот текст
im.expensive.utils.font.Fonts.nurik[16].drawString(stack,"G",(double)(XStart + 4), (double) (posY + 20.0F), -1);
}
умне нет кастом сестимы шрифтов
 
вопрос не ап темы как сделать
if (this.text.contains("Заюзал")) { // "Заюзал" используется для установки иконки к нотифкам, в которых содержится этот текст
im.expensive.utils.font.Fonts.nurik[16].drawString(stack,"G",(double)(XStart + 4), (double) (posY + 20.0F), -1);
}
умне нет кастом сестимы шрифтов
используй что есть
 
прошу не кидать в меня палки, моя 1 тема
сделал нотфы на 3.1,по установке см гайд - Notifications nurik skid | Exp 3.1 | Сайт читов, скриптов и кодов для онлайн игр - YouGame.Biz

ss =
Пожалуйста, авторизуйтесь для просмотра ссылки.


pasta:
Expand Collapse Copy
package wtf.dart.ui;

import com.mojang.blaze3d.matrix.MatrixStack;

import java.util.concurrent.CopyOnWriteArrayList;

import wtf.dart.command.friends.FriendStorage;
import wtf.dart.utils.animations.Animation;
import wtf.dart.utils.animations.Direction;
import wtf.dart.utils.animations.impl.EaseBackIn;
import wtf.dart.utils.animations.impl.EaseInOutQuad;
import wtf.dart.utils.math.MathUtil;
import wtf.dart.utils.render.ColorUtils;
import wtf.dart.utils.render.DisplayUtils;
import wtf.dart.utils.render.font.Fonts;
import static wtf.dart.utils.client.IMinecraft.mc;

public class NotificationManager {
    public static final FriendStorage NOTIFICATION_MANAGER = null;
    private final CopyOnWriteArrayList<Notification> notifications = new CopyOnWriteArrayList<>();
    private MathUtil AnimationMath;
    boolean state;

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

    public void draw(MatrixStack stack) {
        int yOffset = 0;


        float startY = (float) mc.getMainWindow().scaledHeight() / 2f + 20f;

        for (Notification notification : this.notifications) {
            long currentTime = System.currentTimeMillis();
            long elapsed = currentTime - notification.getTime();
            long totalDuration = notification.time2 * 1000L;

            if (elapsed <= totalDuration - 300L) {
                notification.yAnimation.setDirection(Direction.FORWARDS);
                notification.fadeAnimation.setDirection(Direction.FORWARDS);
            }

            if (elapsed > totalDuration - 300L) {
                notification.fadeAnimation.setDirection(Direction.BACKWARDS);
            }

            if (elapsed > totalDuration) {
                notification.yAnimation.setDirection(Direction.BACKWARDS);
            }

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

            float x = (float) mc.getMainWindow().scaledWidth() / 2f - notification.getWidth() / 2f;
            notification.yAnimation.setEndPoint(yOffset);
            notification.yAnimation.setDuration(500);
            notification.setX(x);
            notification.setY(MathUtil.fast(notification.getY(), startY + yOffset, 15.0f));
            yOffset += notification.getHeight() + 1.5f;

            notification.draw(stack);
        }
    }

    private class Notification {
        private float x = 0.0f;
        private float y = mc.getMainWindow().scaledHeight() + 22;
        private String text;
        private String content;
        private long time = System.currentTimeMillis();
        public Animation animation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        public Animation yAnimation = new EaseBackIn(300, 1.0, 1.0f);
        public Animation fadeAnimation = new EaseInOutQuad(300, 1.0, Direction.FORWARDS);
        float alpha;
        int time2 = 3;
        private boolean isState;
        private boolean state;

        private final float padding = 8.0f;
        private final float fontSize = 6.10f;
        private final float panelHeight = 17.5f;
        private final float cornerRadius = 3.3f;
        private final int bgAlpha = 160;

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

        public float draw(MatrixStack stack) {
            float panelWidth = getWidth();
            float panelX = getX();
            float panelY = getY();

            float fadeAlpha = (float) fadeAnimation.getOutput();
            int finalBgAlpha = (int) (bgAlpha * fadeAlpha);
            int textAlpha = (int) (230 * fadeAlpha);
            int contentAlpha = this.text.toLowerCase().contains("зелье") ?
                    (int) (200 * fadeAlpha) : (int) (180 * fadeAlpha);

            DisplayUtils.drawRoundedRect(panelX, panelY, panelWidth, panelHeight, cornerRadius,
                    ColorUtils.rgba(0, 0, 0, finalBgAlpha));

            float iconX = panelX + 5f;
            float iconY = panelY + 5f;

            // modules
            if (this.text.contains("включен")) {
                Fonts.icons2.drawText(stack, "J", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            } else if (this.text.contains("выключен")) {
                Fonts.icons2.drawText(stack, "K", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 10f);
            }
           

            // shieldd
            if (this.text.contains("Сломал")) {
                Fonts.icons2.drawText(stack, "L", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            // potion
            if (this.text.contains("закончилось")) {
                Fonts.icons2.drawText(stack, "E", iconX, iconY,
                        ColorUtils.rgba(255, 255, 255, (int)(255 * fadeAlpha)), 11f);
            }

            float textX = panelX + 19f;
            float textY = panelY + 6.5f;

            Fonts.sfMedium.drawText(stack, text, textX, textY,
                    ColorUtils.rgba(255, 255, 255, textAlpha), fontSize);

            if (content != null && !content.isEmpty()) {
                if (this.text.toLowerCase().contains("зелье")) {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 0, 255, contentAlpha), fontSize - 0.5f);
                } else {
                    Fonts.sfMedium.drawText(stack, content, textX, textY + 10.0f,
                            ColorUtils.rgba(180, 180, 180, contentAlpha), fontSize - 0.5f);
                }
            }

            return panelHeight;
        }



        public float getWidth() {
            float textWidth = Fonts.sfMedium.getWidth(text, fontSize);
            float contentWidth = content != null ? Fonts.sfMedium.getWidth(content, fontSize - 0.5f) : 0;
            float maxWidth = Math.max(textWidth, contentWidth);
            return maxWidth + 28f;
        }

        public float getHeight() {
            return content != null && !content.isEmpty() ? panelHeight + 5.0f : panelHeight;
        }

        public float getX() {
            return this.x;
        }

        public float getY() {
            return this.y;
        }

        public void setX(float x) {
            this.x = x;
        }

        public void setY(float y) {
            this.y = y;
        }

        public String getText() {
            return this.text;
        }

        public String getContent() {
            return this.content;
        }

        public long getTime() {
            return this.time;
        }
    }
}
красиво, только еще можно размытие по гауссу сделать, немного уменьшить и сделать тень, будет фулл копия нотификаций нурика
 
Я все сделал по туториалу, а в худ не добавляются почему то(
 
Назад
Сверху Снизу