• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Визуальная часть Кулдауны на 3.1 / eva

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2023
Сообщения
64
Реакции
0
Выберите загрузчик игры
  1. Vanilla
пастеры уже как полгода не могут сделать кулдауны, вот им подгон
Java:
Expand Collapse Copy
package alpha.night.ui.display.impl;

import alpha.night.NightDLS;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import alpha.night.events.EventDisplay;
import alpha.night.modules.api.ModuleManager;
import alpha.night.modules.impl.render.HUD;
import alpha.night.modules.impl.render.Theme;
import alpha.night.ui.display.ElementRenderer;
import alpha.night.utils.animations.Animation;
import alpha.night.utils.animations.Direction;
import alpha.night.utils.animations.easing.CompactAnimation;
import alpha.night.utils.animations.easing.Easing;
import alpha.night.utils.animations.impl.EaseBackIn;
import alpha.night.utils.drag.Dragging;
import alpha.night.utils.render.GaussianBlur;
import alpha.night.utils.render.color.ColorUtils;
import alpha.night.utils.render.font.Fonts;
import alpha.night.utils.render.gl.Scissor;
import alpha.night.utils.render.rect.RenderUtility;
import alpha.night.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.multiplayer.PlayerController;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class CooldownsRenderer implements ElementRenderer {

    final Dragging dragging;
    final CompactAnimation widthAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final CompactAnimation heightAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final Animation animation = new EaseBackIn(350, 1, 1);

    float width;
    float height;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        boolean shouldRender = false;
        Item[] trackedItems = {
                Items.ENDER_PEARL,
                Items.SHIELD,
                Items.CROSSBOW,
                Items.DRIED_KELP,
                Items.ENDER_EYE,
                Items.NETHERITE_SCRAP,
                Items.GOLDEN_APPLE,
                Items.ENCHANTED_GOLDEN_APPLE
        };
        for (Item item : trackedItems) {
            if (hasCooldown(item)) {
                shouldRender = true;
                break;
            }
        }

        if (mc.currentScreen instanceof ChatScreen) {
            shouldRender = true;
        }

        animation.setDirection(shouldRender ? Direction.FORWARDS : Direction.BACKWARDS);
        animation.setDuration(200);

        ITextComponent title = GradientUtil.gradient("         Cooldowns");
        ITextComponent icon = GradientUtil.gradient("      T");

        GlStateManager.pushMatrix();
        sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
        drawStyledRect(posX, posY, width, height, 3.5f);

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);

        // Сдвигаем заголовок чуть правее
        Fonts.sfuy.drawCenteredText(ms, title, posX + width / 4.1f, posY + padding - 0.9f, 7.4f);
        Fonts.icons2.drawCenteredText(ms, icon, posX + width / 1.15f, posY + padding - 0.4f, 7.5f);

        // Разделительная линия
        float separatorY = posY + fontSize + padding * 1.6f;
        RenderUtility.drawRect(posX + 4, separatorY, posX + width - 4, separatorY + 0.7f, ColorUtils.setAlpha(Theme.RectColor(0), 60));

        posY += fontSize + padding * 2.1f + 3f;

        float maxWidth = Fonts.sfuy.getWidth(title, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2f;

        for (Item item : trackedItems) {
            if (!hasCooldown(item)) continue;

            float cooldown = getItemCooldown(item);
            int ticksLeft = (int)(cooldown * 20);
            String name = getItemDisplayName(item);
            String time = String.format("%.1fs", ticksLeft / 20.0f);

            float nameWidth = Fonts.sfuy.getWidth(name, fontSize);
            float timeWidth = Fonts.sfuy.getWidth(time, fontSize);
            float localWidth = nameWidth + timeWidth + padding * 3;

            Fonts.sfuy.drawText(ms, name, posX + padding, posY - 2.6f, ColorUtils.rgba(255, 255, 255, 255), 7);
            Fonts.sfuy.drawText(ms, time, posX + width - timeWidth - padding, posY - 2.2f, ColorUtils.rgba(255, 255, 255, 255), 7);

            if (localWidth > maxWidth) {
                maxWidth = localWidth;
            }

            posY += (fontSize + padding) + 1;
            localHeight += (fontSize + padding) + 1;
        }

        GlStateManager.popMatrix();
        Scissor.unset();
        Scissor.pop();

        widthAnimation.run(Math.max(maxWidth, 73));
        width = (float) widthAnimation.getValue();
        heightAnimation.run(localHeight);
        height = (float) heightAnimation.getValue();
        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private boolean hasCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().hasCooldown(item);
        } else {
            return mc.player.getCooldownTracker().hasCooldown(item);
        }
    }

    private float getItemCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        } else {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        }
    }

    private String getItemDisplayName(Item item) {
        if (item == Items.GOLDEN_APPLE) {
            return "Гепл";
        } else if (item == Items.ENCHANTED_GOLDEN_APPLE) {
            return "Чарка";
        }
        return new ItemStack(item).getDisplayName().getString();
    }

    private void drawStyledRect(float x, float y, float width, float height, float radius) {
        ModuleManager moduleManager = NightDLS.getInstance().getModuleManager();
        HUD hud = moduleManager.getHud();

        int fillColor = hud.blur.get()
                ? ColorUtils.rgba(5, 5, 5, 150)
                : ColorUtils.rgba(5, 5, 5, 200);

        int overlayColor = ColorUtils.setAlpha(Theme.RectColor(0), 30);

        if (hud.blur.get()) {
            GaussianBlur.startBlur();
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
            GaussianBlur.endBlur(8, 1);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        } else {
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        }

        RenderUtility.drawRoundedOutline(x, y, width, height, radius, 1.0f, Theme.RectColor(0));
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }
}



ss
1748450933234.png
 
пастеры уже как полгода не могут сделать кулдауны, вот им подгон
Java:
Expand Collapse Copy
package alpha.night.ui.display.impl;

import alpha.night.NightDLS;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import alpha.night.events.EventDisplay;
import alpha.night.modules.api.ModuleManager;
import alpha.night.modules.impl.render.HUD;
import alpha.night.modules.impl.render.Theme;
import alpha.night.ui.display.ElementRenderer;
import alpha.night.utils.animations.Animation;
import alpha.night.utils.animations.Direction;
import alpha.night.utils.animations.easing.CompactAnimation;
import alpha.night.utils.animations.easing.Easing;
import alpha.night.utils.animations.impl.EaseBackIn;
import alpha.night.utils.drag.Dragging;
import alpha.night.utils.render.GaussianBlur;
import alpha.night.utils.render.color.ColorUtils;
import alpha.night.utils.render.font.Fonts;
import alpha.night.utils.render.gl.Scissor;
import alpha.night.utils.render.rect.RenderUtility;
import alpha.night.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.multiplayer.PlayerController;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class CooldownsRenderer implements ElementRenderer {

    final Dragging dragging;
    final CompactAnimation widthAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final CompactAnimation heightAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final Animation animation = new EaseBackIn(350, 1, 1);

    float width;
    float height;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        boolean shouldRender = false;
        Item[] trackedItems = {
                Items.ENDER_PEARL,
                Items.SHIELD,
                Items.CROSSBOW,
                Items.DRIED_KELP,
                Items.ENDER_EYE,
                Items.NETHERITE_SCRAP,
                Items.GOLDEN_APPLE,
                Items.ENCHANTED_GOLDEN_APPLE
        };
        for (Item item : trackedItems) {
            if (hasCooldown(item)) {
                shouldRender = true;
                break;
            }
        }

        if (mc.currentScreen instanceof ChatScreen) {
            shouldRender = true;
        }

        animation.setDirection(shouldRender ? Direction.FORWARDS : Direction.BACKWARDS);
        animation.setDuration(200);

        ITextComponent title = GradientUtil.gradient("         Cooldowns");
        ITextComponent icon = GradientUtil.gradient("      T");

        GlStateManager.pushMatrix();
        sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
        drawStyledRect(posX, posY, width, height, 3.5f);

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);

        // Сдвигаем заголовок чуть правее
        Fonts.sfuy.drawCenteredText(ms, title, posX + width / 4.1f, posY + padding - 0.9f, 7.4f);
        Fonts.icons2.drawCenteredText(ms, icon, posX + width / 1.15f, posY + padding - 0.4f, 7.5f);

        // Разделительная линия
        float separatorY = posY + fontSize + padding * 1.6f;
        RenderUtility.drawRect(posX + 4, separatorY, posX + width - 4, separatorY + 0.7f, ColorUtils.setAlpha(Theme.RectColor(0), 60));

        posY += fontSize + padding * 2.1f + 3f;

        float maxWidth = Fonts.sfuy.getWidth(title, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2f;

        for (Item item : trackedItems) {
            if (!hasCooldown(item)) continue;

            float cooldown = getItemCooldown(item);
            int ticksLeft = (int)(cooldown * 20);
            String name = getItemDisplayName(item);
            String time = String.format("%.1fs", ticksLeft / 20.0f);

            float nameWidth = Fonts.sfuy.getWidth(name, fontSize);
            float timeWidth = Fonts.sfuy.getWidth(time, fontSize);
            float localWidth = nameWidth + timeWidth + padding * 3;

            Fonts.sfuy.drawText(ms, name, posX + padding, posY - 2.6f, ColorUtils.rgba(255, 255, 255, 255), 7);
            Fonts.sfuy.drawText(ms, time, posX + width - timeWidth - padding, posY - 2.2f, ColorUtils.rgba(255, 255, 255, 255), 7);

            if (localWidth > maxWidth) {
                maxWidth = localWidth;
            }

            posY += (fontSize + padding) + 1;
            localHeight += (fontSize + padding) + 1;
        }

        GlStateManager.popMatrix();
        Scissor.unset();
        Scissor.pop();

        widthAnimation.run(Math.max(maxWidth, 73));
        width = (float) widthAnimation.getValue();
        heightAnimation.run(localHeight);
        height = (float) heightAnimation.getValue();
        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private boolean hasCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().hasCooldown(item);
        } else {
            return mc.player.getCooldownTracker().hasCooldown(item);
        }
    }

    private float getItemCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        } else {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        }
    }

    private String getItemDisplayName(Item item) {
        if (item == Items.GOLDEN_APPLE) {
            return "Гепл";
        } else if (item == Items.ENCHANTED_GOLDEN_APPLE) {
            return "Чарка";
        }
        return new ItemStack(item).getDisplayName().getString();
    }

    private void drawStyledRect(float x, float y, float width, float height, float radius) {
        ModuleManager moduleManager = NightDLS.getInstance().getModuleManager();
        HUD hud = moduleManager.getHud();

        int fillColor = hud.blur.get()
                ? ColorUtils.rgba(5, 5, 5, 150)
                : ColorUtils.rgba(5, 5, 5, 200);

        int overlayColor = ColorUtils.setAlpha(Theme.RectColor(0), 30);

        if (hud.blur.get()) {
            GaussianBlur.startBlur();
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
            GaussianBlur.endBlur(8, 1);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        } else {
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        }

        RenderUtility.drawRoundedOutline(x, y, width, height, radius, 1.0f, Theme.RectColor(0));
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }
}



ss Посмотреть вложение 307437
да ну нахуй, кто то додумался
Item[] trackedItems = {
Items.ENDER_PEARL,
Items.SHIELD,
Items.CROSSBOW,
Items.DRIED_KELP,
Items.ENDER_EYE,
Items.NETHERITE_SCRAP,
Items.GOLDEN_APPLE,
Items.ENCHANTED_GOLDEN_APPLE
};
 
boolean shouldRender = false;
Item[] trackedItems = {
// Сдвигаем заголовок чуть правее
// Разделительная линия

xdddddddddddddddddddddddddddd
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
в сурсах зовчика тоже было
 
чую нейросеть код
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
фу
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
есть в любом сурсе+гпт
 
пастеры уже как полгода не могут сделать кулдауны, вот им подгон
Java:
Expand Collapse Copy
package alpha.night.ui.display.impl;

import alpha.night.NightDLS;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import alpha.night.events.EventDisplay;
import alpha.night.modules.api.ModuleManager;
import alpha.night.modules.impl.render.HUD;
import alpha.night.modules.impl.render.Theme;
import alpha.night.ui.display.ElementRenderer;
import alpha.night.utils.animations.Animation;
import alpha.night.utils.animations.Direction;
import alpha.night.utils.animations.easing.CompactAnimation;
import alpha.night.utils.animations.easing.Easing;
import alpha.night.utils.animations.impl.EaseBackIn;
import alpha.night.utils.drag.Dragging;
import alpha.night.utils.render.GaussianBlur;
import alpha.night.utils.render.color.ColorUtils;
import alpha.night.utils.render.font.Fonts;
import alpha.night.utils.render.gl.Scissor;
import alpha.night.utils.render.rect.RenderUtility;
import alpha.night.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.multiplayer.PlayerController;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class CooldownsRenderer implements ElementRenderer {

    final Dragging dragging;
    final CompactAnimation widthAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final CompactAnimation heightAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final Animation animation = new EaseBackIn(350, 1, 1);

    float width;
    float height;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        boolean shouldRender = false;
        Item[] trackedItems = {
                Items.ENDER_PEARL,
                Items.SHIELD,
                Items.CROSSBOW,
                Items.DRIED_KELP,
                Items.ENDER_EYE,
                Items.NETHERITE_SCRAP,
                Items.GOLDEN_APPLE,
                Items.ENCHANTED_GOLDEN_APPLE
        };
        for (Item item : trackedItems) {
            if (hasCooldown(item)) {
                shouldRender = true;
                break;
            }
        }

        if (mc.currentScreen instanceof ChatScreen) {
            shouldRender = true;
        }

        animation.setDirection(shouldRender ? Direction.FORWARDS : Direction.BACKWARDS);
        animation.setDuration(200);

        ITextComponent title = GradientUtil.gradient("         Cooldowns");
        ITextComponent icon = GradientUtil.gradient("      T");

        GlStateManager.pushMatrix();
        sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
        drawStyledRect(posX, posY, width, height, 3.5f);

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);

        // Сдвигаем заголовок чуть правее
        Fonts.sfuy.drawCenteredText(ms, title, posX + width / 4.1f, posY + padding - 0.9f, 7.4f);
        Fonts.icons2.drawCenteredText(ms, icon, posX + width / 1.15f, posY + padding - 0.4f, 7.5f);

        // Разделительная линия
        float separatorY = posY + fontSize + padding * 1.6f;
        RenderUtility.drawRect(posX + 4, separatorY, posX + width - 4, separatorY + 0.7f, ColorUtils.setAlpha(Theme.RectColor(0), 60));

        posY += fontSize + padding * 2.1f + 3f;

        float maxWidth = Fonts.sfuy.getWidth(title, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2f;

        for (Item item : trackedItems) {
            if (!hasCooldown(item)) continue;

            float cooldown = getItemCooldown(item);
            int ticksLeft = (int)(cooldown * 20);
            String name = getItemDisplayName(item);
            String time = String.format("%.1fs", ticksLeft / 20.0f);

            float nameWidth = Fonts.sfuy.getWidth(name, fontSize);
            float timeWidth = Fonts.sfuy.getWidth(time, fontSize);
            float localWidth = nameWidth + timeWidth + padding * 3;

            Fonts.sfuy.drawText(ms, name, posX + padding, posY - 2.6f, ColorUtils.rgba(255, 255, 255, 255), 7);
            Fonts.sfuy.drawText(ms, time, posX + width - timeWidth - padding, posY - 2.2f, ColorUtils.rgba(255, 255, 255, 255), 7);

            if (localWidth > maxWidth) {
                maxWidth = localWidth;
            }

            posY += (fontSize + padding) + 1;
            localHeight += (fontSize + padding) + 1;
        }

        GlStateManager.popMatrix();
        Scissor.unset();
        Scissor.pop();

        widthAnimation.run(Math.max(maxWidth, 73));
        width = (float) widthAnimation.getValue();
        heightAnimation.run(localHeight);
        height = (float) heightAnimation.getValue();
        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private boolean hasCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().hasCooldown(item);
        } else {
            return mc.player.getCooldownTracker().hasCooldown(item);
        }
    }

    private float getItemCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        } else {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        }
    }

    private String getItemDisplayName(Item item) {
        if (item == Items.GOLDEN_APPLE) {
            return "Гепл";
        } else if (item == Items.ENCHANTED_GOLDEN_APPLE) {
            return "Чарка";
        }
        return new ItemStack(item).getDisplayName().getString();
    }

    private void drawStyledRect(float x, float y, float width, float height, float radius) {
        ModuleManager moduleManager = NightDLS.getInstance().getModuleManager();
        HUD hud = moduleManager.getHud();

        int fillColor = hud.blur.get()
                ? ColorUtils.rgba(5, 5, 5, 150)
                : ColorUtils.rgba(5, 5, 5, 200);

        int overlayColor = ColorUtils.setAlpha(Theme.RectColor(0), 30);

        if (hud.blur.get()) {
            GaussianBlur.startBlur();
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
            GaussianBlur.endBlur(8, 1);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        } else {
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        }

        RenderUtility.drawRoundedOutline(x, y, width, height, radius, 1.0f, Theme.RectColor(0));
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }
}



ss Посмотреть вложение 307437
делать кулдауны на все предметы: :roflanBuldiga:
делать какую-то хуйню: :seemsgood:
 
пастеры уже как полгода не могут сделать кулдауны, вот им подгон
Java:
Expand Collapse Copy
package alpha.night.ui.display.impl;

import alpha.night.NightDLS;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import alpha.night.events.EventDisplay;
import alpha.night.modules.api.ModuleManager;
import alpha.night.modules.impl.render.HUD;
import alpha.night.modules.impl.render.Theme;
import alpha.night.ui.display.ElementRenderer;
import alpha.night.utils.animations.Animation;
import alpha.night.utils.animations.Direction;
import alpha.night.utils.animations.easing.CompactAnimation;
import alpha.night.utils.animations.easing.Easing;
import alpha.night.utils.animations.impl.EaseBackIn;
import alpha.night.utils.drag.Dragging;
import alpha.night.utils.render.GaussianBlur;
import alpha.night.utils.render.color.ColorUtils;
import alpha.night.utils.render.font.Fonts;
import alpha.night.utils.render.gl.Scissor;
import alpha.night.utils.render.rect.RenderUtility;
import alpha.night.utils.text.GradientUtil;
import lombok.AccessLevel;
import lombok.RequiredArgsConstructor;
import lombok.experimental.FieldDefaults;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.multiplayer.PlayerController;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.util.text.ITextComponent;

@FieldDefaults(level = AccessLevel.PRIVATE)
@RequiredArgsConstructor
public class CooldownsRenderer implements ElementRenderer {

    final Dragging dragging;
    final CompactAnimation widthAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final CompactAnimation heightAnimation = new CompactAnimation(Easing.EASE_OUT_QUART, 100);
    final Animation animation = new EaseBackIn(350, 1, 1);

    float width;
    float height;

    @Override
    public void render(EventDisplay eventDisplay) {
        MatrixStack ms = eventDisplay.getMatrixStack();
        float posX = dragging.getX();
        float posY = dragging.getY();
        float fontSize = 6.5f;
        float padding = 5;

        boolean shouldRender = false;
        Item[] trackedItems = {
                Items.ENDER_PEARL,
                Items.SHIELD,
                Items.CROSSBOW,
                Items.DRIED_KELP,
                Items.ENDER_EYE,
                Items.NETHERITE_SCRAP,
                Items.GOLDEN_APPLE,
                Items.ENCHANTED_GOLDEN_APPLE
        };
        for (Item item : trackedItems) {
            if (hasCooldown(item)) {
                shouldRender = true;
                break;
            }
        }

        if (mc.currentScreen instanceof ChatScreen) {
            shouldRender = true;
        }

        animation.setDirection(shouldRender ? Direction.FORWARDS : Direction.BACKWARDS);
        animation.setDuration(200);

        ITextComponent title = GradientUtil.gradient("         Cooldowns");
        ITextComponent icon = GradientUtil.gradient("      T");

        GlStateManager.pushMatrix();
        sizeAnimation(posX + (width / 2), posY + (height / 2), animation.getOutput());
        drawStyledRect(posX, posY, width, height, 3.5f);

        Scissor.push();
        Scissor.setFromComponentCoordinates(posX, posY, width, height);

        // Сдвигаем заголовок чуть правее
        Fonts.sfuy.drawCenteredText(ms, title, posX + width / 4.1f, posY + padding - 0.9f, 7.4f);
        Fonts.icons2.drawCenteredText(ms, icon, posX + width / 1.15f, posY + padding - 0.4f, 7.5f);

        // Разделительная линия
        float separatorY = posY + fontSize + padding * 1.6f;
        RenderUtility.drawRect(posX + 4, separatorY, posX + width - 4, separatorY + 0.7f, ColorUtils.setAlpha(Theme.RectColor(0), 60));

        posY += fontSize + padding * 2.1f + 3f;

        float maxWidth = Fonts.sfuy.getWidth(title, fontSize) + padding * 2;
        float localHeight = fontSize + padding * 2f;

        for (Item item : trackedItems) {
            if (!hasCooldown(item)) continue;

            float cooldown = getItemCooldown(item);
            int ticksLeft = (int)(cooldown * 20);
            String name = getItemDisplayName(item);
            String time = String.format("%.1fs", ticksLeft / 20.0f);

            float nameWidth = Fonts.sfuy.getWidth(name, fontSize);
            float timeWidth = Fonts.sfuy.getWidth(time, fontSize);
            float localWidth = nameWidth + timeWidth + padding * 3;

            Fonts.sfuy.drawText(ms, name, posX + padding, posY - 2.6f, ColorUtils.rgba(255, 255, 255, 255), 7);
            Fonts.sfuy.drawText(ms, time, posX + width - timeWidth - padding, posY - 2.2f, ColorUtils.rgba(255, 255, 255, 255), 7);

            if (localWidth > maxWidth) {
                maxWidth = localWidth;
            }

            posY += (fontSize + padding) + 1;
            localHeight += (fontSize + padding) + 1;
        }

        GlStateManager.popMatrix();
        Scissor.unset();
        Scissor.pop();

        widthAnimation.run(Math.max(maxWidth, 73));
        width = (float) widthAnimation.getValue();
        heightAnimation.run(localHeight);
        height = (float) heightAnimation.getValue();
        dragging.setWidth(width);
        dragging.setHeight(height);
    }

    private boolean hasCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().hasCooldown(item);
        } else {
            return mc.player.getCooldownTracker().hasCooldown(item);
        }
    }

    private float getItemCooldown(Item item) {
        if (mc.isSingleplayer()) {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        } else {
            return mc.player.getCooldownTracker().getCooldown(item, 0);
        }
    }

    private String getItemDisplayName(Item item) {
        if (item == Items.GOLDEN_APPLE) {
            return "Гепл";
        } else if (item == Items.ENCHANTED_GOLDEN_APPLE) {
            return "Чарка";
        }
        return new ItemStack(item).getDisplayName().getString();
    }

    private void drawStyledRect(float x, float y, float width, float height, float radius) {
        ModuleManager moduleManager = NightDLS.getInstance().getModuleManager();
        HUD hud = moduleManager.getHud();

        int fillColor = hud.blur.get()
                ? ColorUtils.rgba(5, 5, 5, 150)
                : ColorUtils.rgba(5, 5, 5, 200);

        int overlayColor = ColorUtils.setAlpha(Theme.RectColor(0), 30);

        if (hud.blur.get()) {
            GaussianBlur.startBlur();
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
            GaussianBlur.endBlur(8, 1);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        } else {
            RenderUtility.drawRoundedRect(x, y, width, height, radius, fillColor);
            RenderUtility.drawRoundedRect(x, y, width, height, radius, overlayColor);
        }

        RenderUtility.drawRoundedOutline(x, y, width, height, radius, 1.0f, Theme.RectColor(0));
    }

    public static void sizeAnimation(double width, double height, double scale) {
        GlStateManager.translated(width, height, 0);
        GlStateManager.scaled(scale, scale, scale);
        GlStateManager.translated(-width, -height, 0);
    }
}



ss Посмотреть вложение 307437
pizец
 
много мусора
 
я че серьезно буду заливать чет годное на этот форум?
Да. Иначе не заливай этот мусор ебанный. Не уважаешь Пользователей форума - Разлогинься и не заходи больше нахуй
 
Да. Иначе не заливай этот мусор ебанный. Не уважаешь Пользователей форума - Разлогинься и не заходи больше нахуй
а че по твоему уважать, я же сказал че это для пастеров, че ты мне говоришь
 
да ну нахуй, кто то додумался
Item[] trackedItems = {
Items.ENDER_PEARL,
Items.SHIELD,
Items.CROSSBOW,
Items.DRIED_KELP,
Items.ENDER_EYE,
Items.NETHERITE_SCRAP,
Items.GOLDEN_APPLE,
Items.ENCHANTED_GOLDEN_APPLE
};
сделать на все предметы - нееет
сделать на массив предметов - одааа
 
сделать на все предметы - нееет
сделать на массив предметов - одааа
на холике вроде есть какая то хуйня с айтемами рандомными
АХАХАХХАХА СУКА УЕБИЩЕ:

Item[] trackedItems = {
Items.ENDER_PEARL,
Items.SHIELD,
Items.CROSSBOW,
Items.DRIED_KELP,
Items.ENDER_EYE,
Items.NETHERITE_SCRAP,
Items.GOLDEN_APPLE,
Items.ENCHANTED_GOLDEN_APPLE
};

В самом майнкрафте есть класс на получение кулдаунов.. помоему CooldownTracker.
там не отслеживаются предметы епт
 
Назад
Сверху Снизу