lol
This commit is contained in:
parent
daba669833
commit
c09a3a399f
6 changed files with 118 additions and 16 deletions
|
|
@ -59,16 +59,18 @@ public class MsgCommand implements CommandExecutor {
|
|||
}
|
||||
String message = messageBuilder.toString();
|
||||
|
||||
// Отправляем сообщения
|
||||
player.sendMessage(ChatFormatter.formatPmSent(
|
||||
plugin.getMessageConfig().get("pm.sent"),
|
||||
target.getName(),
|
||||
// Отправляем сообщения с градиентными именами
|
||||
player.sendMessage(ChatFormatter.formatPmSentNew(
|
||||
plugin.getMessageConfig().getPmFormatSent(),
|
||||
player,
|
||||
target,
|
||||
message
|
||||
));
|
||||
|
||||
target.sendMessage(ChatFormatter.formatPmReceived(
|
||||
plugin.getMessageConfig().get("pm.received"),
|
||||
player.getName(),
|
||||
target.sendMessage(ChatFormatter.formatPmReceivedNew(
|
||||
plugin.getMessageConfig().getPmFormatReceived(),
|
||||
player,
|
||||
target,
|
||||
message
|
||||
));
|
||||
|
||||
|
|
|
|||
|
|
@ -56,16 +56,18 @@ public class ReplyCommand implements CommandExecutor {
|
|||
|
||||
String message = String.join(" ", args);
|
||||
|
||||
// Отправляем сообщения
|
||||
player.sendMessage(ChatFormatter.formatPmSent(
|
||||
plugin.getMessageConfig().get("pm.sent"),
|
||||
target.getName(),
|
||||
// Отправляем сообщения с градиентными именами
|
||||
player.sendMessage(ChatFormatter.formatPmSentNew(
|
||||
plugin.getMessageConfig().getPmFormatSent(),
|
||||
player,
|
||||
target,
|
||||
message
|
||||
));
|
||||
|
||||
target.sendMessage(ChatFormatter.formatPmReceived(
|
||||
plugin.getMessageConfig().get("pm.received"),
|
||||
player.getName(),
|
||||
target.sendMessage(ChatFormatter.formatPmReceivedNew(
|
||||
plugin.getMessageConfig().getPmFormatReceived(),
|
||||
player,
|
||||
target,
|
||||
message
|
||||
));
|
||||
|
||||
|
|
|
|||
|
|
@ -57,4 +57,17 @@ public class MessageConfig {
|
|||
public String getInvalidUsage(String usage) {
|
||||
return get("errors.invalid-usage", "{usage}", usage);
|
||||
}
|
||||
|
||||
// PM форматы
|
||||
public String getPmFormatSent() {
|
||||
return get("pm.format-sent");
|
||||
}
|
||||
|
||||
public String getPmFormatReceived() {
|
||||
return get("pm.format-received");
|
||||
}
|
||||
|
||||
public boolean isPmUseGradientNames() {
|
||||
return messages.getBoolean("pm.use-gradient-names", true);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -109,20 +109,42 @@ public class GradientConfirmGUI implements InventoryHolder {
|
|||
String prefixToUse = this.prefix;
|
||||
List<String> colorsToUse = this.colors;
|
||||
|
||||
if (type == ConfirmType.PREFIX && (colorsToUse == null || colorsToUse.isEmpty())) {
|
||||
// Получаем данные игрока
|
||||
var data = module.getDataManager().getPlayerData(player.getUniqueId());
|
||||
|
||||
if (type == ConfirmType.PREFIX && (colorsToUse == null || colorsToUse.isEmpty())) {
|
||||
if (data.hasColors() && data.isColorEnabled()) {
|
||||
colorsToUse = data.getColors();
|
||||
}
|
||||
}
|
||||
|
||||
if (type == ConfirmType.COLOR && (prefixToUse == null || prefixToUse.isEmpty())) {
|
||||
var data = module.getDataManager().getPlayerData(player.getUniqueId());
|
||||
if (data.hasPrefix() && data.isPrefixEnabled()) {
|
||||
prefixToUse = data.getPrefix();
|
||||
}
|
||||
}
|
||||
|
||||
// Если нет кастомного префикса - используем LuckPerms префикс
|
||||
if ((prefixToUse == null || prefixToUse.isEmpty()) && module.getLuckPermsHook().isEnabled()) {
|
||||
String lpPrefix = module.getLuckPermsHook().getActivePrefix(player);
|
||||
if (lpPrefix != null && !lpPrefix.isEmpty()) {
|
||||
// Для превью показываем LP префикс
|
||||
// Если градиент на LP префикс включен - применяем градиент на всю строку
|
||||
if (colorsToUse != null && !colorsToUse.isEmpty() && module.getConfig().isGradientOnLuckPermsPrefix()) {
|
||||
// Убираем цвета из LP префикса и применяем градиент на всё
|
||||
String cleanLpPrefix = stripColors(lpPrefix);
|
||||
String fullText = cleanLpPrefix + nick;
|
||||
return GradientUtil.applyGradient(fullText, colorsToUse, module.getConfig().isUseLegacyRgbFormat());
|
||||
} else {
|
||||
// LP префикс со своими цветами + градиентный ник
|
||||
if (colorsToUse != null && !colorsToUse.isEmpty()) {
|
||||
return lpPrefix + GradientUtil.applyGradient(nick, colorsToUse, module.getConfig().isUseLegacyRgbFormat());
|
||||
}
|
||||
return lpPrefix + nick;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return GradientUtil.buildDisplayName(
|
||||
prefixToUse,
|
||||
nick,
|
||||
|
|
@ -134,6 +156,14 @@ public class GradientConfirmGUI implements InventoryHolder {
|
|||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Убирает цветовые коды из строки
|
||||
*/
|
||||
private String stripColors(String text) {
|
||||
if (text == null) return "";
|
||||
return text.replaceAll("(?i)(§x(§[0-9a-f]){6}|§[0-9a-fk-or]|&[0-9a-fk-or]|&#[0-9a-f]{6}|<[^>]+>)", "");
|
||||
}
|
||||
|
||||
private ItemStack createItem(Material material, String name) {
|
||||
ItemStack item = new ItemStack(material);
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
|
|
|
|||
|
|
@ -222,6 +222,52 @@ public class ChatFormatter {
|
|||
.replace("{message}", message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматирует исходящее PM с поддержкой градиентных имён
|
||||
*/
|
||||
public static Component formatPmSentNew(String format, Player sender, Player receiver, String message) {
|
||||
LoChat plugin = LoChat.getInstance();
|
||||
String senderDisplay = sender.getName();
|
||||
String receiverDisplay = receiver.getName();
|
||||
|
||||
// Используем градиентные имена если включено
|
||||
if (plugin != null && plugin.getMessageConfig().isPmUseGradientNames()
|
||||
&& plugin.getGradientModule() != null && plugin.getGradientModule().isEnabled()) {
|
||||
senderDisplay = plugin.getGradientModule().getFormattedName(sender);
|
||||
receiverDisplay = plugin.getGradientModule().getFormattedName(receiver);
|
||||
}
|
||||
|
||||
return parse(format
|
||||
.replace("{sender}", sender.getName())
|
||||
.replace("{receiver}", receiver.getName())
|
||||
.replace("{sender_display}", senderDisplay)
|
||||
.replace("{receiver_display}", receiverDisplay)
|
||||
.replace("{message}", message));
|
||||
}
|
||||
|
||||
/**
|
||||
* Форматирует входящее PM с поддержкой градиентных имён
|
||||
*/
|
||||
public static Component formatPmReceivedNew(String format, Player sender, Player receiver, String message) {
|
||||
LoChat plugin = LoChat.getInstance();
|
||||
String senderDisplay = sender.getName();
|
||||
String receiverDisplay = receiver.getName();
|
||||
|
||||
// Используем градиентные имена если включено
|
||||
if (plugin != null && plugin.getMessageConfig().isPmUseGradientNames()
|
||||
&& plugin.getGradientModule() != null && plugin.getGradientModule().isEnabled()) {
|
||||
senderDisplay = plugin.getGradientModule().getFormattedName(sender);
|
||||
receiverDisplay = plugin.getGradientModule().getFormattedName(receiver);
|
||||
}
|
||||
|
||||
return parse(format
|
||||
.replace("{sender}", sender.getName())
|
||||
.replace("{receiver}", receiver.getName())
|
||||
.replace("{sender_display}", senderDisplay)
|
||||
.replace("{receiver_display}", receiverDisplay)
|
||||
.replace("{message}", message));
|
||||
}
|
||||
|
||||
public static Component formatAnnouncement(String format, String message) {
|
||||
return parse(format.replace("<message>", message));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,6 +9,15 @@ local:
|
|||
no-players: "<red>Рядом нет игроков</red>"
|
||||
|
||||
pm:
|
||||
# Форматы личных сообщений
|
||||
# {sender} - ник отправителя, {receiver} - ник получателя
|
||||
# {sender_display} - отправитель с градиентом, {receiver_display} - получатель с градиентом
|
||||
# {message} - текст сообщения
|
||||
format-sent: "<gray>[PM] Ты → {receiver_display}<gray>: {message}</gray>"
|
||||
format-received: "<gray>[PM] {sender_display}<gray> → Ты: {message}</gray>"
|
||||
# Использовать градиентные ники в PM
|
||||
use-gradient-names: true
|
||||
# Старые форматы (для совместимости)
|
||||
sent: "<gray>[PM] Ты → {player}: {message}</gray>"
|
||||
received: "<gray>[PM] {player} → Ты: {message}</gray>"
|
||||
no-reply: "<red>Некому ответить</red>"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue