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();
|
String message = messageBuilder.toString();
|
||||||
|
|
||||||
// Отправляем сообщения
|
// Отправляем сообщения с градиентными именами
|
||||||
player.sendMessage(ChatFormatter.formatPmSent(
|
player.sendMessage(ChatFormatter.formatPmSentNew(
|
||||||
plugin.getMessageConfig().get("pm.sent"),
|
plugin.getMessageConfig().getPmFormatSent(),
|
||||||
target.getName(),
|
player,
|
||||||
|
target,
|
||||||
message
|
message
|
||||||
));
|
));
|
||||||
|
|
||||||
target.sendMessage(ChatFormatter.formatPmReceived(
|
target.sendMessage(ChatFormatter.formatPmReceivedNew(
|
||||||
plugin.getMessageConfig().get("pm.received"),
|
plugin.getMessageConfig().getPmFormatReceived(),
|
||||||
player.getName(),
|
player,
|
||||||
|
target,
|
||||||
message
|
message
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -56,16 +56,18 @@ public class ReplyCommand implements CommandExecutor {
|
||||||
|
|
||||||
String message = String.join(" ", args);
|
String message = String.join(" ", args);
|
||||||
|
|
||||||
// Отправляем сообщения
|
// Отправляем сообщения с градиентными именами
|
||||||
player.sendMessage(ChatFormatter.formatPmSent(
|
player.sendMessage(ChatFormatter.formatPmSentNew(
|
||||||
plugin.getMessageConfig().get("pm.sent"),
|
plugin.getMessageConfig().getPmFormatSent(),
|
||||||
target.getName(),
|
player,
|
||||||
|
target,
|
||||||
message
|
message
|
||||||
));
|
));
|
||||||
|
|
||||||
target.sendMessage(ChatFormatter.formatPmReceived(
|
target.sendMessage(ChatFormatter.formatPmReceivedNew(
|
||||||
plugin.getMessageConfig().get("pm.received"),
|
plugin.getMessageConfig().getPmFormatReceived(),
|
||||||
player.getName(),
|
player,
|
||||||
|
target,
|
||||||
message
|
message
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -57,4 +57,17 @@ public class MessageConfig {
|
||||||
public String getInvalidUsage(String usage) {
|
public String getInvalidUsage(String usage) {
|
||||||
return get("errors.invalid-usage", "{usage}", 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;
|
String prefixToUse = this.prefix;
|
||||||
List<String> colorsToUse = this.colors;
|
List<String> colorsToUse = this.colors;
|
||||||
|
|
||||||
if (type == ConfirmType.PREFIX && (colorsToUse == null || colorsToUse.isEmpty())) {
|
// Получаем данные игрока
|
||||||
var data = module.getDataManager().getPlayerData(player.getUniqueId());
|
var data = module.getDataManager().getPlayerData(player.getUniqueId());
|
||||||
|
|
||||||
|
if (type == ConfirmType.PREFIX && (colorsToUse == null || colorsToUse.isEmpty())) {
|
||||||
if (data.hasColors() && data.isColorEnabled()) {
|
if (data.hasColors() && data.isColorEnabled()) {
|
||||||
colorsToUse = data.getColors();
|
colorsToUse = data.getColors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (type == ConfirmType.COLOR && (prefixToUse == null || prefixToUse.isEmpty())) {
|
if (type == ConfirmType.COLOR && (prefixToUse == null || prefixToUse.isEmpty())) {
|
||||||
var data = module.getDataManager().getPlayerData(player.getUniqueId());
|
|
||||||
if (data.hasPrefix() && data.isPrefixEnabled()) {
|
if (data.hasPrefix() && data.isPrefixEnabled()) {
|
||||||
prefixToUse = data.getPrefix();
|
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(
|
return GradientUtil.buildDisplayName(
|
||||||
prefixToUse,
|
prefixToUse,
|
||||||
nick,
|
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) {
|
private ItemStack createItem(Material material, String name) {
|
||||||
ItemStack item = new ItemStack(material);
|
ItemStack item = new ItemStack(material);
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
|
|
||||||
|
|
@ -222,6 +222,52 @@ public class ChatFormatter {
|
||||||
.replace("{message}", message));
|
.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) {
|
public static Component formatAnnouncement(String format, String message) {
|
||||||
return parse(format.replace("<message>", message));
|
return parse(format.replace("<message>", message));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,15 @@ local:
|
||||||
no-players: "<red>Рядом нет игроков</red>"
|
no-players: "<red>Рядом нет игроков</red>"
|
||||||
|
|
||||||
pm:
|
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>"
|
sent: "<gray>[PM] Ты → {player}: {message}</gray>"
|
||||||
received: "<gray>[PM] {player} → Ты: {message}</gray>"
|
received: "<gray>[PM] {player} → Ты: {message}</gray>"
|
||||||
no-reply: "<red>Некому ответить</red>"
|
no-reply: "<red>Некому ответить</red>"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue