From 55c965603f34bd6308676fab423319d6f6781472 Mon Sep 17 00:00:00 2001 From: loki5512344 Date: Tue, 30 Dec 2025 21:08:27 +0100 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=20=D0=B1=D0=B0=D0=B3=20=D1=81=20=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D0=B4=D0=B8=D0=B5=D0=BD=D1=82=D0=B0=20=D0=B2=20GUI?= =?UTF-8?q?:=20=D1=82=D0=B5=D0=BF=D0=B5=D1=80=D1=8C=20=D0=B8=D1=81=D0=BF?= =?UTF-8?q?=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=D1=81=D1=8F=20MiniMe?= =?UTF-8?q?ssage=20=D1=84=D0=BE=D1=80=D0=BC=D0=B0=D1=82=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B8=D0=BB=D1=8C=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B3=D1=80=D0=B0=D0=B4=D0=B8=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lochat/gradient/gui/GradientConfirmGUI.java | 13 +++++++++---- .../com/loki/lochat/gradient/util/GradientUtil.java | 6 +++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java b/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java index 5cd1937..640a254 100644 --- a/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java +++ b/src/main/java/com/loki/lochat/gradient/gui/GradientConfirmGUI.java @@ -3,6 +3,7 @@ package com.loki.lochat.gradient.gui; import com.loki.lochat.gradient.GradientModule; import com.loki.lochat.gradient.util.GradientConstants; import com.loki.lochat.gradient.util.GradientUtil; +import com.loki.lochat.utils.ChatFormatter; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; @@ -67,7 +68,8 @@ public class GradientConfirmGUI implements InventoryHolder { skullMeta.setOwningPlayer(player); String preview = buildPreview(); - Component previewComponent = SERIALIZER.deserialize(preview); + // Preview уже в MiniMessage формате, просто парсим + Component previewComponent = ChatFormatter.parse(preview); skullMeta.displayName(previewComponent.decoration(TextDecoration.ITALIC, false)); List lore = new ArrayList<>(); @@ -124,6 +126,9 @@ public class GradientConfirmGUI implements InventoryHolder { } } + // Для GUI всегда используем MiniMessage формат (false) для правильного отображения градиента + boolean useLegacyForPreview = false; + // Если нет кастомного префикса - используем LuckPerms префикс if ((prefixToUse == null || prefixToUse.isEmpty()) && module.getLuckPermsHook().isEnabled()) { String lpPrefix = module.getLuckPermsHook().getActivePrefix(player); @@ -134,11 +139,11 @@ public class GradientConfirmGUI implements InventoryHolder { // Убираем цвета из LP префикса и применяем градиент на всё String cleanLpPrefix = stripColors(lpPrefix); String fullText = cleanLpPrefix + nick; - return GradientUtil.applyGradient(fullText, colorsToUse, module.getConfig().isUseLegacyRgbFormat()); + return GradientUtil.applyGradient(fullText, colorsToUse, useLegacyForPreview); } else { // LP префикс со своими цветами + градиентный ник if (colorsToUse != null && !colorsToUse.isEmpty()) { - return lpPrefix + GradientUtil.applyGradient(nick, colorsToUse, module.getConfig().isUseLegacyRgbFormat()); + return lpPrefix + GradientUtil.applyGradient(nick, colorsToUse, useLegacyForPreview); } return lpPrefix + nick; } @@ -152,7 +157,7 @@ public class GradientConfirmGUI implements InventoryHolder { module.getConfig().isGradientOnPrefix(), module.getConfig().isContinuousGradient(), module.getConfig().getPrefixFormat(), - module.getConfig().isUseLegacyRgbFormat() + useLegacyForPreview ); } diff --git a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java index 316aadc..cf4eb3d 100644 --- a/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java +++ b/src/main/java/com/loki/lochat/gradient/util/GradientUtil.java @@ -40,12 +40,16 @@ public final class GradientUtil { result.append(colorCode).append(text).append(""); } } else { + // Градиент из нескольких цветов Color[] colors = hexColors.stream() .map(GradientUtil::parseHex) .toArray(Color[]::new); + // Правильно вычисляем ratio для каждого символа for (int i = 0; i < length; i++) { - Color interpolated = interpolateMultiColor(colors, (double) i / Math.max(1, length - 1)); + // Вычисляем позицию символа от 0.0 до 1.0 + double ratio = length > 1 ? (double) i / (length - 1) : 0.0; + Color interpolated = interpolateMultiColor(colors, ratio); String hex = String.format("#%02x%02x%02x", interpolated.getRed(), interpolated.getGreen(), interpolated.getBlue()); result.append(formatHex(hex, useLegacyFormat)).append(chars[i]);