fix
This commit is contained in:
parent
5ece2192a2
commit
6b6605a2b0
6 changed files with 212 additions and 160 deletions
|
|
@ -1,6 +1,5 @@
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
checkstyle
|
|
||||||
}
|
}
|
||||||
|
|
||||||
group = "com.loki"
|
group = "com.loki"
|
||||||
|
|
@ -53,17 +52,3 @@ tasks.jar {
|
||||||
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
|
from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
|
||||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||||
}
|
}
|
||||||
|
|
||||||
checkstyle {
|
|
||||||
toolVersion = "10.12.5"
|
|
||||||
configFile = file("${rootDir}/config/checkstyle/checkstyle.xml")
|
|
||||||
isIgnoreFailures = true
|
|
||||||
maxWarnings = 999
|
|
||||||
}
|
|
||||||
|
|
||||||
tasks.withType<Checkstyle> {
|
|
||||||
reports {
|
|
||||||
xml.required.set(false)
|
|
||||||
html.required.set(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -28,7 +28,6 @@ public class CustomCommandManager {
|
||||||
// Информационные команды
|
// Информационные команды
|
||||||
commands.put("help", new HelpCommand(plugin));
|
commands.put("help", new HelpCommand(plugin));
|
||||||
commands.put("rules", new RulesCommand(plugin));
|
commands.put("rules", new RulesCommand(plugin));
|
||||||
commands.put("discord", new DiscordCommand(plugin));
|
|
||||||
|
|
||||||
// Утилиты
|
// Утилиты
|
||||||
commands.put("coords", new CoordsCommand(plugin));
|
commands.put("coords", new CoordsCommand(plugin));
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
import java.net.HttpURLConnection;
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URI;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
@ -141,7 +142,7 @@ public class DiscordWebhook {
|
||||||
* Синхронная отправка в вебхук
|
* Синхронная отправка в вебхук
|
||||||
*/
|
*/
|
||||||
private boolean sendWebhookSync(String jsonPayload) throws IOException {
|
private boolean sendWebhookSync(String jsonPayload) throws IOException {
|
||||||
URL url = new URL(webhookUrl);
|
URL url = URI.create(webhookUrl).toURL();
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -72,8 +72,8 @@ public class DiscordEventListener implements Listener {
|
||||||
if (!discord.isEnabled()) return;
|
if (!discord.isEnabled()) return;
|
||||||
|
|
||||||
Player player = event.getEntity();
|
Player player = event.getEntity();
|
||||||
String deathMessage = event.getDeathMessage() != null ?
|
String deathMessage = event.deathMessage() != null ?
|
||||||
PlainTextComponentSerializer.plainText().serialize(event.getDeathMessage()) :
|
PlainTextComponentSerializer.plainText().serialize(event.deathMessage()) :
|
||||||
"умер";
|
"умер";
|
||||||
|
|
||||||
discord.sendPlayerDeath(player, deathMessage);
|
discord.sendPlayerDeath(player, deathMessage);
|
||||||
|
|
|
||||||
|
|
@ -33,20 +33,25 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Component render(Player source, Component sourceDisplayName, Component message, Audience viewer) {
|
public Component render(Player source, Component sourceDisplayName, Component message, Audience viewer) {
|
||||||
// Префикс в зависимости от типа чата
|
// Красивые префиксы с градиентами и эмодзи
|
||||||
Component prefixComponent;
|
Component prefixComponent;
|
||||||
if (isGlobal) {
|
if (isGlobal) {
|
||||||
// [G] с желтой буквой G
|
// 🌍 GLOBAL с градиентом от золотого к оранжевому
|
||||||
prefixComponent = Component.text("[")
|
prefixComponent = Component.text("🌍 ")
|
||||||
.color(net.kyori.adventure.text.format.NamedTextColor.GRAY)
|
.append(Component.text("G").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FFD700")))
|
||||||
.append(Component.text("G").color(net.kyori.adventure.text.format.NamedTextColor.GOLD))
|
.append(Component.text("L").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FFA500")))
|
||||||
.append(Component.text("]").color(net.kyori.adventure.text.format.NamedTextColor.GRAY));
|
.append(Component.text("O").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FF8C00")))
|
||||||
|
.append(Component.text("B").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FF7F50")))
|
||||||
|
.append(Component.text("A").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FF6347")))
|
||||||
|
.append(Component.text("L").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FF4500")));
|
||||||
} else {
|
} else {
|
||||||
// [L] с голубой буквой L
|
// 📍 LOCAL с градиентом от голубого к синему
|
||||||
prefixComponent = Component.text("[")
|
prefixComponent = Component.text("📍 ")
|
||||||
.color(net.kyori.adventure.text.format.NamedTextColor.GRAY)
|
.append(Component.text("L").color(net.kyori.adventure.text.format.TextColor.fromHexString("#87CEEB")))
|
||||||
.append(Component.text("L").color(net.kyori.adventure.text.format.NamedTextColor.AQUA))
|
.append(Component.text("O").color(net.kyori.adventure.text.format.TextColor.fromHexString("#87CEFA")))
|
||||||
.append(Component.text("]").color(net.kyori.adventure.text.format.NamedTextColor.GRAY));
|
.append(Component.text("C").color(net.kyori.adventure.text.format.TextColor.fromHexString("#00BFFF")))
|
||||||
|
.append(Component.text("A").color(net.kyori.adventure.text.format.TextColor.fromHexString("#1E90FF")))
|
||||||
|
.append(Component.text("L").color(net.kyori.adventure.text.format.TextColor.fromHexString("#4169E1")));
|
||||||
}
|
}
|
||||||
|
|
||||||
Component playerComponent = createPlayerComponent(source, sourceDisplayName);
|
Component playerComponent = createPlayerComponent(source, sourceDisplayName);
|
||||||
|
|
@ -60,10 +65,15 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
processedMessage = mentionHandler.processMentions(processedMessage, source, viewerPlayer);
|
processedMessage = mentionHandler.processMentions(processedMessage, source, viewerPlayer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Красивое разделение с градиентными стрелками
|
||||||
|
Component separator = isGlobal ?
|
||||||
|
Component.text(" ▶ ").color(net.kyori.adventure.text.format.TextColor.fromHexString("#FFD700")) :
|
||||||
|
Component.text(" ▶ ").color(net.kyori.adventure.text.format.TextColor.fromHexString("#87CEEB"));
|
||||||
|
|
||||||
return prefixComponent
|
return prefixComponent
|
||||||
.append(Component.text(" "))
|
.append(separator)
|
||||||
.append(playerComponent)
|
.append(playerComponent)
|
||||||
.append(Component.text(": ").color(net.kyori.adventure.text.format.NamedTextColor.GRAY))
|
.append(Component.text(": ").color(net.kyori.adventure.text.format.NamedTextColor.DARK_GRAY))
|
||||||
.append(processedMessage);
|
.append(processedMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -75,10 +85,16 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
java.util.List<String> hoverLines = plugin.getConfig().getStringList("chat.hover.format");
|
java.util.List<String> hoverLines = plugin.getConfig().getStringList("chat.hover.format");
|
||||||
if (hoverLines.isEmpty()) {
|
if (hoverLines.isEmpty()) {
|
||||||
hoverLines = java.util.Arrays.asList(
|
hoverLines = java.util.Arrays.asList(
|
||||||
"<gray>Игрок: <white>{player}",
|
"<gradient:#FFD700:#FFA500><bold>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</bold></gradient>",
|
||||||
"<gray>Мир: <green>{world}",
|
"<gradient:#87CEEB:#4169E1><bold>👤 Информация об игроке</bold></gradient>",
|
||||||
"",
|
"",
|
||||||
"<yellow>▶ Клик: написать ЛС"
|
"<gray>🏷️ Имя: <white><bold>{player}</bold>",
|
||||||
|
"<gray>📶 Пинг: <yellow><bold>{ping}ms</bold>",
|
||||||
|
"<gray>❤️ Здоровье: <red><bold>{health}/20</bold>",
|
||||||
|
"<gray>🍖 Голод: <gold><bold>{food}/20</bold>",
|
||||||
|
"",
|
||||||
|
"<gradient:#FFD700:#FFA500><bold>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</bold></gradient>",
|
||||||
|
"<yellow>💬 <bold>Клик:</bold> <gray>написать личное сообщение"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -89,7 +105,7 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
line = line.replace("{player}", player.getName())
|
line = line.replace("{player}", player.getName())
|
||||||
.replace("{world}", player.getWorld().getName())
|
.replace("{world}", player.getWorld().getName())
|
||||||
.replace("{ping}", String.valueOf(player.getPing()))
|
.replace("{ping}", String.valueOf(player.getPing()))
|
||||||
.replace("{gamemode}", player.getGameMode().name())
|
.replace("{gamemode}", getGameModeDisplay(player.getGameMode()))
|
||||||
.replace("{health}", String.valueOf(Math.round(player.getHealth())))
|
.replace("{health}", String.valueOf(Math.round(player.getHealth())))
|
||||||
.replace("{food}", String.valueOf(player.getFoodLevel()));
|
.replace("{food}", String.valueOf(player.getFoodLevel()));
|
||||||
|
|
||||||
|
|
@ -106,6 +122,18 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
.clickEvent(ClickEvent.suggestCommand("/msg " + player.getName() + " "));
|
.clickEvent(ClickEvent.suggestCommand("/msg " + player.getName() + " "));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Получить красивое отображение игрового режима
|
||||||
|
*/
|
||||||
|
private String getGameModeDisplay(org.bukkit.GameMode gameMode) {
|
||||||
|
return switch (gameMode) {
|
||||||
|
case SURVIVAL -> "Выживание";
|
||||||
|
case CREATIVE -> "Творчество";
|
||||||
|
case ADVENTURE -> "Приключение";
|
||||||
|
case SPECTATOR -> "Наблюдатель";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private Component processUrls(Component message) {
|
private Component processUrls(Component message) {
|
||||||
String plainText = PlainTextComponentSerializer.plainText().serialize(message);
|
String plainText = PlainTextComponentSerializer.plainText().serialize(message);
|
||||||
// Fixed regex: escape the dash in character class to avoid illegal range
|
// Fixed regex: escape the dash in character class to avoid illegal range
|
||||||
|
|
@ -130,26 +158,50 @@ public class EnhancedChatRenderer implements ChatRenderer {
|
||||||
|
|
||||||
private Component processEmojis(Component message) {
|
private Component processEmojis(Component message) {
|
||||||
Component result = message;
|
Component result = message;
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":heart:").replacement("❤"));
|
|
||||||
|
// Основные символы
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":heart:").replacement("♥"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":star:").replacement("★"));
|
result = result.replaceText(builder -> builder.matchLiteral(":star:").replacement("★"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":check:").replacement("✔"));
|
result = result.replaceText(builder -> builder.matchLiteral(":check:").replacement("✓"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":cross:").replacement("✖"));
|
result = result.replaceText(builder -> builder.matchLiteral(":cross:").replacement("✗"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":arrow:").replacement("→"));
|
result = result.replaceText(builder -> builder.matchLiteral(":arrow:").replacement("→"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":skull:").replacement("☠"));
|
result = result.replaceText(builder -> builder.matchLiteral(":skull:").replacement("☠"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":note:").replacement("♪"));
|
result = result.replaceText(builder -> builder.matchLiteral(":note:").replacement("♪"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":sun:").replacement("☀"));
|
result = result.replaceText(builder -> builder.matchLiteral(":sun:").replacement("☀"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":moon:").replacement("☽"));
|
result = result.replaceText(builder -> builder.matchLiteral(":moon:").replacement("☽"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":snowflake:").replacement("❄"));
|
result = result.replaceText(builder -> builder.matchLiteral(":snowflake:").replacement("❄"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":fire:").replacement("🔥"));
|
result = result.replaceText(builder -> builder.matchLiteral(":fire:").replacement("▲"));
|
||||||
|
|
||||||
|
// Minecraft символы
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":diamond:").replacement("◆"));
|
result = result.replaceText(builder -> builder.matchLiteral(":diamond:").replacement("◆"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":sword:").replacement("⚔"));
|
result = result.replaceText(builder -> builder.matchLiteral(":sword:").replacement("⚔"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":pickaxe:").replacement("⛏"));
|
result = result.replaceText(builder -> builder.matchLiteral(":pickaxe:").replacement("⛏"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":bow:").replacement("🏹"));
|
result = result.replaceText(builder -> builder.matchLiteral(":bow:").replacement("⌐"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":shield:").replacement("🛡"));
|
result = result.replaceText(builder -> builder.matchLiteral(":shield:").replacement("▣"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":potion:").replacement("🧪"));
|
result = result.replaceText(builder -> builder.matchLiteral(":potion:").replacement("⚗"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":book:").replacement("📖"));
|
result = result.replaceText(builder -> builder.matchLiteral(":book:").replacement("▤"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":crown:").replacement("👑"));
|
result = result.replaceText(builder -> builder.matchLiteral(":crown:").replacement("♔"));
|
||||||
result = result.replaceText(builder -> builder.matchLiteral(":gem:").replacement("💎"));
|
result = result.replaceText(builder -> builder.matchLiteral(":gem:").replacement("◊"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":emerald:").replacement("◈"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":gold:").replacement("◉"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":iron:").replacement("◎"));
|
||||||
|
|
||||||
|
// Дополнительные символы
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":thumbsup:").replacement("▲"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":thumbsdown:").replacement("▼"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":clap:").replacement("※"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":wave:").replacement("~"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":peace:").replacement("✌"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":ok:").replacement("◯"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":facepalm:").replacement("⌐_⌐"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":shrug:").replacement("¯\\_(ツ)_/¯"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":thinking:").replacement("?"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":laugh:").replacement("xD"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":cry:").replacement(":'("));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":rage:").replacement(">:("));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":cool:").replacement("B)"));
|
||||||
|
result = result.replaceText(builder -> builder.matchLiteral(":wink:").replacement(";)"));
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,85 +1,141 @@
|
||||||
# ╔══════════════════════════════════════════════════════════════════════════════╗
|
# ╔══════════════════════════════════════════════════════════════════════════════╗
|
||||||
# ║ LoChat Chat Formats ║
|
# ║ LoChat Beautiful Chat Formats ║
|
||||||
# ║ Форматы чата ║
|
# ║ Красивые форматы чата ║
|
||||||
# ║ Версия: 1.5.5-1.20.1 ║
|
# ║ Версия: 1.5.5-1.20.1 ║
|
||||||
# ╚══════════════════════════════════════════════════════════════════════════════╝
|
# ╚══════════════════════════════════════════════════════════════════════════════╝
|
||||||
|
|
||||||
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
||||||
# │ ФОРМАТЫ ЧАТА │
|
# │ КРАСИВЫЕ ФОРМАТЫ ЧАТА │
|
||||||
# └─────────────────────────────────────────────────────────────────────────────┘
|
# └─────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
||||||
# Доступные плейсхолдеры:
|
# Настройки отображения чата
|
||||||
# {player} - имя игрока
|
chat:
|
||||||
# {display_name} - отображаемое имя с градиентом
|
# Включить красивые префиксы
|
||||||
# {prefix} - префикс игрока
|
beautiful_prefixes: true
|
||||||
# {suffix} - суффикс игрока
|
|
||||||
# {world} - мир игрока
|
# Включить hover эффекты на никах
|
||||||
# {message} - сообщение
|
hover:
|
||||||
# {time} - время
|
enabled: true
|
||||||
# {date} - дата
|
# Формат hover подсказки (поддерживает MiniMessage)
|
||||||
# Все плейсхолдеры PlaceholderAPI
|
format:
|
||||||
|
- "<gradient:#FFD700:#FFA500><bold>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</bold></gradient>"
|
||||||
|
- "<gradient:#87CEEB:#4169E1><bold>👤 Информация об игроке</bold></gradient>"
|
||||||
|
- ""
|
||||||
|
- "<gray>🏷️ Имя: <white><bold>{player}</bold>"
|
||||||
|
- "<gray>📶 Пинг: <yellow><bold>{ping}ms</bold>"
|
||||||
|
- "<gray>❤️ Здоровье: <red><bold>{health}/20</bold>"
|
||||||
|
- "<gray>🍖 Голод: <gold><bold>{food}/20</bold>"
|
||||||
|
- ""
|
||||||
|
- "<gradient:#FFD700:#FFA500><bold>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬</bold></gradient>"
|
||||||
|
- "<yellow>💬 <bold>Клик:</bold> <gray>написать личное сообщение"
|
||||||
|
|
||||||
formats:
|
# Настройки глобального чата
|
||||||
# Глобальный чат
|
global:
|
||||||
global:
|
# Префикс глобального чата
|
||||||
enabled: true
|
prefix:
|
||||||
format: "&#FFD700[G] {prefix}{display_name}&r: {message}"
|
# Использовать эмодзи
|
||||||
hover:
|
emoji: "🌍"
|
||||||
- "<gray>Игрок: <white>{player}"
|
# Текст с градиентом
|
||||||
- "<gray>Мир: <green>{world}"
|
text: "GLOBAL"
|
||||||
- "<gray>Пинг: <yellow>%player_ping%ms"
|
# Цвета градиента (от -> к)
|
||||||
- ""
|
gradient:
|
||||||
- "<yellow>▶ Клик: написать ЛС"
|
from: "#FFD700"
|
||||||
click:
|
to: "#FF4500"
|
||||||
action: "suggest_command"
|
|
||||||
value: "/msg {player} "
|
|
||||||
|
|
||||||
# Локальный чат
|
# Разделитель между префиксом и ником
|
||||||
local:
|
separator:
|
||||||
enabled: true
|
text: " ▶ "
|
||||||
format: "WCEEB[L] {prefix}{display_name}&r: {message}"
|
color: "#FFD700"
|
||||||
hover:
|
|
||||||
- "<gray>Игрок: <white>{player}"
|
# Настройки локального чата
|
||||||
- "<gray>Координаты: <yellow>{x}, {y}, {z}"
|
local:
|
||||||
- "<gray>Расстояние: <green>%distance%м"
|
# Префикс локального чата
|
||||||
- ""
|
prefix:
|
||||||
- "<yellow>▶ Клик: написать ЛС"
|
# Использовать эмодзи
|
||||||
click:
|
emoji: "📍"
|
||||||
action: "suggest_command"
|
# Текст с градиентом
|
||||||
value: "/msg {player} "
|
text: "LOCAL"
|
||||||
|
# Цвета градиента (от -> к)
|
||||||
|
gradient:
|
||||||
|
from: "#87CEEB"
|
||||||
|
to: "#4169E1"
|
||||||
|
|
||||||
# Личные сообщения
|
# Разделитель между префиксом и ником
|
||||||
private:
|
separator:
|
||||||
sent: "&7[→] WCEEBВы &7→ {display_name}&7: {message}"
|
text: " ▶ "
|
||||||
received: "&7[←] {display_name} &7→ WCEEBВы&7: {message}"
|
color: "#87CEEB"
|
||||||
hover:
|
|
||||||
- "<gray>Отправлено: <white>%time%"
|
|
||||||
- ""
|
|
||||||
- "<yellow>▶ Клик: ответить"
|
|
||||||
click:
|
|
||||||
action: "suggest_command"
|
|
||||||
value: "/reply "
|
|
||||||
|
|
||||||
# Объявления
|
|
||||||
announcement:
|
|
||||||
format: "&#FF6B6B[ОБЪЯВЛЕНИЕ] <message>"
|
|
||||||
title:
|
|
||||||
enabled: true
|
|
||||||
title: "&#FF6B6BОБЪЯВЛЕНИЕ"
|
|
||||||
subtitle: "{message}"
|
|
||||||
fade-in: 10
|
|
||||||
stay: 60
|
|
||||||
fade-out: 10
|
|
||||||
actionbar:
|
|
||||||
enabled: true
|
|
||||||
format: "&#FF6B6B[ОБЪЯВЛЕНИЕ] {message}"
|
|
||||||
|
|
||||||
# Системные сообщения
|
|
||||||
system:
|
|
||||||
join: "BCB77+ {display_name} BCB77присоединился к игре"
|
|
||||||
quit: "&#FF6B6B- {display_name} &#FF6B6Bпокинул игру"
|
|
||||||
death: "&#FF6B6B☠ {display_name} &#FF6B6B{death_message}"
|
|
||||||
|
|
||||||
|
# Радиус локального чата (блоки)
|
||||||
|
radius: 100
|
||||||
|
|
||||||
|
# Настройки эмодзи
|
||||||
|
emojis:
|
||||||
|
# Включить обработку эмодзи
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
# Список доступных эмодзи (символы для Minecraft)
|
||||||
|
list:
|
||||||
|
# Основные
|
||||||
|
":heart:": "♥"
|
||||||
|
":star:": "★"
|
||||||
|
":check:": "✓"
|
||||||
|
":cross:": "✗"
|
||||||
|
":arrow:": "→"
|
||||||
|
":fire:": "▲"
|
||||||
|
":snowflake:": "❄"
|
||||||
|
":sun:": "☀"
|
||||||
|
":moon:": "☽"
|
||||||
|
|
||||||
|
# Minecraft
|
||||||
|
":diamond:": "◆"
|
||||||
|
":sword:": "⚔"
|
||||||
|
":pickaxe:": "⛏"
|
||||||
|
":bow:": "⌐"
|
||||||
|
":shield:": "▣"
|
||||||
|
":potion:": "⚗"
|
||||||
|
":book:": "▤"
|
||||||
|
":crown:": "♔"
|
||||||
|
":emerald:": "◈"
|
||||||
|
":gold:": "◉"
|
||||||
|
":iron:": "◎"
|
||||||
|
|
||||||
|
# Эмоции (текстовые)
|
||||||
|
":thumbsup:": "▲"
|
||||||
|
":thumbsdown:": "▼"
|
||||||
|
":clap:": "※"
|
||||||
|
":wave:": "~"
|
||||||
|
":ok:": "◯"
|
||||||
|
":thinking:": "?"
|
||||||
|
":laugh:": "xD"
|
||||||
|
":cry:": ":'("
|
||||||
|
":rage:": ">:("
|
||||||
|
":cool:": "B)"
|
||||||
|
":wink:": ";)"
|
||||||
|
|
||||||
|
# Настройки URL обработки
|
||||||
|
urls:
|
||||||
|
# Включить кликабельные ссылки
|
||||||
|
enabled: true
|
||||||
|
# Цвет ссылок
|
||||||
|
color: "#00BFFF"
|
||||||
|
# Подчеркивание
|
||||||
|
underlined: true
|
||||||
|
# Hover текст
|
||||||
|
hover_text: "🔗 Открыть ссылку: {url}"
|
||||||
|
|
||||||
|
# Настройки упоминаний (@player)
|
||||||
|
mentions:
|
||||||
|
# Включить упоминания
|
||||||
|
enabled: true
|
||||||
|
# Цвет упоминания
|
||||||
|
color: "#FFD700"
|
||||||
|
# Звук при упоминании
|
||||||
|
sound:
|
||||||
|
enabled: true
|
||||||
|
type: "BLOCK_NOTE_BLOCK_PLING"
|
||||||
|
volume: 1.0
|
||||||
|
pitch: 2.0
|
||||||
|
|
||||||
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
||||||
# │ ФОРМАТЫ ПО ГРУППАМ │
|
# │ ФОРМАТЫ ПО ГРУППАМ │
|
||||||
# └─────────────────────────────────────────────────────────────────────────────┘
|
# └─────────────────────────────────────────────────────────────────────────────┘
|
||||||
|
|
@ -89,49 +145,42 @@ groups:
|
||||||
priority: 1000
|
priority: 1000
|
||||||
prefix: "&#FF0000[OWNER]"
|
prefix: "&#FF0000[OWNER]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "&#FF0000"
|
name-color: "&#FF0000"
|
||||||
|
|
||||||
admin:
|
admin:
|
||||||
priority: 900
|
priority: 900
|
||||||
prefix: "&#FF6B6B[ADMIN]"
|
prefix: "&#FF6B6B[ADMIN]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "&#FF6B6B"
|
name-color: "&#FF6B6B"
|
||||||
|
|
||||||
moderator:
|
moderator:
|
||||||
priority: 800
|
priority: 800
|
||||||
prefix: "&#FFA726[MOD]"
|
prefix: "&#FFA726[MOD]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "&#FFA726"
|
name-color: "&#FFA726"
|
||||||
|
|
||||||
helper:
|
helper:
|
||||||
priority: 700
|
priority: 700
|
||||||
prefix: "WCEEB[HELPER]"
|
prefix: "WCEEB[HELPER]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "WCEEB"
|
name-color: "WCEEB"
|
||||||
|
|
||||||
vip:
|
vip:
|
||||||
priority: 600
|
priority: 600
|
||||||
prefix: "&#FFD700[VIP]"
|
prefix: "&#FFD700[VIP]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "&#FFD700"
|
name-color: "&#FFD700"
|
||||||
|
|
||||||
premium:
|
premium:
|
||||||
priority: 500
|
priority: 500
|
||||||
prefix: "BCB77[PREMIUM]"
|
prefix: "BCB77[PREMIUM]"
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{prefix} {display_name}&r: {message}"
|
|
||||||
name-color: "BCB77"
|
name-color: "BCB77"
|
||||||
|
|
||||||
default:
|
default:
|
||||||
priority: 0
|
priority: 0
|
||||||
prefix: ""
|
prefix: ""
|
||||||
suffix: ""
|
suffix: ""
|
||||||
format: "{display_name}&r: {message}"
|
|
||||||
name-color: "&#FFFFFF"
|
name-color: "&#FFFFFF"
|
||||||
|
|
||||||
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
||||||
|
|
@ -151,14 +200,9 @@ special:
|
||||||
volume: 1.0
|
volume: 1.0
|
||||||
pitch: 1.0
|
pitch: 1.0
|
||||||
|
|
||||||
# Формат для эмодзи голов
|
|
||||||
head-emoji:
|
|
||||||
format: ":head_{player}:"
|
|
||||||
max-per-message: 3
|
|
||||||
|
|
||||||
# Формат для ссылок
|
# Формат для ссылок
|
||||||
url:
|
url:
|
||||||
format: "<click:open_url:'{url}'><hover:show_text:'<gray>Открыть ссылку'><u>{url}</u></hover></click>"
|
format: "<click:open_url:'{url}'><hover:show_text:'<gray>🔗 Открыть ссылку'><u><#00BFFF>{url}</u></hover></click>"
|
||||||
|
|
||||||
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
||||||
# │ НАСТРОЙКИ ОТОБРАЖЕНИЯ │
|
# │ НАСТРОЙКИ ОТОБРАЖЕНИЯ │
|
||||||
|
|
@ -183,33 +227,4 @@ display:
|
||||||
word-wrap: true
|
word-wrap: true
|
||||||
|
|
||||||
# Цвет сообщений по умолчанию
|
# Цвет сообщений по умолчанию
|
||||||
default-message-color: "&#FFFFFF"
|
default-message-color: "&#FFFFFF"
|
||||||
|
|
||||||
# ┌─────────────────────────────────────────────────────────────────────────────┐
|
|
||||||
# │ ИНТЕГРАЦИИ │
|
|
||||||
# └─────────────────────────────────────────────────────────────────────────────┘
|
|
||||||
|
|
||||||
integrations:
|
|
||||||
# PlaceholderAPI
|
|
||||||
placeholderapi:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
# LuckPerms
|
|
||||||
luckperms:
|
|
||||||
enabled: true
|
|
||||||
use-prefix: true
|
|
||||||
use-suffix: true
|
|
||||||
|
|
||||||
# Vault
|
|
||||||
vault:
|
|
||||||
enabled: true
|
|
||||||
|
|
||||||
# DiscordSRV
|
|
||||||
discordsrv:
|
|
||||||
enabled: false
|
|
||||||
format: "**{player}**: {message}"
|
|
||||||
|
|
||||||
# Dynmap
|
|
||||||
dynmap:
|
|
||||||
enabled: false
|
|
||||||
format: "{player}: {message}"
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue