Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

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

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
24 Ноя 2023
Сообщения
65
Реакции
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.
там не отслеживаются предметы епт
 

Похожие темы

Ответы
28
Просмотры
1K
Ответы
25
Просмотры
1K
Ответы
33
Просмотры
3K
Назад
Сверху Снизу