Complete config redesign and feature additions

🎨 Config Redesign:
- Unified style for all config files with beautiful headers
- Consistent color scheme using gradients throughout
- Improved readability with proper sections and comments
- Fixed color formatting issues

✨ New Features:
- SkinsRestorer integration for custom skins support
- Head emoji system (:head_nickname: and @head nickname)
- Clear chat message configuration command (/clearchatconfig)
- Enhanced custom commands with more examples
- Improved emoji system with 200+ emojis

📝 Documentation:
- Completely rewritten README.md with modern styling
- Added comprehensive feature descriptions
- Detailed command and permission tables
- Configuration examples and usage guides
- Professional formatting and structure

🔧 Technical Improvements:
- Fixed compilation errors
- Improved code organization
- Better error handling
- Enhanced compatibility

All configs now follow consistent MiniMessage gradient styling!
This commit is contained in:
loki5512344 2026-01-23 22:06:46 +01:00
parent e616667c78
commit 01d8c3a2e7
34 changed files with 2650 additions and 1563 deletions

409
README.md
View file

@ -1,131 +1,155 @@
# LoChat
Продвинутый чат-плагин для Minecraft Folia 1.21.8 с интегрированным модулем градиентных ников.
**Продвинутый чат-плагин для Minecraft Paper 1.20.1 с интегрированным модулем градиентных ников**
**Автор:** loki
**Версия:** 1.5.5-1.20.1
---
## Установка
## 🚀 Установка
1. Скачай `LoChat-1.0.0.jar` из `build/libs/`
2. Положи в папку `plugins/` сервера
3. Перезапусти сервер
1. Скачайте `LoChat-1.5.5-1.20.1.jar` из папки `build/libs/`
2. Поместите файл в папку `plugins/` вашего сервера
3. Перезапустите сервер
4. Настройте конфигурацию в файлах `config.yml` и других
---
## Функционал
## ✨ Основной функционал
### Чат
- Глобальный чат (`!сообщение` или `/g`)
- Локальный чат (радиус 100 блоков)
- Личные сообщения (`/msg`, `/reply`)
- Система игнорирования
- Автосообщения (многострочные, с порядком)
- Смайлики (200+ эмодзи)
### 💬 Система чата
- **Глобальный чат** - `!сообщение` или `/g <сообщение>`
- **Локальный чат** - радиус 100 блоков (настраивается)
- **Личные сообщения** - `/msg`, `/reply` с поддержкой игнорирования
- **Автосообщения** - многострочные сообщения с настраиваемым порядком
- **Смайлики** - 200+ эмодзи для украшения сообщений
### Модерация
- Мут система (`/mute`, `/unmute`)
- Фильтр мата (censor/block/warn)
- Анти-спам (CAPS, повторы, похожие сообщения)
- Кулдауны на сообщения
- Шпион режим (`/chatspy`)
- Очистка чата (`/clearchat`)
### 🛡️ Модерация
- **Система мутов** - `/lmute`, `/lunmute` с поддержкой времени и причин
- **Фильтр мата** - умная система с обходом символов (censor/block/warn)
- **Анти-спам** - защита от CAPS, повторов и похожих сообщений
- **Кулдауны** - настраиваемые задержки между сообщениями
- **Шпион режим** - `/chatspy` для мониторинга всех сообщений
- **Очистка чата** - `/clearchat` с настраиваемым сообщением
### Градиентные ники (интегрированный LoPreff)
- Кастомные градиенты на ник (`/color`)
- Кастомные префиксы (`/prefix`)
- Интеграция с LuckPerms
- Покупка за PlayerPoints (опционально)
- GUI подтверждения
### 🌈 Градиентные ники (встроенный LoPreff)
- **Кастомные градиенты** - `/color <hex1> [hex2] ...` до 7 цветов
- **Кастомные префиксы** - `/prefix <текст>` с поддержкой цветов
- **Предустановки** - fire, ocean, forest, sunset, rainbow и другие
- **Интеграция с LuckPerms** - автоматическое обновление префиксов
- **Покупка за PlayerPoints** - опциональная система оплаты
- **GUI подтверждения** - красивый интерфейс для покупок
### 🎭 Дополнительные возможности
- **Головы игроков** - `:head_nickname:` и `@head nickname` в чате
- **Кастомные команды** - создание собственных команд через конфиг
- **Упоминания** - @nickname с звуковыми уведомлениями
- **Интеграция с SkinsRestorer** - поддержка кастомных скинов
---
## Команды
## 📋 Команды
### Чат
| Команда | Описание | Право |
|---------|----------|-------|
| `!сообщение` | Глобальный чат | chat.global.use |
| `/g <msg>` | Глобальный чат | chat.global.use |
| `/globalchat toggle` | Вкл/выкл глобальный | chat.global.toggle |
| `/l <msg>` | Локальный чат | chat.local.use |
| `/msg <ник> <msg>` | Личное сообщение | chat.pm.use |
| `/reply <msg>` | Ответить | chat.pm.use |
| `/ignore <ник>` | Игнорировать | chat.pm.ignore |
| `/unignore <ник>` | Убрать из игнора | chat.pm.ignore |
| `/announce <msg>` | Объявление | chat.announce.use |
| `!<сообщение>` | Глобальный чат | `chat.global.use` |
| `/g <сообщение>` | Глобальный чат | `chat.global.use` |
| `/globalchat toggle` | Переключить глобальный чат | `chat.global.toggle` |
| `/l <сообщение>` | Локальный чат | `chat.local.use` |
| `/msg <ник> <сообщение>` | Личное сообщение | `chat.pm.use` |
| `/reply <сообщение>` | Ответить на последнее PM | `chat.pm.use` |
| `/ignore <ник>` | Добавить в игнор | `chat.pm.ignore` |
| `/unignore <ник>` | Убрать из игнора | `chat.pm.ignore` |
| `/announce <сообщение>` | Объявление | `chat.announce.use` |
### Модерация
| Команда | Описание | Право |
|---------|----------|-------|
| `/chatspy` | Шпион режим | chat.spy |
| `/clearchat` | Очистить чат | chat.clear |
| `/mute <ник> <время>` | Замутить | chat.mute |
| `/unmute <ник>` | Размутить | chat.mute |
| `/chatspy` | Включить/выключить шпион режим | `chat.spy` |
| `/clearchat` | Очистить чат | `chat.clear` |
| `/clearchatconfig <действие>` | Настроить сообщение очистки | `lochat.clearchat.config` |
| `/lmute <ник> [время] [-s] [причина]` | Замутить игрока | `lochat.mute` |
| `/lunmute <ник> [-s]` | Размутить игрока | `lochat.unmute` |
| `/lmutelist` | Список замученных | `lochat.mutelist` |
| `/lmutehistory <ник>` | История мутов игрока | `lochat.mutehistory` |
| `/lmuteblame <модератор>` | Муты выданные модератором | `lochat.muteblame` |
### Градиентные ники
| Команда | Описание | Право |
|---------|----------|-------|
| `/color <hex1> [hex2] ...` | Установить градиент | `gradient.color` |
| `/color on/off/reset` | Управление градиентом | `gradient.color` |
| `/color copy <ник>` | Скопировать градиент | `gradient.color` |
| `/color preset <название>` | Использовать предустановку | `gradient.color` |
| `/prefix <текст>` | Установить префикс | `gradient.prefix` |
| `/prefix on/off/reset` | Управление префиксом | `gradient.prefix` |
### Админские команды
| Команда | Описание | Право |
|---------|----------|-------|
| `/lochat reload` | Перезагрузить конфиг | `lochat.admin` |
| `/aprefix <подкоманда>` | Админские команды градиентов | `gradient.admin` |
---
## 🔐 Права доступа
### Чат
| Право | По умолчанию | Описание |
|-------|--------------|----------|
| `chat.global.use` | `true` | Использование глобального чата |
| `chat.global.toggle` | `true` | Переключение глобального чата |
| `chat.local.use` | `true` | Использование локального чата |
| `chat.pm.use` | `true` | Личные сообщения |
| `chat.pm.ignore` | `true` | Игнорирование игроков |
| `chat.mention.use` | `true` | Упоминания @nickname |
### Модерация
| Право | По умолчанию | Описание |
|-------|--------------|----------|
| `chat.announce.use` | `op` | Объявления |
| `chat.spy` | `op` | Шпион режим |
| `chat.clear` | `op` | Очистка чата |
| `chat.bypass.cooldown` | `op` | Обход кулдаунов |
| `chat.bypass.filter` | `op` | Обход фильтра мата |
| `chat.bypass.antispam` | `op` | Обход анти-спама |
| `lochat.mute` | `op` | Выдача мутов |
| `lochat.unmute` | `op` | Снятие мутов |
| `lochat.clearchat.config` | `op` | Настройка очистки чата |
### Градиенты
| Команда | Описание | Право |
|---------|----------|-------|
| `/color <hex1> [hex2]...` | Установить градиент | gradient.color |
| `/color on/off/reset` | Управление цветом | gradient.color |
| `/color copy <ник>` | Скопировать цвет | gradient.color |
| `/prefix <текст>` | Установить префикс | gradient.prefix |
| `/prefix on/off/reset` | Управление префиксом | gradient.prefix |
| `/aprefix reload` | Перезагрузка | gradient.admin |
| `/aprefix info <ник>` | Инфо об игроке | gradient.admin |
| `/aprefix setcolor <ник> <цвета>` | Установить цвет | gradient.admin |
| `/aprefix setprefix <ник> <текст>` | Установить префикс | gradient.admin |
| Право | По умолчанию | Описание |
|-------|--------------|----------|
| `gradient.color` | `true` | Градиентные ники |
| `gradient.prefix` | `true` | Кастомные префиксы |
| `gradient.admin` | `op` | Админские команды |
| `gradient.bypass.cooldown` | `op` | Обход кулдаунов |
| `gradient.bypass.cost` | `op` | Бесплатные градиенты |
### Дополнительные
| Право | По умолчанию | Описание |
|-------|--------------|----------|
| `lochat.heademoji.use` | `true` | Головы игроков в чате |
| `lochat.admin` | `op` | Админские команды |
---
## Права
### Чат
| Право | По умолчанию |
|-------|--------------|
| chat.global.use | true |
| chat.global.toggle | true |
| chat.global.color | op |
| chat.local.use | true |
| chat.local.color | op |
| chat.pm.use | true |
| chat.pm.ignore | true |
| chat.mention.use | true |
### Модерация
| Право | По умолчанию |
|-------|--------------|
| chat.announce.use | op |
| chat.spy | op |
| chat.clear | op |
| chat.mute | op |
| chat.bypass.cooldown | op |
| chat.bypass.filter | op |
| chat.bypass.antispam | op |
### Градиенты
| Право | По умолчанию |
|-------|--------------|
| gradient.color | true |
| gradient.prefix | true |
| gradient.admin | op |
| gradient.bypass.cooldown | op |
| gradient.bypass.cost | op |
---
## PlaceholderAPI
## 🎨 PlaceholderAPI
### Основные плейсхолдеры
```
%lochat_muted% — замучен (true/false)
%lochat_mute_time% — оставшееся время мута
%lochat_mute_reason% — причина мута
%lochat_ignored_count% — кол-во игнорируемых
%lochat_ignored_count% — количество игнорируемых
%lochat_global_enabled% — глобальный чат включен
%lochat_spy_enabled% — шпион режим включен
```
# Градиенты
### Градиентные плейсхолдеры
```
%lochat_gradient_full% — полное имя (префикс + ник)
%lochat_gradient_name% — только градиентный ник
%lochat_gradient_prefix% — только префикс
@ -136,164 +160,145 @@
---
## Конфигурационные файлы
## 📁 Конфигурационные файлы
- `config.yml` — основные настройки чата
- `messages.yml` — сообщения чата
- `automessages.yml` — автосообщения
- `emojis.yml` — смайлики
- `custom-commands.yml` — кастомные команды
- `gradient-config.yml` — настройки градиентов
- `gradient-messages.yml` — сообщения градиентов
- `ignores.yml` — сохранённые игноры
- `mutes.yml` — активные муты
- `gradient-data.yml` — данные градиентов (или SQLite)
| Файл | Описание |
|------|----------|
| `config.yml` | Основные настройки плагина |
| `messages.yml` | Сообщения плагина |
| `automessages.yml` | Настройки автосообщений |
| `emojis.yml` | Список смайликов |
| `custom-commands.yml` | Кастомные команды |
| `gradient-config.yml` | Настройки градиентов |
| `gradient-messages.yml` | Сообщения градиентного модуля |
| `ignores.yml` | Сохранённые игноры (создается автоматически) |
| `mutes.yml` | Активные муты (создается автоматически) |
| `gradient-data.yml` | Данные градиентов (создается автоматически) |
---
## Кастомные команды
## 🎯 Кастомные команды
LoChat позволяет создавать собственные команды через файл `custom-commands.yml`. После создания команды выполните `/lochat reload` для применения изменений.
LoChat позволяет создавать собственные команды через `custom-commands.yml`. После изменения файла выполните `/lochat reload`.
### Структура команды
```yaml
command-name:
permission: "lochat.command.name" # Право для использования (опционально)
message: "Текст сообщения" # Сообщение которое отправится
aliases: ["alias1", "alias2"] # Алиасы команды (опционально)
type: "chat" # Тип: chat, broadcast, title, actionbar
target: "sender" # Кому отправить: sender, all, permission:право
permission: "право.для.использования" # Опционально
message: "Текст сообщения" # Обязательно
aliases: ["alias1", "alias2"] # Опционально
type: "chat" # chat, broadcast, title, actionbar
target: "sender" # sender, all, permission:право
```
### Типы команд
- **chat** — отправляет сообщение в чат
- **broadcast** — отправляет сообщение всем игрокам
- **title** — показывает title (первая строка — заголовок, вторая — подзаголовок, разделяются `\n`)
- **title** — показывает title (разделение строк через `\n`)
- **actionbar** — показывает сообщение в actionbar
### Целевая аудитория (target)
### Целевая аудитория
- **sender** — только отправителю команды
- **all** — всем игрокам на сервере
- **permission:право** — только игрокам с указанным правом (например: `permission:lochat.admin`)
### Плейсхолдеры
В сообщениях можно использовать следующие плейсхолдеры:
- **permission:право** — только игрокам с указанным правом
### Плейсхолдеры в командах
- `{player}` — имя игрока
- `{x}`, `{y}`, `{z}` — координаты игрока
- `{world}` — название мира
- `{arg0}`, `{arg1}`, `{arg2}` — аргументы команды (нумерация с 0)
- `{arg0}`, `{arg1}`, `{arg2}` — аргументы команды
- `{args}` — все аргументы через пробел
Также поддерживаются плейсхолдеры PlaceholderAPI (если установлен).
### Примеры
#### Простая команда помощи
```yaml
help:
message: "&6Добро пожаловать на сервер!\n&#808080Используйте /rules для просмотра правил"
aliases: ["помощь", "хелп"]
type: "chat"
target: "sender"
```
#### Команда с координатами
```yaml
coords:
message: "Ваши координаты: <green>{x}</green>, <green>{y}</green>, <green>{z}</green> в мире <yellow>{world}</yellow>"
aliases: ["координаты", "pos"]
type: "actionbar"
target: "sender"
```
#### Команда для админов (broadcast)
```yaml
restart-warning:
permission: "lochat.admin"
message: "<red><bold>ВНИМАНИЕ!</bold></red> <yellow>Сервер будет перезагружен через 5 минут!</yellow>"
aliases: ["рестарт", "reboot"]
type: "broadcast"
target: "all"
```
#### Команда с title
```yaml
welcome:
message: "&6Добро пожаловать!\n&#808080Наслаждайтесь игрой!"
aliases: ["привет"]
type: "title"
target: "sender"
```
#### Команда только для VIP
```yaml
vip-info:
permission: "lochat.vip"
message: "<gold>VIP информация:</gold>\n<yellow>Вы имеете доступ к специальным командам!</yellow>"
type: "chat"
target: "permission:lochat.vip"
```
### Форматирование цветов
В сообщениях можно использовать:
- **MiniMessage теги**: `<red>`, `<bold>`, `<#FF0000>`
- **Legacy коды**: `&a`, `&l`, `&c`
- **HEX цвета**: `#FF0000` (автоматически конвертируется)
### Важные замечания
1. После изменения `custom-commands.yml` выполните `/lochat reload`
2. Имена команд должны быть уникальными
3. Если команда уже существует в Minecraft/Bukkit, она будет перезаписана
4. Для title используйте `\n` для разделения заголовка и подзаголовка
5. PlaceholderAPI плейсхолдеры работают только если установлен PlaceholderAPI
- Все плейсхолдеры PlaceholderAPI
---
## Форматирование цветов
## 🎭 Головы игроков
### MiniMessage
### Использование
- `:head_nickname:` — показать ASCII голову игрока
- `@head nickname` — показать интерактивную голову с информацией
### Требования
- Право `lochat.heademoji.use`
- Включенная настройка `head-emoji.enabled: true`
---
## 🎨 Форматирование цветов
### MiniMessage (рекомендуется)
```
<red>Красный</red>
<gradient:red:blue>Градиент</gradient>
<red>Красный текст</red>
<gradient:red:blue>Градиент от красного к синему</gradient>
<rainbow>Радужный текст</rainbow>
<bold>Жирный</bold>
<italic>Курсив</italic>
```
### HEX цвета
```
&#FF0000Красный
&#3BA8FFГолубой
<#FF0000>Красный через HEX</color>
<gradient:#FF0000:#0000FF>HEX градиент</gradient>
```
### Legacy коды
### Legacy коды (поддерживаются)
```
&aЗелёный
&cКрасный
&aЗеленый
&lЖирный
&nПодчеркнутый
```
---
## Требования
## 🔧 Требования
- Folia 1.21.8+ / Paper 1.21+
- Java 21
### Обязательные
- **Paper 1.20.1** или новее
- **Java 21**
**Опционально:**
- PlaceholderAPI — для плейсхолдеров
- PlayerPoints — для покупки градиентов
- LuckPerms — для префиксов в табе
### Опциональные
- **PlaceholderAPI** — для плейсхолдеров
- **PlayerPoints** — для покупки градиентов за поинты
- **LuckPerms** — для интеграции с префиксами
- **SkinsRestorer** — для поддержки кастомных скинов
- **LibertyBans** — для интеграции с банами
---
## Сборка
## 🏗️ Сборка
```bash
./gradlew build
./gradlew clean build
```
Jar файл: `build/libs/LoChat-1.0.0.jar`
Готовый jar файл: `build/libs/LoChat-1.5.5-1.20.1.jar`
---
## 📝 Changelog
### v1.5.5-1.20.1
- ✅ Адаптация для Minecraft 1.20.1 Paper
- ✅ Исправлен фильтр мата с поддержкой обходов
- ✅ Исправлена команда spy для мониторинга всех сообщений
- ✅ Добавлена поддержка голов игроков в чате
- ✅ Добавлена команда настройки сообщения очистки чата
- ✅ Интеграция с SkinsRestorer
- ✅ Улучшено качество кода (SOLID, DRY, KISS)
- ✅ Обновлены все конфиги в едином стиле
- ✅ Исправлены все предупреждения компилятора
---
## 🤝 Поддержка
Если у вас возникли проблемы или вопросы:
1. Проверьте конфигурационные файлы
2. Убедитесь в совместимости версий
3. Проверьте права доступа игроков
4. Создайте issue в репозитории
---
**© 2024 loki. Все права защищены.**

View file

@ -1,74 +1,90 @@
# LoChat - Автосообщения
# Автор: loki
#
# Смайлики настраиваются в emojis.yml
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Auto Messages ║
# ║ Автосообщения чата ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# НАСТРОЙКИ
# ═══════════════════════════════════════════
settings:
enabled: true
interval: 300 # Интервал между сообщениями (секунды)
prefix: "&6[&eINFO&6]&r"
# Префикс автосообщений
prefix: "<gradient:#00D4FF:#0099CC>[INFO]</gradient>"
# Режим отправки:
# - "sequential" — по порядку (1, 2, 3...)
# - "random" — случайный порядок
# - "custom" — свой порядок (указать в order)
# Режим отправки: sequential (по порядку), random (случайно), custom (свой порядок)
mode: "sequential"
# Свой порядок (для mode: custom)
# Можно указывать названия или номера
# Пример: "welcome, rules, 3, donate, tips"
order: "welcome, motd, rules, donate, tips, discord"
# Свой порядок сообщений (только для режима custom)
# Можно указывать номера или названия сообщений
order: "welcome, rules, discord, website"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# СООБЩЕНИЯ
# ═══════════════════════════════════════════
messages:
# Приветствие (однострочное)
welcome: "&aДобро пожаловать на сервер! &e:star:"
# Приветственное сообщение
welcome:
- "<gradient:#FFD700:#FFA500>Добро пожаловать на наш сервер!</gradient>"
- "<gray>Используйте</gray> <gradient:#87CEEB:#4682B4>/help</gradient> <gray>для получения помощи</gray>"
# MOTD (многострочное)
motd:
- "&6╔══════════════════════════════════╗"
- "&6║ &e:star: &fДобро пожаловать! &e:star: &6║"
- "&6║ &7Онлайн: &a%online% &7игроков &6║"
- "&6║ &7Сайт: &bexample.com &6║"
- "&6╚══════════════════════════════════╝"
# Правила
# Правила сервера
rules:
- "&c&l:warning: ПРАВИЛА СЕРВЕРА :warning:"
- "&71. &fНе гриферить"
- "&72. &fНе читерить"
- "&73. &fУважать игроков"
- "&aПолные правила: &e/rules"
- "<gradient:#FF6B6B:#FF4757>Соблюдайте правила сервера!</gradient>"
- "<gray>Подробнее:</gray> <gradient:#87CEEB:#4682B4>/rules</gradient>"
# Донат
# Информация о Discord
discord:
- "<gradient:#7289DA:#5865F2>Присоединяйтесь к нашему Discord!</gradient>"
- "<gray>Ссылка:</gray> <click:open_url:'https://discord.gg/example'><gradient:#87CEEB:#4682B4>discord.gg/example</gradient></click>"
# Веб-сайт
website:
- "<gradient:#00FF88:#00CC66>Посетите наш сайт!</gradient>"
- "<gray>Адрес:</gray> <click:open_url:'https://example.com'><gradient:#87CEEB:#4682B4>example.com</gradient></click>"
# Донат информация
donate:
- "#FFD700&l:gem: ДОНАТ :gem:"
- "&7Поддержи сервер и получи"
- "&7крутые привилегии!"
- "&eПодробнее: &a/donate"
- "<gradient:#FFD700:#FFA500>Поддержите сервер!</gradient>"
- "<gray>Донат:</gray> <click:open_url:'https://donate.example.com'><gradient:#87CEEB:#4682B4>donate.example.com</gradient></click>"
# Советы
tips:
- "&b:zap: &fСовет дня:"
- "&7Используй &e/sethome &7чтобы"
- "&7сохранить свою локацию!"
# Градиентные ники
gradients:
- "<gradient:#9370DB:#8A2BE2>Создайте красивый ник!</gradient>"
- "<gray>Команда:</gray> <gradient:#87CEEB:#4682B4>/color</gradient> <gray>для градиентов</gray>"
# Discord
discord: "&9:game: &fНаш Discord: &bdiscord.gg/example"
# Чат команды
chat-commands:
- "<gradient:#FFA726:#FF9800>Полезные команды чата:</gradient>"
- "<gradient:#87CEEB:#4682B4>/msg <игрок> <сообщение></gradient> <gray>- личное сообщение</gray>"
- "<gradient:#87CEEB:#4682B4>/ignore <игрок></gradient> <gray>- игнорировать игрока</gray>"
# Голосование
vote: "&a:thumbsup: &fГолосуй за сервер: &e/vote &7и получи награды!"
# Онлайн статистика
online-stats:
- "<gradient:#6BCB77:#4ECDC4>Сейчас онлайн: {online} игроков</gradient>"
- "<gray>Максимум за день:</gray> <white>{max_online}</white>"
# Градиентное сообщение
gradient:
- "<gradient:#FF6B6B:#4ECDC4>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
- ""
- " &f:fire: &eСпециальное событие!"
- " &7Двойной опыт до конца недели!"
- ""
- "<gradient:#4ECDC4:#FF6B6B>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
# Время на сервере
server-time:
- "<gradient:#87CEEB:#4682B4>Время на сервере:</gradient> <white>{time}</white>"
- "<gray>Дата:</gray> <white>{date}</white>"
# События
events:
- "<gradient:#FF69B4:#FF1493>Следите за событиями!</gradient>"
- "<gray>Расписание:</gray> <gradient:#87CEEB:#4682B4>/events</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПЛЕЙСХОЛДЕРЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Доступные плейсхолдеры в сообщениях:
# {online} - количество игроков онлайн
# {max_online} - максимальное количество игроков (из server.properties)
# {time} - текущее время
# {date} - текущая дата
# {server_name} - название сервера
# {tps} - TPS сервера (если доступно)
#
# Также поддерживаются все плейсхолдеры PlaceholderAPI

View file

@ -1,33 +1,75 @@
# LoChat Configuration
# Author: loki
# Config Version: 2
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Configuration ║
# ║ Продвинутый чат-плагин для Paper ║
# ║ Версия: 1.5.5-1.20.1 ║
# ║ Автор: loki ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
config-version: 2
config-version: 3
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Префикс плагина в сообщениях
prefix: "<gradient:#00D4FF:#0099CC>[LoChat]</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
chat:
# ═══════════════════════════════════════════════════════════════════════════
# ГЛОБАЛЬНЫЙ ЧАТ
# ═══════════════════════════════════════════════════════════════════════════
global:
# Включить глобальный чат
enabled: true
prefix: "[G]"
format: "<prefix><player>: <message>"
# Символ для отправки в глобальный чат
symbol: "!"
# Кулдаун между сообщениями (секунды)
cooldown: 3
# Префикс глобального чата
prefix: "<gradient:#FFD700:#FFA500>[G]</gradient>"
# Формат сообщения: {prefix} {player} {message}
format: "{prefix} <gradient:#00FF88:#00CC66>{player}</gradient><dark_gray>:</dark_gray> {message}"
# ═══════════════════════════════════════════════════════════════════════════
# ЛОКАЛЬНЫЙ ЧАТ
# ═══════════════════════════════════════════════════════════════════════════
local:
# Включить локальный чат
enabled: true
# Радиус локального чата (блоки)
radius: 100
prefix: "[L]"
format: "<player>: <message>"
# Кулдаун между сообщениями (секунды)
cooldown: 1
# Префикс локального чата
prefix: "<gradient:#87CEEB:#4682B4>[L]</gradient>"
# Формат сообщения
format: "{prefix} <gradient:#00FF88:#00CC66>{player}</gradient><dark_gray>:</dark_gray> {message}"
# ═══════════════════════════════════════════════════════════════════════════
# ЛИЧНЫЕ СООБЩЕНИЯ
# ═══════════════════════════════════════════════════════════════════════════
pm:
# Включить личные сообщения
enabled: true
# Кулдаун между PM (секунды)
cooldown: 2
# Логировать PM в консоль
log: false
# Звук при получении PM
sound: true
sound-type: "ENTITY_EXPERIENCE_ORB_PICKUP"
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Интеграция с GradientNick (LoPreff)
# Использует PlaceholderAPI плейсхолдеры
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГРАДИЕНТНЫЕ НИКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Интеграция с градиентным модулем (встроенный LoPreff)
lopreff:
# Включить градиентные ники
enabled: true
# Использовать градиентный ник в чате
use-gradient-name: true
@ -41,22 +83,45 @@ display:
# Обновлять tab list
update-tab-list: true
# Упоминания @ник
mentions:
enabled: true
sound: true
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Выделение при @ник
highlight: "&#04CADF@{player}"
# Выделение когда твой ник написали (без @)
self-highlight: "&#04CADF{player}"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ УПОМИНАНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Фильтр мата
filter:
mentions:
# Включить систему упоминаний (@nickname)
enabled: true
# Воспроизводить звук при упоминании
sound: true
# Тип звука
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Подсветка упоминания в чате
highlight: "<gradient:#FFFF00:#FFD700>@{player}</gradient>"
# Подсветка собственного ника
self-highlight: "<gradient:#FFD700:#FFA500>{player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ФИЛЬТР МАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
filter:
# Включить фильтр мата
enabled: true
# Список запрещенных слов (простая проверка)
words:
- "хуй"
- "пизд"
- "блять"
- "ебать"
- "сука"
- "мудак"
- "гандон"
- "пидор"
- "говно"
- "шлюха"
# Регулярные выражения для обнаружения мата с обходами
patterns:
# Основные корни с вариациями
- "х\\s*у\\s*[йяёе]" # хуй, хуя, хуё, хуе
- "[хx]\\s*у\\s*[йяёе]" # латиница: xuй
- "п\\s*[иi]\\s*з\\s*д" # пизд, пiзд
@ -65,154 +130,113 @@ filter:
- "б\\s*л\\s*я\\s*[тдь]" # блять, блядь
- "с\\s*у\\s*к\\s*[аи]" # сука, суки
- "м\\s*у\\s*д\\s*[аи]" # муда, муди
- "г\\s*а\\s*н\\s*д\\s*о\\s*н" # гандон
- "д\\s*р\\s*о\\s*ч" # дрочить
- "с\\s*с\\s*а\\s*т\\s*ь" # ссать
- "с\\s*р\\s*а\\s*т\\s*ь" # срать
- "ш\\s*м\\s*а\\s*р\\s*[аи]" # шмара
- "ч\\s*м\\s*[оы]" # чмо, чмы
- "г\\s*н\\s*и\\s*д\\s*[аы]" # гнида
# Простые слова (для быстрой проверки)
words:
# Основные
- "хуй"
- "хуя"
- "хуё"
- "хуе"
- "хуёк"
- "хуёчек"
- "хуесос"
- "хуеплёт"
- "пизда"
- "пизде"
- "пизду"
- "пиздец"
- "пиздюк"
- "пиздюшка"
- "пиздануть"
- "спиздить"
- "пиздоглазый"
- "ебать"
- "ебал"
- "ебут"
- "ебись"
- "ебитесь"
- "ебашить"
- "уёбывать"
- "заёбывать"
- "ебашка"
- "ебанарот"
- "блять"
- "блядь"
- "блядина"
- "сука"
- "суки"
- "сучка"
- "мудак"
- "мудила"
- "мудачок"
- "гандон"
- "гандоник"
- "пидор"
- "пидорас"
- "дрочить"
- "дрочка"
- "онанист"
- "ссать"
- "срать"
- "говно"
- "говнюк"
- "шмара"
- "шлюха"
- "проститутка"
- "чмо"
- "чмошник"
- "чмырь"
- "гнида"
- "тварь"
- "падла"
- "сволочь"
- "охуеть"
- "ахуеть"
- "нихуя"
- "кончепизд"
# Обходы с символами
- "х*й"
- "п@зда"
- "б#ять"
- "хуй"
- "ebat"
- "pidar"
- "mudak"
action: "censor" # censor/block/warn
# Действие при обнаружении мата: censor, block, warn
action: "censor"
# Замена для цензуры
replacement: "***"
# Анти-спам
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АНТИ-СПАМ │
# └─────────────────────────────────────────────────────────────────────────────┘
antispam:
# Включить анти-спам
enabled: true
# Максимальный процент заглавных букв
max-caps-percent: 70
# Максимальное количество повторяющихся символов
max-repeat-chars: 5
# Задержка для проверки похожих сообщений (секунды)
similar-message-delay: 30
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АВТОСООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
automessages:
# Включить автосообщения
enabled: true
# Интервал между сообщениями (секунды)
interval: 300
# Случайный порядок сообщений
random: false
formats:
announcement: "&#04CADF[ОБЪЯВЛЕНИЕ] <message>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЪЯВЛЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Настройки объявлений
announcements:
# Показывать title при объявлении
show-title: true
# Заголовок title
title-header: "&#04CADFОБЪЯВЛЕНИЕ"
title-header: "<gradient:#FF6B6B:#FF4757>ОБЪЯВЛЕНИЕ</gradient>"
# Показывать actionbar при объявлении
show-actionbar: true
# Время показа title (в секундах)
title-duration: 3
# ========================================
# Система мутов
# ========================================
# Формат объявления
formats:
announcement: "<gradient:#FF6B6B:#FF4757>[ОБЪЯВЛЕНИЕ]</gradient> <message>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОЧИСТКА ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
clearchat:
message:
# Показывать сообщение после очистки чата
enabled: true
# Текст сообщения ({player} - имя администратора)
text: "<gradient:#FF6B6B:#FF4757>Чат очищен администратором {player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГОЛОВЫ ИГРОКОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
head-emoji:
# Включить функцию голов игроков
enabled: true
# Разрешить использование @head команд
allow-player-heads: true
# Максимальное количество голов в одном сообщении
max-heads-per-message: 3
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СИСТЕМА МУТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
mute:
# Сообщения с плейсхолдерами:
# %duration% - время мута
# %reason% - причина
# %player% - замученный игрок
# %operator% - модератор (чистый ник без префикса и цвета)
# %operator% - модератор
messages:
# Сообщение при муте (broadcast)
muted: "&#FF6B6B%player% &#808080был замучен на &#FF6B6B%duration% &#808080модератором &#FF6B6B%operator%&#808080. Причина: &#FF6B6B%reason%"
muted: "<gradient:#FF6B6B:#FF4757>%player%</gradient> <gray>был замучен на</gray> <gradient:#FF6B6B:#FF4757>%duration%</gradient> <gray>модератором</gray> <gradient:#FF6B6B:#FF4757>%operator%</gradient><gray>. Причина:</gray> <gradient:#FF6B6B:#FF4757>%reason%</gradient>"
# Сообщение при размуте (broadcast)
unmuted: "&#6BCB77%player% &#808080был размучен модератором &#6BCB77%operator%"
unmuted: "<gradient:#6BCB77:#4ECDC4>%player%</gradient> <gray>был размучен модератором</gray> <gradient:#6BCB77:#4ECDC4>%operator%</gradient>"
# Сообщение замученному игроку
you-muted: "&#FF6B6BВы замучены на %duration%! Причина: %reason%"
you-muted: "<gradient:#FF6B6B:#FF4757>Вы замучены на %duration%! Причина: %reason%</gradient>"
# Сообщение при перманентном муте
you-muted-permanent: "&#FF6B6BВы замучены навсегда! Причина: %reason%"
you-muted-permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда! Причина: %reason%</gradient>"
# Сообщение при попытке написать в чат
cannot-chat: "&#FF6B6BВы замучены! Осталось: %duration%"
cannot-chat-permanent: "&#FF6B6BВы замучены навсегда!"
cannot-chat: "<gradient:#FF6B6B:#FF4757>Вы замучены! Осталось: %duration%</gradient>"
cannot-chat-permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда!</gradient>"
# Тихий мут (только для тех кто видит)
silent-muted: "&#808080[Тихо] &#FF6B6B%player% &#808080замучен на &#FF6B6B%duration% &#808080(%operator%). Причина: %reason%"
silent-unmuted: "&#808080[Тихо] &#6BCB77%player% &#808080размучен (%operator%)"
silent-muted: "<gray>[Тихо]</gray> <gradient:#FF6B6B:#FF4757>%player%</gradient> <gray>замучен на</gray> <gradient:#FF6B6B:#FF4757>%duration%</gradient> <gray>(%operator%). Причина: %reason%</gray>"
silent-unmuted: "<gray>[Тихо]</gray> <gradient:#6BCB77:#4ECDC4>%player%</gradient> <gray>размучен (%operator%)</gray>"
# Причина по умолчанию если не указана
default-reason: "Нету."
default-reason: "Нарушение правил"
# Максимальное время мута по умолчанию (если не указано время)
# Используется наивысшее доступное время из прав игрока
# Формат: 1d, 7d, 30d, perm (перманентный)
default-duration: "7d"
# Доступные длительности для прав lochat.mute.dur.<время>
# Игрок с правом lochat.mute.dur.7d может мутить максимум на 7 дней
# lochat.mute.dur.perm - может мутить навсегда
durations:
- "10m"
- "30m"

View file

@ -1,51 +1,169 @@
# Кастомные команды LoChat
# Здесь можно создавать свои команды с сообщениями и алиасами
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Custom Commands ║
# ║ Кастомные команды ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Пример структуры:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРИМЕРЫ КОМАНД │
# └─────────────────────────────────────────────────────────────────────────────┘
# Структура команды:
# command-name:
# permission: "lochat.command.name" # Право для использования (опционально)
# message: "Текст сообщения" # Сообщение которое отправится
# aliases: ["alias1", "alias2"] # Алиасы команды (опционально)
# type: "chat" # Тип: chat, broadcast, title, actionbar
# target: "sender" # Кому отправить: sender, all, permission:право
# permission: "право.для.использования" # Опционально
# message: "Текст сообщения" # Обязательно
# aliases: ["alias1", "alias2"] # Опционально
# type: "chat" # chat, broadcast, title, actionbar
# target: "sender" # sender, all, permission:право
# ═══════════════════════════════════════════════════════════════════════════════
# ИНФОРМАЦИОННЫЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Примеры команд:
help:
message: "&6Добро пожаловать на сервер!\n&#808080Используйте /rules для просмотра правил"
message: |
<gradient:#FFD700:#FFA500>═══════ Помощь по серверу ═══════</gradient>
<gradient:#87CEEB:#4682B4>/rules</gradient> <gray>- правила сервера</gray>
<gradient:#87CEEB:#4682B4>/discord</gradient> <gray>- наш Discord</gray>
<gradient:#87CEEB:#4682B4>/website</gradient> <gray>- официальный сайт</gray>
<gradient:#87CEEB:#4682B4>/coords</gradient> <gray>- ваши координаты</gray>
<gradient:#87CEEB:#4682B4>/time</gradient> <gray>- время на сервере</gray>
aliases: ["помощь", "хелп"]
type: "chat"
target: "sender"
rules:
message: "&c&lПРАВИЛА СЕРВЕРА:\n&#8080801. Не гриферить\n2. Не читерить\n3. Уважать других игроков"
message: |
<gradient:#FF6B6B:#FF4757>═══════ Правила сервера ═══════</gradient>
<white>1.</white> <gray>Не используйте читы и моды</gray>
<white>2.</white> <gray>Уважайте других игроков</gray>
<white>3.</white> <gray>Не спамьте в чате</gray>
<white>4.</white> <gray>Не стройте рядом с чужими постройками</gray>
<white>5.</white> <gray>Не используйте мат и оскорбления</gray>
<gradient:#FFA726:#FF9800>Нарушение правил карается мутом или баном!</gradient>
aliases: ["правила", "rule"]
type: "chat"
target: "sender"
discord:
message: "<blue>Наш Discord сервер: discord.gg/example</blue>"
message: |
<gradient:#7289DA:#5865F2>═══════ Наш Discord ═══════</gradient>
<gray>Присоединяйтесь к нашему сообществу!</gray>
<click:open_url:'https://discord.gg/example'><gradient:#87CEEB:#4682B4>🔗 discord.gg/example</gradient></click>
<gray>В Discord вы можете:</gray>
<white>•</white> <gray>Общаться с игроками</gray>
<white>•</white> <gray>Получать новости сервера</gray>
<white>•</white> <gray>Участвовать в событиях</gray>
aliases: ["дискорд", "ds"]
type: "chat"
target: "sender"
# Команда для админов
website:
message: |
<gradient:#00FF88:#00CC66>═══════ Официальный сайт ═══════</gradient>
<click:open_url:'https://example.com'><gradient:#87CEEB:#4682B4>🌐 example.com</gradient></click>
<gray>На сайте доступно:</gray>
<white>•</white> <gray>Карта сервера</gray>
<white>•</white> <gray>Статистика игроков</gray>
<white>•</white> <gray>Форум и новости</gray>
aliases: ["сайт", "site"]
type: "chat"
target: "sender"
# ═══════════════════════════════════════════════════════════════════════════════
# УТИЛИТЫ
# ═══════════════════════════════════════════════════════════════════════════════
coords:
message: |
<gradient:#FFA726:#FF9800>Ваши координаты:</gradient>
<gradient:#87CEEB:#4682B4>X:</gradient> <white>{x}</white>
<gradient:#87CEEB:#4682B4>Y:</gradient> <white>{y}</white>
<gradient:#87CEEB:#4682B4>Z:</gradient> <white>{z}</white>
<gradient:#87CEEB:#4682B4>Мир:</gradient> <white>{world}</white>
aliases: ["координаты", "pos", "position"]
type: "actionbar"
target: "sender"
time:
message: |
<gradient:#87CEEB:#4682B4>Время на сервере:</gradient> <white>%server_time_24%</white>
<gradient:#87CEEB:#4682B4>Дата:</gradient> <white>%server_date%</white>
<gradient:#87CEEB:#4682B4>Онлайн:</gradient> <white>%server_online%</white> <gray>игроков</gray>
aliases: ["время", "дата"]
type: "chat"
target: "sender"
# ═══════════════════════════════════════════════════════════════════════════════
# АДМИНСКИЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
restart-warning:
permission: "lochat.admin"
message: "<red><bold>ВНИМАНИЕ!</bold></red> <yellow>Сервер будет перезагружен через 5 минут!</yellow>"
message: |
<gradient:#FF6B6B:#FF4757>⚠ ВНИМАНИЕ! ⚠</gradient>
<gradient:#FFA726:#FF9800>Сервер будет перезагружен через 5 минут!</gradient>
<gray>Сохраните свой прогресс и подготовьтесь к перезагрузке.</gray>
aliases: ["рестарт", "reboot"]
type: "title"
target: "all"
maintenance:
permission: "lochat.admin"
message: |
<gradient:#FF6B6B:#FF4757>Сервер переходит в режим технических работ</gradient>
<gray>Ожидаемое время: 30 минут</gray>
aliases: ["тех-работы", "maintenance"]
type: "broadcast"
target: "all"
# Команда с title
# ═══════════════════════════════════════════════════════════════════════════════
# VIP КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
vip-info:
permission: "lochat.vip"
message: |
<gradient:#FFD700:#FFA500>═══════ VIP Привилегии ═══════</gradient>
<white>•</white> <gray>Цветной ник и префикс</gray>
<white>•</white> <gray>Приоритет входа на сервер</gray>
<white>•</white> <gray>Дополнительные команды</gray>
<white>•</white> <gray>Больше возможностей в чате</gray>
<gradient:#6BCB77:#4ECDC4>Спасибо за поддержку сервера!</gradient>
type: "chat"
target: "permission:lochat.vip"
# ═══════════════════════════════════════════════════════════════════════════════
# РАЗВЛЕКАТЕЛЬНЫЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
welcome:
message: "Добро пожаловать!"
aliases: ["привет"]
message: |
<gradient:#FFD700:#FFA500>Добро пожаловать на сервер!</gradient>
<gradient:#87CEEB:#4682B4>Игрок {player} присоединился к игре</gradient>
aliases: ["привет", "hello"]
type: "title"
target: "sender"
# Команда с actionbar
coords:
message: "Ваши координаты: {x}, {y}, {z}"
aliases: ["координаты", "pos"]
type: "actionbar"
target: "sender"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПЛЕЙСХОЛДЕРЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Доступные плейсхолдеры в сообщениях:
# {player} - имя игрока
# {x}, {y}, {z} - координаты игрока
# {world} - название мира
# {arg0}, {arg1}, {arg2} - аргументы команды (нумерация с 0)
# {args} - все аргументы через пробел
#
# Также поддерживаются все плейсхолдеры PlaceholderAPI:
# %player_name% - имя игрока
# %server_online% - количество игроков онлайн
# %server_time_24% - время в формате 24 часа
# %server_date% - текущая дата
# И многие другие...

View file

@ -1,385 +1,281 @@
# LoChat - Смайлики и стикеры
# Автор: loki
#
# Формат: "триггер": "замена"
# Игроки пишут триггер, он заменяется на символ
#
# Права:
# - chat.emoji.use — использование смайликов
# - chat.emoji.* — все смайлики
# - chat.emoji.hearts — только категория hearts
# - chat.emoji.custom — кастомные смайлики
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Emojis ║
# ║ Смайлики для чата ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ═══════════════════════════════════════════
# НАСТРОЙКИ
# ═══════════════════════════════════════════
settings:
enabled: true
# Требовать право chat.emoji.use
require-permission: false
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЭМОЦИИ И ЛИЦА │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# ЛИЦА И ЭМОЦИИ
# ═══════════════════════════════════════════
faces:
":)": "☺"
emojis:
# Основные эмоции
":)": "😊"
":(": "😢"
":D": "😃"
":(": "☹"
";)": "😉"
":P": "😛"
":O": "😮"
"XD": "😆"
":o": "😮"
":|": "😐"
":/": "😕"
":*": "😘"
"^_^": "😊"
"-_-": "😑"
">:(": "😠"
":3": "😺"
":'(": "😢"
":')": "😂"
"o_o": "😳"
"O_O": "😱"
":thinking:": "🤔"
":cool:": "😎"
":angry:": "😡"
"<3": "❤️"
"</3": "💔"
# Расширенные эмоции
":smile:": "😊"
":sad:": "😢"
":happy:": "😊"
":laugh:": "😂"
":cry:": "😭"
":sleep:": "😴"
":sick:": "🤢"
":dead:": "💀"
# ═══════════════════════════════════════════
# СЕРДЦА И ЛЮБОВЬ
# ═══════════════════════════════════════════
hearts:
"<3": "❤"
":heart:": "❤"
":red_heart:": "❤"
":blue_heart:": "💙"
":green_heart:": "💚"
":yellow_heart:": "💛"
":purple_heart:": "💜"
":black_heart:": "🖤"
":white_heart:": "🤍"
":orange_heart:": "🧡"
":happy:": "😃"
":wink:": "😉"
":tongue:": "😛"
":surprised:": "😮"
":neutral:": "😐"
":confused:": "😕"
":kiss:": "😘"
":love:": "❤️"
":broken_heart:": "💔"
":two_hearts:": "💕"
":sparkling_heart:": "💖"
":heartbeat:": "💓"
":heartpulse:": "💗"
":love:": "💕"
":kiss:": "💋"
":angry:": "😠"
":rage:": "😡"
":cry:": "😭"
":laugh:": "😂"
":joy:": "😂"
":rofl:": "🤣"
":cool:": "😎"
":nerd:": "🤓"
":thinking:": "🤔"
":sleepy:": "😴"
":sick:": "🤒"
":dizzy:": "😵"
":crazy:": "🤪"
# ═══════════════════════════════════════════
# ЖЕСТЫ И РУКИ
# ═══════════════════════════════════════════
gestures:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЖЕСТЫ И ДЕЙСТВИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Жесты
":thumbsup:": "👍"
":+1:": "👍"
":thumbsdown:": "👎"
":-1:": "👎"
":clap:": "👏"
":wave:": "👋"
":ok:": "👌"
":ok_hand:": "👌"
":peace:": "✌️"
":fist:": "✊"
":punch:": "👊"
":peace:": "✌"
":v:": "✌"
":muscle:": "💪"
":strong:": "💪"
":wave:": "👋"
":clap:": "👏"
":pray:": "🙏"
":hands:": "🙌"
":point_up:": "☝"
":point_down:": "👇"
":point_left:": "👈"
":muscle:": "💪"
":point_right:": "👉"
":middle_finger:": "🖕"
":call:": "🤙"
":point_left:": "👈"
":point_up:": "👆"
":point_down:": "👇"
# ═══════════════════════════════════════════
# ПРИРОДА И ПОГОДА
# ═══════════════════════════════════════════
nature:
":fire:": "🔥"
":flame:": "🔥"
":zap:": "⚡"
":lightning:": "⚡"
":boom:": "💥"
":explosion:": "💥"
":sparkles:": "✨"
":stars:": "✨"
":snow:": "❄"
":snowflake:": "❄"
":cloud:": "☁"
":sun:": "☀"
":sunny:": "☀"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРИРОДА И ПОГОДА │
# └─────────────────────────────────────────────────────────────────────────────┘
# Природа
":sun:": "☀️"
":moon:": "🌙"
":crescent_moon:": "🌙"
":full_moon:": "🌕"
":rainbow:": "🌈"
":star:": "⭐"
":cloud:": "☁️"
":rain:": "🌧️"
":snow:": "❄️"
":fire:": "🔥"
":water:": "💧"
":drop:": "💧"
":ocean:": "🌊"
":wind:": "💨"
":tornado:": "🌪"
":leaf:": "🍃"
":tree:": "🌳"
":flower:": "🌸"
":rose:": "🌹"
":cactus:": "🌵"
":leaf:": "🍃"
":rainbow:": "🌈"
":lightning:": "⚡"
# ═══════════════════════════════════════════
# ЗВЁЗДЫ И СИМВОЛЫ
# ═══════════════════════════════════════════
symbols:
":star:": "⭐"
":star2:": "🌟"
":glowing_star:": "🌟"
":dizzy:": "💫"
":sparkle:": "❇"
":skull:": "💀"
":ghost:": "👻"
":alien:": "👽"
":robot:": "🤖"
":poop:": "💩"
":100:": "💯"
":gem:": "💎"
":diamond:": "💎"
":money:": "💰"
":dollar:": "💵"
":coin:": "🪙"
":gift:": "🎁"
":balloon:": "🎈"
":party:": "🎉"
":tada:": "🎉"
":confetti:": "🎊"
":trophy:": "🏆"
":medal:": "🏅"
":crown:": "👑"
":king:": "👑"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЖИВОТНЫЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# МАЙНКРАФТ ТЕМАТИКА
# ═══════════════════════════════════════════
minecraft:
":sword:": "⚔"
":crossed_swords:": "⚔"
":shield:": "🛡"
":axe:": "🪓"
":pickaxe:": "⛏"
":bow:": "🏹"
":arrow:": "➤"
":bomb:": "💣"
":tnt:": "🧨"
":potion:": "🧪"
":ender:": "🟣"
":nether:": "🔴"
":emerald:": "💚"
":gold:": "🟡"
":iron:": "⬜"
":coal:": "⬛"
":redstone:": "🔴"
":lapis:": "🔵"
":exp:": "🟢"
":xp:": "🟢"
":heart_mc:": "❤"
":hunger:": "🍖"
":armor:": "🛡"
# ═══════════════════════════════════════════
# ЖИВОТНЫЕ
# ═══════════════════════════════════════════
animals:
# Животные
":cat:": "🐱"
":dog:": "🐶"
":wolf:": "🐺"
":fox:": "🦊"
":pig:": "🐷"
":cow:": "🐮"
":sheep:": "🐑"
":chicken:": "🐔"
":dragon:": "🐉"
":bee:": "🐝"
":fish:": "🐟"
":spider:": "🕷"
":bat:": "🦇"
":rabbit:": "🐰"
":bear:": "🐻"
":panda:": "🐼"
":monkey:": "🐵"
":pig:": "🐷"
":cow:": "🐄"
":horse:": "🐴"
":unicorn:": "🦄"
":snake:": "🐍"
":sheep:": "🐑"
":chicken:": "🐔"
":duck:": "🦆"
":eagle:": "🦅"
":fish:": "🐟"
":shark:": "🦈"
":whale:": "🐋"
":dolphin:": "🐬"
":turtle:": "🐢"
":frog:": "🐸"
":bird:": "🐦"
":penguin:": "🐧"
":owl:": "🦉"
":snake:": "🐍"
":dragon:": "🐉"
":unicorn:": "🦄"
# ═══════════════════════════════════════════
# ЕДА И НАПИТКИ
# ═══════════════════════════════════════════
food:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЕДА И НАПИТКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Еда
":apple:": "🍎"
":green_apple:": "🍏"
":banana:": "🍌"
":orange:": "🍊"
":strawberry:": "🍓"
":watermelon:": "🍉"
":grapes:": "🍇"
":cherry:": "🍒"
":peach:": "🍑"
":pineapple:": "🍍"
":bread:": "🍞"
":meat:": "🍖"
":steak:": "🥩"
":cake:": "🎂"
":cookie:": "🍪"
":cheese:": "🧀"
":meat:": "🥩"
":pizza:": "🍕"
":hamburger:": "🍔"
":burger:": "🍔"
":fries:": "🍟"
":hotdog:": "🌭"
":taco:": "🌮"
":sushi:": "🍣"
":ramen:": "🍜"
":egg:": "🥚"
":cheese:": "🧀"
":milk:": "🥛"
":cake:": "🎂"
":cookie:": "🍪"
":donut:": "🍩"
":ice_cream:": "🍦"
":candy:": "🍬"
":chocolate:": "🍫"
# Напитки
":coffee:": "☕"
":tea:": "🍵"
":beer:": "🍺"
":wine:": "🍷"
":cocktail:": "🍹"
":ice_cream:": "🍦"
":donut:": "🍩"
":candy:": "🍬"
":chocolate:": "🍫"
":watermelon:": "🍉"
":banana:": "🍌"
":carrot:": "🥕"
":corn:": "🌽"
":milk:": "🥛"
":water:": "💧"
# ═══════════════════════════════════════════
# ИГРОВЫЕ И ИНТЕРФЕЙС
# ═══════════════════════════════════════════
gaming:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИГРЫ И РАЗВЛЕЧЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Игры
":game:": "🎮"
":controller:": "🎮"
":joystick:": "🕹"
":dice:": "🎲"
":chess:": "♟"
":target:": "🎯"
":flag:": "🚩"
":checkered_flag:": "🏁"
":warning:": "⚠"
":no_entry:": "⛔"
":stop:": "🛑"
":check:": "✓"
":checkmark:": "✔"
":x:": "✗"
":cross:": "✖"
":question:": "❓"
":exclamation:": "❗"
":zzz:": "💤"
":bulb:": "💡"
":idea:": "💡"
":bell:": "🔔"
":mute:": "🔇"
":speaker:": "🔊"
":mega:": "📢"
":mic:": "🎤"
":cards:": "🃏"
":chess:": "♟️"
":football:": "⚽"
":basketball:": "🏀"
":tennis:": "🎾"
":bowling:": "🎳"
":dart:": "🎯"
":trophy:": "🏆"
":medal:": "🏅"
":crown:": "👑"
# ═══════════════════════════════════════════
# СТРЕЛКИ И НАПРАВЛЕНИЯ
# ═══════════════════════════════════════════
arrows:
":arrow_up:": "↑"
":arrow_down:": "↓"
":arrow_left:": "←"
":arrow_right:": "→"
":arrow_up_right:": "↗"
":arrow_up_left:": "↖"
":arrow_down_right:": "↘"
":arrow_down_left:": "↙"
":arrows_lr:": "↔"
":arrows_ud:": "↕"
":return:": "↩"
":redo:": "↪"
":refresh:": "🔄"
":infinity:": "∞"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ТРАНСПОРТ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# МУЗЫКА И ИСКУССТВО
# ═══════════════════════════════════════════
music:
":note:": "♪"
":notes:": "♫"
":music:": "🎵"
":musical_note:": "🎶"
":headphones:": "🎧"
":guitar:": "🎸"
":piano:": "🎹"
":drum:": "🥁"
":violin:": "🎻"
":art:": "🎨"
":palette:": "🎨"
":camera:": "📷"
":movie:": "🎬"
":tv:": "📺"
":radio:": "📻"
# Транспорт
":car:": "🚗"
":bus:": "🚌"
":truck:": "🚚"
":bike:": "🚲"
":motorcycle:": "🏍️"
":plane:": "✈️"
":helicopter:": "🚁"
":rocket:": "🚀"
":ship:": "🚢"
":boat:": "⛵"
":train:": "🚂"
# ═══════════════════════════════════════════
# РАЗНОЕ
# ═══════════════════════════════════════════
misc:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРЕДМЕТЫ И СИМВОЛЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Предметы
":sword:": "⚔️"
":shield:": "🛡️"
":bow:": "🏹"
":hammer:": "🔨"
":pickaxe:": "⛏️"
":axe:": "🪓"
":shovel:": "🗡️"
":key:": "🔑"
":lock:": "🔒"
":unlock:": "🔓"
":key:": "🔑"
":hourglass:": "⏳"
":timer:": "⏱"
":clock:": "🕐"
":calendar:": "📅"
":pin:": "📌"
":paperclip:": "📎"
":scissors:": "✂"
":pencil:": "✏"
":pen:": "🖊"
":book:": "📖"
":scroll:": "📜"
":mail:": "📧"
":envelope:": "✉"
":phone:": "📱"
":computer:": "💻"
":keyboard:": "⌨"
":mouse:": "🖱"
":trash:": "🗑"
":tools:": "🛠"
":wrench:": "🔧"
":hammer:": "🔨"
":gear:": "⚙"
":link:": "🔗"
":magnet:": "🧲"
":battery:": "🔋"
":plug:": "🔌"
":gem:": "💎"
":diamond:": "💎"
":gold:": "🥇"
":silver:": "🥈"
":bronze:": "🥉"
":coin:": "🪙"
":money:": "💰"
":gift:": "🎁"
":balloon:": "🎈"
":party:": "🎉"
":confetti:": "🎊"
":fireworks:": "🎆"
# ═══════════════════════════════════════════
# КАСТОМНЫЕ (добавляй свои)
# ═══════════════════════════════════════════
custom:
# Примеры кастомных смайликов
":server:": "🖥"
":admin:": "👨‍💻"
":mod:": "🛡"
":vip:": "⭐"
":donate:": "💎"
":online:": "🟢"
":offline:": "🔴"
":afk:": "💤"
":gg:": "🏆"
":ez:": "😎"
":rip:": "⚰"
":f:": "🇫"
":pog:": "😲"
":kek:": "😂"
":sus:": "🤨"
":bruh:": "😐"
":based:": "💪"
":cringe:": "😬"
":ratio:": "📉"
":w:": "🏆"
":l:": "📉"
# Символы
":check:": "✅"
":cross:": "❌"
":warning:": "⚠️"
":info:": "ℹ️"
":question:": "❓"
":exclamation:": "❗"
":plus:": "➕"
":minus:": "➖"
":multiply:": "✖️"
":divide:": "➗"
":arrow_up:": "⬆️"
":arrow_down:": "⬇️"
":arrow_left:": "⬅️"
":arrow_right:": "➡️"
":100:": "💯"
":infinity:": "♾️"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ MINECRAFT СПЕЦИФИЧНЫЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Minecraft блоки и предметы
":creeper:": "💥"
":tnt:": "🧨"
":redstone:": "🔴"
":emerald:": "💚"
":iron:": "⚪"
":coal:": "⚫"
":wood:": "🟤"
":stone:": "🗿"
":dirt:": "🟫"
":grass:": "🟩"
":sand:": "🟨"
":water_bucket:": "🪣"
":lava_bucket:": "🔥"
":bed:": "🛏️"
":chest:": "📦"
":furnace:": "🔥"
":crafting:": "🔧"
":enchant:": "✨"
":potion:": "🧪"
":book:": "📚"
":map:": "🗺️"
":compass:": "🧭"
":clock:": "🕐"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГОЛОВЫ ИГРОКОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Примеры использования голов игроков:
# :head_Steve: - показать голову игрока Steve
# @head Notch - показать интерактивную голову игрока Notch
#
# Требуется право: lochat.heademoji.use
head_examples:
usage: |
<gradient:#9370DB:#8A2BE2>═══════ Головы игроков ═══════</gradient>
<gradient:#87CEEB:#4682B4>:head_nickname:</gradient> <gray>- показать голову игрока</gray>
<gradient:#87CEEB:#4682B4>@head nickname</gradient> <gray>- интерактивная голова</gray>
<gray>Требуется право:</gray> <white>lochat.heademoji.use</white>

View file

@ -1,68 +1,141 @@
# LoChat Gradient Module Configuration
# Модуль градиентных ников (интегрированный LoPreff)
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Gradient Config ║
# ║ Настройки градиентных ников ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Включить/выключить модуль
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Включить градиентные ники
enabled: true
# Тип хранения данных: file или sqlite
storage-type: "file"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ЦВЕТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Минимальное количество цветов в градиенте
min-colors: 1
# Максимальное количество цветов в градиенте
max-colors: 7
# Минимальное количество цветов
min-colors: 1
# Цена за каждый цвет (PlayerPoints)
price-per-color: 50
# Цена за префикс
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ПРЕФИКСОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Цена за префикс (PlayerPoints)
prefix-price: 500
# Покупка префикса один раз (потом бесплатно)
# Одноразовая покупка префикса (true) или за каждое изменение (false)
prefix-one-time-purchase: true
# Кулдаун на смену цвета (секунды)
# Максимальная длина префикса (символы)
max-prefix-length: 16
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КУЛДАУНЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Кулдаун на изменение цвета (секунды)
color-cooldown: 60
# Кулдаун на смену префикса (секунды)
prefix-cooldown: 300
# Кулдаун на изменение префикса (секунды)
prefix-cooldown: 120
# Максимальная длина префикса
max-prefix-length: 7
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИНТЕГРАЦИИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Формат префикса ({prefix} - сам префикс)
prefix-format: "[{prefix}] "
# Интеграция с LuckPerms
luckperms:
# Включить интеграцию
enabled: true
# Приоритет префикса в LuckPerms
prefix-priority: 100
# Обновлять префикс в LuckPerms при изменении
update-prefix: true
# Применять градиент на префикс
gradient-on-prefix: true
# Интеграция с PlayerPoints
playerpoints:
# Включить интеграцию (покупки за поинты)
enabled: true
# Показывать баланс в GUI
show-balance: true
# Применять градиент на LuckPerms префикс (если нет кастомного)
gradient-on-luckperms-prefix: true
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРЕДУСТАНОВКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Единый градиент на префикс + ник
continuous-gradient: true
# Предустановленные градиенты
presets:
fire: ["#FF4500", "#FF6347", "#FFD700"]
ocean: ["#00CED1", "#1E90FF", "#4169E1"]
forest: ["#228B22", "#32CD32", "#90EE90"]
sunset: ["#FF69B4", "#FF1493", "#DC143C"]
rainbow: ["#FF0000", "#FF7F00", "#FFFF00", "#00FF00", "#0000FF", "#4B0082", "#9400D3"]
ice: ["#B0E0E6", "#87CEEB", "#4682B4"]
gold: ["#FFD700", "#FFA500", "#FF8C00"]
purple: ["#9370DB", "#8A2BE2", "#4B0082"]
pink: ["#FFB6C1", "#FF69B4", "#FF1493"]
green: ["#00FF7F", "#00FA9A", "#98FB98"]
# Использовать &#RRGGBB формат (true) или <#RRGGBB> (false)
use-legacy-rgb-format: false
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ GUI НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Отображение над игроком
display:
# Обновлять display name игрока (показывает префикс+ник над головой)
update-display-name: true
# Обновлять tab list
update-tab-list: true
gui:
# Название GUI подтверждения
confirm-title: "<gradient:#FFD700:#FFA500>Подтверждение покупки</gradient>"
# Тип хранилища: YAML или SQLITE
storage-type: YAML
# Размер GUI (9, 18, 27, 36, 45, 54)
size: 27
# Файл SQLite базы данных
sqlite-file: gradient-data.db
# Предметы в GUI
items:
confirm:
material: "GREEN_WOOL"
name: "<gradient:#6BCB77:#4ECDC4>✓ Подтвердить</gradient>"
lore:
- "<gray>Нажмите для подтверждения"
- "<gray>покупки градиента"
# Чёрный список префиксов (нельзя использовать)
prefix-blacklist:
- admin
- owner
- moder
- helper
- staff
- модер
- админ
- хелпер
cancel:
material: "RED_WOOL"
name: "<gradient:#FF6B6B:#FF4757>✗ Отменить</gradient>"
lore:
- "<gray>Нажмите для отмены"
- "<gray>покупки"
info:
material: "PAPER"
name: "<gradient:#FFA726:#FF9800>Информация</gradient>"
lore:
- "<gray>Цена: <yellow>{price} поинтов</yellow>"
- "<gray>Цвета: <white>{colors}</white>"
- ""
- "<gray>Ваш баланс: <yellow>{balance}</yellow>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ РАЗРЕШЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Автоматические разрешения для групп
permissions:
# Группы, которые получают бесплатные градиенты
free-groups:
- "vip"
- "premium"
- "admin"
# Группы, которые могут использовать любые цвета
unlimited-colors:
- "admin"
- "owner"

View file

@ -1,57 +1,156 @@
# LoChat Gradient Module Messages
# Сообщения модуля градиентных ников
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Gradient Messages ║
# ║ Сообщения градиентного модуля ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Общие
only-player: "&#04CADFЭта команда только для игроков!"
no-permission: "&#04CADFУ вас нет прав на это действие!"
player-not-found: "&#04CADFИгрок не найден!"
reload-success: "&#04CADFКонфигурация градиентов перезагружена!"
cooldown: "&#04CADFПодождите ещё {time} секунд!"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Цвета
color-help: |
&#04CADF=== Команда /color ===
&#04CADF/color <цвет1> [цвет2] ... &#808080— установить градиент
&#04CADF/color on &#808080— включить цвет
&#04CADF/color off &#808080— выключить цвет
&#04CADF/color reset &#808080— сбросить цвет
&#04CADF/color copy <игрок> &#808080— скопировать цвет
&#808080Пример: /color #FF0000 #00FF00 #0000FF
color-enabled: "&#04CADFЦвет ника включён!"
color-disabled: "&#04CADFЦвет ника выключен!"
color-reset: "&#04CADFЦвет ника сброшен!"
color-no-colors: "&#04CADFУ вас нет установленных цветов!"
color-success: "&#04CADFЦвет успешно установлен! Списано: {price} PP"
color-copy-usage: "&#04CADFИспользование: /color copy <игрок>"
color-copy-no-colors: "&#04CADFУ игрока {player} нет цветов!"
invalid-color: "&#04CADFНеверный формат цвета: {color}. Используйте #RRGGBB"
too-many-colors: "&#04CADFМаксимум {max} цветов!"
not-enough-colors: "&#04CADFМинимум {min} цветов!"
not-enough-points-color: "&#04CADFНедостаточно поинтов! Нужно: {price} PP"
# Префикс градиентного модуля
prefix: "<gradient:#9370DB:#8A2BE2>[Gradient]</gradient>"
# Префикс
prefix-help: |
&#04CADF=== Команда /prefix ===
&#04CADF/prefix <текст> &#808080— установить префикс
&#04CADF/prefix on &#808080— включить префикс
&#04CADF/prefix off &#808080— выключить префикс
&#04CADF/prefix reset &#808080— сбросить префикс
prefix-enabled: "&#04CADFПрефикс включён!"
prefix-disabled: "&#04CADFПрефикс выключен!"
prefix-reset-success: "&#04CADFПрефикс сброшен!"
prefix-no-prefix: "&#04CADFУ вас нет установленного префикса!"
prefix-success: "&#04CADFПрефикс успешно установлен! Списано: {price} PP"
prefix-success-free: "&#04CADFПрефикс успешно изменён!"
prefix-no-colors: "&#04CADFПрефикс не может содержать цветовые коды!"
prefix-invalid-chars: "&#04CADFПрефикс содержит недопустимые символы!"
prefix-blacklisted: "&#04CADFЭтот префикс запрещён!"
prefix-too-long: "&#04CADFПрефикс слишком длинный! Максимум: {max} символов"
not-enough-points-prefix: "&#04CADFНедостаточно поинтов! Нужно: {price} PP"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КОМАНДА /color │
# └─────────────────────────────────────────────────────────────────────────────┘
# Админ информация
info-header: "&#04CADF=== Информация об игроке {player} ==="
info-prefix: "&#808080Префикс: &f{prefix}"
info-prefix-enabled: "&#808080Префикс включён: &f{enabled}"
info-colors: "&#808080Цвета: &f{colors}"
info-color-enabled: "&#808080Цвет включён: &f{enabled}"
info-prefix-purchased: "&#808080Префикс куплен: &f{purchased}"
color:
# Успешные действия
set: "<gradient:#6BCB77:#4ECDC4>Градиент установлен!</gradient>"
enabled: "<gradient:#6BCB77:#4ECDC4>Градиентный ник включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Градиентный ник отключен</gradient>"
reset: "<gradient:#FFA726:#FF9800>Градиент сброшен</gradient>"
copied: "<gradient:#6BCB77:#4ECDC4>Градиент скопирован с игрока {player}</gradient>"
# Ошибки
invalid-hex: "<gradient:#FF6B6B:#FF4757>Неверный HEX цвет: {color}</gradient>"
too-many-colors: "<gradient:#FF6B6B:#FF4757>Слишком много цветов! Максимум: {max}</gradient>"
too-few-colors: "<gradient:#FF6B6B:#FF4757>Слишком мало цветов! Минимум: {min}</gradient>"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав на использование градиентов</gradient>"
cooldown: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед изменением цвета</gradient>"
not-enough-points: "<gradient:#FF6B6B:#FF4757>Недостаточно поинтов! Нужно: {price}, у вас: {balance}</gradient>"
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
no-gradient: "<gradient:#FFA726:#FF9800>У игрока нет градиента для копирования</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Команды градиента ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/color <hex1> [hex2] ...</gradient> <gray>- установить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color on/off</gradient> <gray>- включить/выключить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color reset</gradient> <gray>- сбросить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color copy <игрок></gradient> <gray>- скопировать градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color preset <название></gradient> <gray>- использовать предустановку</gray>"
- ""
- "<gradient:#FFA726:#FF9800>Предустановки:</gradient> <white>fire, ocean, forest, sunset, rainbow, ice, gold, purple, pink, green</white>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КОМАНДА /prefix │
# └─────────────────────────────────────────────────────────────────────────────┘
prefix:
# Успешные действия
set: "<gradient:#6BCB77:#4ECDC4>Префикс установлен!</gradient>"
enabled: "<gradient:#6BCB77:#4ECDC4>Префикс включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Префикс отключен</gradient>"
reset: "<gradient:#FFA726:#FF9800>Префикс сброшен</gradient>"
# Ошибки
too-long: "<gradient:#FF6B6B:#FF4757>Префикс слишком длинный! Максимум: {max} символов</gradient>"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав на использование префиксов</gradient>"
cooldown: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед изменением префикса</gradient>"
not-enough-points: "<gradient:#FF6B6B:#FF4757>Недостаточно поинтов! Нужно: {price}, у вас: {balance}</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Команды префикса ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/prefix <текст></gradient> <gray>- установить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/prefix on/off</gradient> <gray>- включить/выключить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/prefix reset</gradient> <gray>- сбросить префикс</gray>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АДМИНСКИЕ КОМАНДЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
admin:
# Успешные действия
reloaded: "<gradient:#6BCB77:#4ECDC4>Конфигурация градиентов перезагружена</gradient>"
color-set: "<gradient:#6BCB77:#4ECDC4>Градиент установлен игроку {player}</gradient>"
prefix-set: "<gradient:#6BCB77:#4ECDC4>Префикс установлен игроку {player}</gradient>"
color-enabled: "<gradient:#6BCB77:#4ECDC4>Градиент включен для {player}</gradient>"
color-disabled: "<gradient:#FF6B6B:#FF4757>Градиент отключен для {player}</gradient>"
prefix-enabled: "<gradient:#6BCB77:#4ECDC4>Префикс включен для {player}</gradient>"
prefix-disabled: "<gradient:#FF6B6B:#FF4757>Префикс отключен для {player}</gradient>"
color-reset: "<gradient:#FFA726:#FF9800>Градиент сброшен для {player}</gradient>"
prefix-reset: "<gradient:#FFA726:#FF9800>Префикс сброшен для {player}</gradient>"
updated-all: "<gradient:#6BCB77:#4ECDC4>Обновлены все игроки ({count})</gradient>"
# Информация об игроке
info:
- "<gradient:#FFD700:#FFA500>═══════ Информация о {player} ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>Градиент:</gradient> <white>{gradient_status}</white>"
- "<gradient:#87CEEB:#4682B4>Цвета:</gradient> <white>{colors}</white>"
- "<gradient:#87CEEB:#4682B4>Префикс:</gradient> <white>{prefix_status}</white>"
- "<gradient:#87CEEB:#4682B4>Текст префикса:</gradient> <white>{prefix_text}</white>"
- "<gradient:#87CEEB:#4682B4>Отображаемое имя:</gradient> {display_name}"
# Ошибки
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
invalid-hex: "<gradient:#FF6B6B:#FF4757>Неверный HEX цвет: {color}</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Админские команды ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/aprefix reload</gradient> <gray>- перезагрузить конфиг</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix info <игрок></gradient> <gray>- информация об игроке</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix setcolor <игрок> <цвета></gradient> <gray>- установить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix setprefix <игрок> <текст></gradient> <gray>- установить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix coloron/coloroff <игрок></gradient> <gray>- вкл/выкл градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix prefixon/prefixoff <игрок></gradient> <gray>- вкл/выкл префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix resetcolor <игрок></gradient> <gray>- сбросить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix resetprefix <игрок></gradient> <gray>- сбросить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix updateall</gradient> <gray>- обновить всех игроков</gray>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ GUI СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
gui:
# Заголовки
confirm-title: "<gradient:#FFD700:#FFA500>Подтверждение покупки</gradient>"
# Кнопки
confirm-button: "<gradient:#6BCB77:#4ECDC4>✓ Подтвердить покупку</gradient>"
cancel-button: "<gradient:#FF6B6B:#FF4757>✗ Отменить</gradient>"
# Описания
confirm-lore:
- "<gray>Цена: <yellow>{price} поинтов</yellow>"
- "<gray>Цвета: <white>{colors}</white>"
- ""
- "<gray>Ваш баланс: <yellow>{balance}</yellow>"
- ""
- "<gradient:#6BCB77:#4ECDC4>Нажмите для подтверждения</gradient>"
cancel-lore:
- "<gradient:#FF6B6B:#FF4757>Нажмите для отмены</gradient>"
# Результаты
purchase-success: "<gradient:#6BCB77:#4ECDC4>Градиент успешно куплен!</gradient>"
purchase-cancelled: "<gradient:#FFA726:#FF9800>Покупка отменена</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЩИЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
general:
# Статусы
enabled: "<gradient:#6BCB77:#4ECDC4>Включено</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Отключено</gradient>"
none: "<gray>Нет</gray>"
# Единицы времени
seconds: "сек"
minutes: "мин"
hours: "ч"
days: "д"

View file

@ -1,70 +1,133 @@
prefix: "&#04CADF[LoChat]"
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Messages ║
# ║ Сообщения плагина LoChat ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Префикс плагина
prefix: "<gradient:#00D4FF:#0099CC>[LoChat]</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГЛОБАЛЬНЫЙ ЧАТ │
# └─────────────────────────────────────────────────────────────────────────────┘
global:
disabled: "&#04CADFГлобальный чат отключен"
toggled-on: "&#04CADFГлобальный чат включен"
toggled-off: "&#04CADFГлобальный чат отключен"
disabled: "<gradient:#FF6B6B:#FF4757>Глобальный чат отключен</gradient>"
toggled-on: "<gradient:#6BCB77:#4ECDC4>Глобальный чат включен</gradient>"
toggled-off: "<gradient:#FF6B6B:#FF4757>Глобальный чат отключен</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЛОКАЛЬНЫЙ ЧАТ │
# └─────────────────────────────────────────────────────────────────────────────┘
local:
no-players: "&#04CADFРядом нет игроков"
no-players: "<gradient:#FFA726:#FF9800>Рядом нет игроков</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЛИЧНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
pm:
# Форматы личных сообщений
# {sender} - ник отправителя, {receiver} - ник получателя
# {sender_display} - отправитель с градиентом, {receiver_display} - получатель с градиентом
# {message} - текст сообщения
format-sent: "&#808080[PM] Ты → {receiver_display}&#808080: {message}"
format-received: "&#808080[PM] {sender_display}&#808080 → Ты: {message}"
format-sent: "<gray>[PM]</gray> <gradient:#87CEEB:#4682B4>Ты</gradient> <gray>→</gray> {receiver_display}<gray>:</gray> {message}"
format-received: "<gray>[PM]</gray> {sender_display} <gray>→</gray> <gradient:#87CEEB:#4682B4>Ты</gradient><gray>:</gray> {message}"
# Использовать градиентные ники в PM
use-gradient-names: true
# Старые форматы (для совместимости)
sent: "&#808080[PM] Ты → {player}: {message}"
received: "&#808080[PM] {player} → Ты: {message}"
no-reply: "&#04CADFНекому ответить"
ignored: "&#04CADFЭтот игрок вас игнорирует"
player-offline: "&#04CADFИгрок не в сети"
self: "&#04CADFНельзя писать самому себе"
sent: "<gray>[PM]</gray> <gradient:#87CEEB:#4682B4>Ты</gradient> <gray>→</gray> <white>{player}</white><gray>:</gray> {message}"
received: "<gray>[PM]</gray> <white>{player}</white> <gray>→</gray> <gradient:#87CEEB:#4682B4>Ты</gradient><gray>:</gray> {message}"
# Ошибки PM
no-reply: "<gradient:#FF6B6B:#FF4757>Некому ответить</gradient>"
ignored: "<gradient:#FF6B6B:#FF4757>Этот игрок вас игнорирует</gradient>"
player-offline: "<gradient:#FF6B6B:#FF4757>Игрок не в сети</gradient>"
self: "<gradient:#FF6B6B:#FF4757>Нельзя писать самому себе</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИГНОРИРОВАНИЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
ignore:
added: "&#04CADFИгрок {player} добавлен в игнор"
removed: "&#04CADFИгрок {player} убран из игнора"
already-ignored: "&#04CADFИгрок уже в игноре"
not-ignored: "&#04CADFИгрок не в игноре"
self: "&#04CADFНельзя игнорировать себя"
added: "<gradient:#6BCB77:#4ECDC4>Игрок {player} добавлен в игнор</gradient>"
removed: "<gradient:#6BCB77:#4ECDC4>Игрок {player} убран из игнора</gradient>"
already-ignored: "<gradient:#FFA726:#FF9800>Игрок уже в игноре</gradient>"
not-ignored: "<gradient:#FFA726:#FF9800>Игрок не в игноре</gradient>"
self: "<gradient:#FF6B6B:#FF4757>Нельзя игнорировать себя</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЪЯВЛЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
announce:
reloaded: "&#04CADFКонфигурация перезагружена"
reloaded: "<gradient:#6BCB77:#4ECDC4>Конфигурация перезагружена</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ШПИОН РЕЖИМ │
# └─────────────────────────────────────────────────────────────────────────────┘
spy:
enabled: "&#04CADFШпион режим включен"
disabled: "&#04CADFШпион режим выключен"
format: "&#808080[SPY] {sender} → {receiver}: {message}"
chat-format: "&#808080[SPY] {type} {sender}: {message}"
enabled: "<gradient:#6BCB77:#4ECDC4>Шпион режим включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Шпион режим выключен</gradient>"
format: "<gray>[SPY]</gray> <gradient:#FFD700:#FFA500>{sender}</gradient> <gray>→</gray> <gradient:#87CEEB:#4682B4>{receiver}</gradient><gray>:</gray> <white>{message}</white>"
chat-format: "<gray>[SPY]</gray> <gradient:#FFA726:#FF9800>{type}</gradient> <gradient:#00FF88:#00CC66>{sender}</gradient><gray>:</gray> <white>{message}</white>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ФИЛЬТР МАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
filter:
blocked: "&#04CADFСообщение заблокировано (мат)"
warning: "&#04CADFПредупреждение: не используйте мат!"
blocked: "<gradient:#FF6B6B:#FF4757>Сообщение заблокировано (недопустимые слова)</gradient>"
warning: "<gradient:#FFA726:#FF9800>Предупреждение: не используйте недопустимые слова!</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КУЛДАУНЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
cooldown:
wait: "&#04CADFПодождите {time} сек перед следующим сообщением"
wait: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед следующим сообщением</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АНТИ-СПАМ │
# └─────────────────────────────────────────────────────────────────────────────┘
antispam:
caps: "&#04CADFСлишком много заглавных букв!"
repeat: "&#04CADFНе повторяйте символы!"
similar: "&#04CADFНе отправляйте одинаковые сообщения!"
caps: "<gradient:#FF6B6B:#FF4757>Слишком много заглавных букв!</gradient>"
repeat: "<gradient:#FF6B6B:#FF4757>Не повторяйте символы!</gradient>"
similar: "<gradient:#FF6B6B:#FF4757>Не отправляйте одинаковые сообщения!</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОЧИСТКА ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
clearchat:
cleared: "&#04CADFЧат очищен администратором {player}"
cleared: "<gradient:#6BCB77:#4ECDC4>Чат очищен администратором {player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОШИБКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
errors:
no-permission: "&#04CADFНет прав!"
player-not-found: "&#04CADFИгрок не найден"
invalid-usage: "&#04CADFИспользование: {usage}"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав!</gradient>"
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
invalid-usage: "<gradient:#FFA726:#FF9800>Использование: {usage}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СИСТЕМА МУТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
mute:
muted: "&#04CADFИгрок {player} замучен на {time}"
unmuted: "&#04CADFИгрок {player} размучен"
already-muted: "&#04CADFИгрок уже замучен"
not-muted: "&#04CADFИгрок не замучен"
you-muted: "&#04CADFВы замучены! Осталось: {time}"
permanent: "&#04CADFВы замучены навсегда!"
muted: "<gradient:#6BCB77:#4ECDC4>Игрок {player} замучен на {time}</gradient>"
unmuted: "<gradient:#6BCB77:#4ECDC4>Игрок {player} размучен</gradient>"
already-muted: "<gradient:#FFA726:#FF9800>Игрок уже замучен</gradient>"
not-muted: "<gradient:#FFA726:#FF9800>Игрок не замучен</gradient>"
you-muted: "<gradient:#FF6B6B:#FF4757>Вы замучены! Осталось: {time}</gradient>"
permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда!</gradient>"

View file

@ -11,6 +11,7 @@ softdepend:
- PlayerPoints
- LuckPerms
- LibertyBans
- SkinsRestorer
commands:
g:
@ -73,6 +74,12 @@ commands:
permission: chat.clear
aliases: [cc, очиститьчат, сдуфксрфе, сс]
clearchatconfig:
description: Configure clear chat message
usage: /clearchatconfig <enable|disable|message|status> [text]
permission: lochat.clearchat.config
aliases: [ccc, настройкаочистки]
lochat:
description: LoChat admin command
usage: /lochat [reload]
@ -219,3 +226,9 @@ permissions:
lochat.mute.dur.perm:
description: Can mute permanently
default: op
lochat.clearchat.config:
description: Can configure clear chat message
default: op
lochat.heademoji.use:
description: Can use head emojis in chat
default: true

View file

@ -11,6 +11,7 @@ repositories {
maven { url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
maven { url = 'https://repo.rosewooddev.io/repository/public/' }
maven { url = 'https://jitpack.io' }
maven { url = 'https://nexus.skinsrestorer.net/repository/maven-public/' }
}
dependencies {

View file

@ -30,6 +30,8 @@ public final class LoChat extends JavaPlugin {
private GradientModule gradientModule;
private LibertyBansHook libertyBansHook;
private MuteManager muteManager;
private HeadEmojiManager headEmojiManager;
private com.loki.lochat.integrations.SkinsRestorerHook skinsRestorerHook;
@Override
public void onEnable() {
@ -52,6 +54,10 @@ public final class LoChat extends JavaPlugin {
chatManager = new ChatManager(this);
autoMessageManager = new AutoMessageManager(this);
// Инициализация интеграций
skinsRestorerHook = new com.loki.lochat.integrations.SkinsRestorerHook(this);
headEmojiManager = new com.loki.lochat.managers.HeadEmojiManager(this);
// Инициализация модуля градиентов (интегрированный LoPreff)
gradientModule = new GradientModule(this);
if (gradientModule.init()) {
@ -130,6 +136,14 @@ public final class LoChat extends JavaPlugin {
MuteBlameCommand muteBlameCommand = new MuteBlameCommand(this);
getCommand("lmuteblame").setExecutor(muteBlameCommand);
getCommand("lmuteblame").setTabCompleter(muteBlameCommand);
// Команда настройки очистки чата
ClearChatConfigCommand clearChatConfigCommand = new ClearChatConfigCommand(this);
getCommand("clearchatconfig").setExecutor(clearChatConfigCommand);
getCommand("clearchatconfig").setTabCompleter(clearChatConfigCommand);
// Внутренняя команда для информации об игроке
getCommand("lochat").setExecutor(new PlayerInfoCommand(this));
}
public void reload() {
@ -211,4 +225,12 @@ public final class LoChat extends JavaPlugin {
return muteManager;
}
public HeadEmojiManager getHeadEmojiManager() {
return headEmojiManager;
}
public com.loki.lochat.integrations.SkinsRestorerHook getSkinsRestorerHook() {
return skinsRestorerHook;
}
}

View file

@ -25,10 +25,11 @@ public class ClearChatCommand implements CommandExecutor {
player.sendMessage("");
}
// Уведомление
player.sendMessage(ChatFormatter.parse(
plugin.getMessageConfig().get("clearchat.cleared", "{player}", sender.getName())
));
// Уведомление (если включено)
if (plugin.getConfigManager().isClearChatMessageEnabled()) {
String message = plugin.getConfigManager().getClearChatMessage();
player.sendMessage(ChatFormatter.parse(message.replace("{player}", sender.getName())));
}
}
return true;

View file

@ -0,0 +1,89 @@
package com.loki.lochat.commands;
import com.loki.lochat.LoChat;
import com.loki.lochat.utils.ChatFormatter;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.List;
/**
* Команда для настройки сообщения очистки чата
* /clearchatconfig <enable|disable|message> [текст]
*/
public class ClearChatConfigCommand implements CommandExecutor, TabCompleter {
private final LoChat plugin;
public ClearChatConfigCommand(LoChat plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (!sender.hasPermission("lochat.clearchat.config")) {
sender.sendMessage(plugin.getMessageConfig().getComponent("errors.no-permission"));
return true;
}
if (args.length == 0) {
sender.sendMessage(ChatFormatter.parse("&6Использование:"));
sender.sendMessage(ChatFormatter.parse("&e/clearchatconfig enable &7- включить сообщение"));
sender.sendMessage(ChatFormatter.parse("&e/clearchatconfig disable &7- отключить сообщение"));
sender.sendMessage(ChatFormatter.parse("&e/clearchatconfig message <текст> &7- установить сообщение"));
sender.sendMessage(ChatFormatter.parse("&e/clearchatconfig status &7- показать статус"));
return true;
}
String action = args[0].toLowerCase();
switch (action) {
case "enable" -> {
plugin.getConfigManager().setClearChatMessageEnabled(true);
sender.sendMessage(ChatFormatter.parse("&aСообщение очистки чата включено"));
}
case "disable" -> {
plugin.getConfigManager().setClearChatMessageEnabled(false);
sender.sendMessage(ChatFormatter.parse("&cСообщение очистки чата отключено"));
}
case "message" -> {
if (args.length < 2) {
sender.sendMessage(ChatFormatter.parse("&cУкажите текст сообщения!"));
return true;
}
String message = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
plugin.getConfigManager().setClearChatMessage(message);
sender.sendMessage(ChatFormatter.parse("&aСообщение установлено: &f" + message));
}
case "status" -> {
boolean enabled = plugin.getConfigManager().isClearChatMessageEnabled();
String message = plugin.getConfigManager().getClearChatMessage();
sender.sendMessage(ChatFormatter.parse("&6Статус сообщения очистки чата:"));
sender.sendMessage(ChatFormatter.parse("&eВключено: " + (enabled ? "&aДа" : "&cНет")));
sender.sendMessage(ChatFormatter.parse("&eСообщение: &f" + message));
}
default -> {
sender.sendMessage(ChatFormatter.parse("&cНеизвестная команда! Используйте: enable, disable, message, status"));
}
}
return true;
}
@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
if (args.length == 1) {
return Arrays.asList("enable", "disable", "message", "status").stream()
.filter(s -> s.toLowerCase().startsWith(args[0].toLowerCase()))
.toList();
}
return null;
}
}

View file

@ -0,0 +1,53 @@
package com.loki.lochat.commands;
import com.loki.lochat.LoChat;
import com.loki.lochat.utils.ChatFormatter;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
/**
* Команда для показа информации об игроке (используется при клике на голову)
*/
public class PlayerInfoCommand implements CommandExecutor {
private final LoChat plugin;
public PlayerInfoCommand(LoChat plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (args.length < 2 || !args[0].equals("playerinfo")) {
return false;
}
String targetName = args[1];
Player target = Bukkit.getPlayer(targetName);
if (target == null || !target.isOnline()) {
sender.sendMessage(ChatFormatter.parse("§cИгрок не найден или не в сети"));
return true;
}
// Показываем информацию об игроке
sender.sendMessage(ChatFormatter.parse("§6=== Информация об игроке ==="));
sender.sendMessage(ChatFormatter.parse("§eИмя: §f" + target.getName()));
sender.sendMessage(ChatFormatter.parse("§eОтображаемое имя: §f" + target.getDisplayName()));
sender.sendMessage(ChatFormatter.parse("§eУровень: §f" + target.getLevel()));
sender.sendMessage(ChatFormatter.parse("§eЗдоровье: §f" + Math.round(target.getHealth()) + "/20"));
sender.sendMessage(ChatFormatter.parse("§eМир: §f" + target.getWorld().getName()));
// Если есть градиентный модуль, показываем градиентное имя
if (plugin.getGradientModule() != null) {
String gradientName = plugin.getGradientModule().getFormattedName(target);
sender.sendMessage(ChatFormatter.parse("§eГрадиентное имя: " + gradientName));
}
return true;
}
}

View file

@ -80,6 +80,17 @@ public class ConfigManager {
config.set("automessages.random", false);
}
if (!config.contains("clearchat.message.enabled")) {
config.set("clearchat.message.enabled", true);
config.set("clearchat.message.text", "&#04CADFЧат очищен администратором {player}");
}
if (!config.contains("head-emoji.enabled")) {
config.set("head-emoji.enabled", true);
config.set("head-emoji.allow-player-heads", true);
config.set("head-emoji.max-heads-per-message", 3);
}
if (!config.contains("lopreff.enabled")) {
config.set("lopreff.enabled", true);
config.set("lopreff.use-gradient-name", true);
@ -224,6 +235,25 @@ public class ConfigManager {
return config.getString("filter.replacement", "***");
}
// Clear chat
public boolean isClearChatMessageEnabled() {
return config.getBoolean("clearchat.message.enabled", true);
}
public void setClearChatMessageEnabled(boolean enabled) {
config.set("clearchat.message.enabled", enabled);
plugin.saveConfig();
}
public String getClearChatMessage() {
return config.getString("clearchat.message.text", "&#04CADFЧат очищен администратором {player}");
}
public void setClearChatMessage(String message) {
config.set("clearchat.message.text", message);
plugin.saveConfig();
}
// Anti-spam
public boolean isAntiSpamEnabled() {
return config.getBoolean("antispam.enabled", true);

View file

@ -0,0 +1,82 @@
package com.loki.lochat.integrations;
import com.loki.lochat.LoChat;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import java.lang.reflect.Method;
/**
* Интеграция с SkinsRestorer для получения скинов игроков
* Использует рефлексию для совместимости без прямой зависимости
*/
public class SkinsRestorerHook {
private final LoChat plugin;
private Object skinsAPI;
private Method getSkinDataMethod;
private boolean enabled = false;
public SkinsRestorerHook(LoChat plugin) {
this.plugin = plugin;
init();
}
private void init() {
try {
Plugin skinsPlugin = Bukkit.getPluginManager().getPlugin("SkinsRestorer");
if (skinsPlugin == null || !skinsPlugin.isEnabled()) {
plugin.getLogger().info("SkinsRestorer не найден");
return;
}
// Пытаемся получить API через рефлексию
Class<?> apiClass = Class.forName("net.skinsrestorer.api.SkinsRestorerAPI");
Method getApiMethod = apiClass.getMethod("getApi");
skinsAPI = getApiMethod.invoke(null);
getSkinDataMethod = skinsAPI.getClass().getMethod("getSkinData", String.class);
enabled = true;
plugin.getLogger().info("SkinsRestorer подключен!");
} catch (Exception e) {
plugin.getLogger().info("SkinsRestorer не найден или несовместимая версия");
enabled = false;
}
}
public boolean isEnabled() {
return enabled;
}
/**
* Получает текстуру скина игрока
* @param player игрок
* @return URL текстуры или null
*/
public String getPlayerSkinTexture(Player player) {
if (!enabled) return null;
try {
Object property = getSkinDataMethod.invoke(skinsAPI, player.getName());
if (property != null) {
Method getValueMethod = property.getClass().getMethod("getValue");
return (String) getValueMethod.invoke(property);
}
} catch (Exception e) {
// Игнорируем ошибки получения скина
}
return null;
}
/**
* Получает URL головы игрока для отображения
* @param playerName имя игрока
* @return URL головы
*/
public String getPlayerHeadUrl(String playerName) {
// Используем стандартные сервисы для получения голов
return "https://minotar.net/helm/" + playerName + "/8.png";
}
}

View file

@ -98,6 +98,13 @@ public class ChatListener implements Listener {
// ===== SPY =====
plugin.getSpyManager().sendToSpies(player, processedMessage, isGlobal);
// ===== HEAD EMOJI =====
// Обрабатываем головы игроков, если функция включена
if (plugin.getHeadEmojiManager().isHeadEmojiEnabled() &&
plugin.getHeadEmojiManager().canUseHeadEmoji(player)) {
processedMessage = plugin.getHeadEmojiManager().processHeads(processedMessage, player);
}
// ===== SEND =====
if (isGlobal) {
plugin.getChatManager().sendGlobalMessage(player, processedMessage);

View file

@ -0,0 +1,193 @@
package com.loki.lochat.managers;
import com.loki.lochat.LoChat;
import com.loki.lochat.integrations.SkinsRestorerHook;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.event.HoverEvent;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* Менеджер для обработки голов игроков в чате
* Поддерживает рисование головы из смайликов и отправку голов игроков
*/
public class HeadEmojiManager {
private final LoChat plugin;
private final SkinsRestorerHook skinsHook;
// Паттерны для поиска голов игроков
private static final Pattern HEAD_PATTERN = Pattern.compile(":head_([a-zA-Z0-9_]{3,16}):");
private static final Pattern PLAYER_HEAD_PATTERN = Pattern.compile("@head\\s+([a-zA-Z0-9_]{3,16})");
// ASCII арт для головы игрока (8x8 пикселей)
private static final String[] HEAD_TEMPLATE = {
"████████",
"██░░░░██",
"██░██░██",
"██░░░░██",
"██░██░██",
"██░░░░██",
"██████████",
"████████"
};
public HeadEmojiManager(LoChat plugin) {
this.plugin = plugin;
this.skinsHook = new SkinsRestorerHook(plugin);
}
/**
* Обрабатывает сообщение и заменяет головы игроков
*/
public Component processHeads(Component message, Player sender) {
String plainText = net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer.plainText().serialize(message);
// Обрабатываем :head_nickname:
plainText = processHeadEmojis(plainText);
// Обрабатываем @head nickname
plainText = processPlayerHeadCommands(plainText, sender);
return net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(plainText);
}
/**
* Обрабатывает :head_nickname: паттерны
*/
private String processHeadEmojis(String message) {
Matcher matcher = HEAD_PATTERN.matcher(message);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
String playerName = matcher.group(1);
Player target = Bukkit.getPlayer(playerName);
if (target != null && target.isOnline()) {
String headEmoji = generateHeadEmoji(target);
matcher.appendReplacement(result, headEmoji);
} else {
// Если игрок не найден, оставляем как есть
matcher.appendReplacement(result, matcher.group(0));
}
}
matcher.appendTail(result);
return result.toString();
}
/**
* Обрабатывает @head nickname команды
*/
private String processPlayerHeadCommands(String message, Player sender) {
Matcher matcher = PLAYER_HEAD_PATTERN.matcher(message);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
String playerName = matcher.group(1);
Player target = Bukkit.getPlayer(playerName);
if (target != null && target.isOnline()) {
String headDisplay = createClickableHead(target, sender);
matcher.appendReplacement(result, headDisplay);
} else {
// Если игрок не найден, показываем ошибку
matcher.appendReplacement(result, "§c[Игрок " + playerName + " не найден]");
}
}
matcher.appendTail(result);
return result.toString();
}
/**
* Генерирует ASCII арт головы игрока
*/
private String generateHeadEmoji(Player player) {
// Получаем доминирующий цвет скина (упрощенная версия)
String skinColor = getSkinColor(player);
String hairColor = getHairColor(player);
StringBuilder head = new StringBuilder();
head.append("§8[§r"); // Начало рамки
// Генерируем упрощенную голову 3x3
head.append(hairColor).append("███§r");
head.append(skinColor).append("█").append("§0█").append(skinColor).append("█§r"); // Глаза
head.append(skinColor).append("███§r");
head.append("§8]§r"); // Конец рамки
return head.toString();
}
/**
* Создает кликабельную голову игрока
*/
private String createClickableHead(Player target, Player sender) {
String headUrl = skinsHook.getPlayerHeadUrl(target.getName());
// Создаем компонент с hover и click событиями
return "§6[§e" + target.getName() + " Head§6]§r";
}
/**
* Получает цвет скина игрока (упрощенная версия)
*/
private String getSkinColor(Player player) {
// В реальной реализации здесь был бы анализ текстуры скина
// Для демонстрации используем случайные цвета
String[] skinColors = {"§f", "§7", "§6", "§c", "§e"};
return skinColors[player.getName().hashCode() % skinColors.length];
}
/**
* Получает цвет волос игрока (упрощенная версия)
*/
private String getHairColor(Player player) {
// В реальной реализации здесь был бы анализ текстуры скина
String[] hairColors = {"§0", "§8", "§6", "§c", "§e", "§a"};
return hairColors[(player.getName().hashCode() + 1) % hairColors.length];
}
/**
* Создает Component с hover эффектом для головы игрока
*/
public Component createHeadComponent(Player target) {
String headUrl = skinsHook.getPlayerHeadUrl(target.getName());
Component headText = Component.text("[" + target.getName() + " Head]")
.color(NamedTextColor.GOLD)
.hoverEvent(HoverEvent.showText(
Component.text("Голова игрока: " + target.getName())
.color(NamedTextColor.YELLOW)
.append(Component.newline())
.append(Component.text("Нажмите, чтобы получить информацию")
.color(NamedTextColor.GRAY))
))
.clickEvent(ClickEvent.runCommand("/lochat playerinfo " + target.getName()));
return headText;
}
/**
* Проверяет, включена ли функция голов игроков
*/
public boolean isHeadEmojiEnabled() {
return plugin.getConfigManager().getBoolean("head-emoji.enabled", true);
}
/**
* Проверяет, может ли игрок использовать головы
*/
public boolean canUseHeadEmoji(Player player) {
return player.hasPermission("lochat.heademoji.use");
}
}

View file

@ -1,74 +1,90 @@
# LoChat - Автосообщения
# Автор: loki
#
# Смайлики настраиваются в emojis.yml
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Auto Messages ║
# ║ Автосообщения чата ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# НАСТРОЙКИ
# ═══════════════════════════════════════════
settings:
enabled: true
interval: 300 # Интервал между сообщениями (секунды)
prefix: "&6[&eINFO&6]&r"
# Префикс автосообщений
prefix: "<gradient:#00D4FF:#0099CC>[INFO]</gradient>"
# Режим отправки:
# - "sequential" — по порядку (1, 2, 3...)
# - "random" — случайный порядок
# - "custom" — свой порядок (указать в order)
# Режим отправки: sequential (по порядку), random (случайно), custom (свой порядок)
mode: "sequential"
# Свой порядок (для mode: custom)
# Можно указывать названия или номера
# Пример: "welcome, rules, 3, donate, tips"
order: "welcome, motd, rules, donate, tips, discord"
# Свой порядок сообщений (только для режима custom)
# Можно указывать номера или названия сообщений
order: "welcome, rules, discord, website"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# СООБЩЕНИЯ
# ═══════════════════════════════════════════
messages:
# Приветствие (однострочное)
welcome: "&aДобро пожаловать на сервер! &e:star:"
# Приветственное сообщение
welcome:
- "<gradient:#FFD700:#FFA500>Добро пожаловать на наш сервер!</gradient>"
- "<gray>Используйте</gray> <gradient:#87CEEB:#4682B4>/help</gradient> <gray>для получения помощи</gray>"
# MOTD (многострочное)
motd:
- "&6╔══════════════════════════════════╗"
- "&6║ &e:star: &fДобро пожаловать! &e:star: &6║"
- "&6║ &7Онлайн: &a%online% &7игроков &6║"
- "&6║ &7Сайт: &bexample.com &6║"
- "&6╚══════════════════════════════════╝"
# Правила
# Правила сервера
rules:
- "&c&l:warning: ПРАВИЛА СЕРВЕРА :warning:"
- "&71. &fНе гриферить"
- "&72. &fНе читерить"
- "&73. &fУважать игроков"
- "&aПолные правила: &e/rules"
- "<gradient:#FF6B6B:#FF4757>Соблюдайте правила сервера!</gradient>"
- "<gray>Подробнее:</gray> <gradient:#87CEEB:#4682B4>/rules</gradient>"
# Донат
# Информация о Discord
discord:
- "<gradient:#7289DA:#5865F2>Присоединяйтесь к нашему Discord!</gradient>"
- "<gray>Ссылка:</gray> <click:open_url:'https://discord.gg/example'><gradient:#87CEEB:#4682B4>discord.gg/example</gradient></click>"
# Веб-сайт
website:
- "<gradient:#00FF88:#00CC66>Посетите наш сайт!</gradient>"
- "<gray>Адрес:</gray> <click:open_url:'https://example.com'><gradient:#87CEEB:#4682B4>example.com</gradient></click>"
# Донат информация
donate:
- "#FFD700&l:gem: ДОНАТ :gem:"
- "&7Поддержи сервер и получи"
- "&7крутые привилегии!"
- "&eПодробнее: &a/donate"
- "<gradient:#FFD700:#FFA500>Поддержите сервер!</gradient>"
- "<gray>Донат:</gray> <click:open_url:'https://donate.example.com'><gradient:#87CEEB:#4682B4>donate.example.com</gradient></click>"
# Советы
tips:
- "&b:zap: &fСовет дня:"
- "&7Используй &e/sethome &7чтобы"
- "&7сохранить свою локацию!"
# Градиентные ники
gradients:
- "<gradient:#9370DB:#8A2BE2>Создайте красивый ник!</gradient>"
- "<gray>Команда:</gray> <gradient:#87CEEB:#4682B4>/color</gradient> <gray>для градиентов</gray>"
# Discord
discord: "&9:game: &fНаш Discord: &bdiscord.gg/example"
# Чат команды
chat-commands:
- "<gradient:#FFA726:#FF9800>Полезные команды чата:</gradient>"
- "<gradient:#87CEEB:#4682B4>/msg <игрок> <сообщение></gradient> <gray>- личное сообщение</gray>"
- "<gradient:#87CEEB:#4682B4>/ignore <игрок></gradient> <gray>- игнорировать игрока</gray>"
# Голосование
vote: "&a:thumbsup: &fГолосуй за сервер: &e/vote &7и получи награды!"
# Онлайн статистика
online-stats:
- "<gradient:#6BCB77:#4ECDC4>Сейчас онлайн: {online} игроков</gradient>"
- "<gray>Максимум за день:</gray> <white>{max_online}</white>"
# Градиентное сообщение
gradient:
- "<gradient:#FF6B6B:#4ECDC4>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
- ""
- " &f:fire: &eСпециальное событие!"
- " &7Двойной опыт до конца недели!"
- ""
- "<gradient:#4ECDC4:#FF6B6B>━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━</gradient>"
# Время на сервере
server-time:
- "<gradient:#87CEEB:#4682B4>Время на сервере:</gradient> <white>{time}</white>"
- "<gray>Дата:</gray> <white>{date}</white>"
# События
events:
- "<gradient:#FF69B4:#FF1493>Следите за событиями!</gradient>"
- "<gray>Расписание:</gray> <gradient:#87CEEB:#4682B4>/events</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПЛЕЙСХОЛДЕРЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Доступные плейсхолдеры в сообщениях:
# {online} - количество игроков онлайн
# {max_online} - максимальное количество игроков (из server.properties)
# {time} - текущее время
# {date} - текущая дата
# {server_name} - название сервера
# {tps} - TPS сервера (если доступно)
#
# Также поддерживаются все плейсхолдеры PlaceholderAPI

View file

@ -1,33 +1,75 @@
# LoChat Configuration
# Author: loki
# Config Version: 2
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Configuration ║
# ║ Продвинутый чат-плагин для Paper ║
# ║ Версия: 1.5.5-1.20.1 ║
# ║ Автор: loki ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
config-version: 2
config-version: 3
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Префикс плагина в сообщениях
prefix: "<gradient:#00D4FF:#0099CC>[LoChat]</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
chat:
# ═══════════════════════════════════════════════════════════════════════════
# ГЛОБАЛЬНЫЙ ЧАТ
# ═══════════════════════════════════════════════════════════════════════════
global:
# Включить глобальный чат
enabled: true
prefix: "[G]"
format: "<prefix><player>: <message>"
# Символ для отправки в глобальный чат
symbol: "!"
# Кулдаун между сообщениями (секунды)
cooldown: 3
# Префикс глобального чата
prefix: "<gradient:#FFD700:#FFA500>[G]</gradient>"
# Формат сообщения: {prefix} {player} {message}
format: "{prefix} <gradient:#00FF88:#00CC66>{player}</gradient><dark_gray>:</dark_gray> {message}"
# ═══════════════════════════════════════════════════════════════════════════
# ЛОКАЛЬНЫЙ ЧАТ
# ═══════════════════════════════════════════════════════════════════════════
local:
# Включить локальный чат
enabled: true
# Радиус локального чата (блоки)
radius: 100
prefix: "[L]"
format: "<player>: <message>"
# Кулдаун между сообщениями (секунды)
cooldown: 1
# Префикс локального чата
prefix: "<gradient:#87CEEB:#4682B4>[L]</gradient>"
# Формат сообщения
format: "{prefix} <gradient:#00FF88:#00CC66>{player}</gradient><dark_gray>:</dark_gray> {message}"
# ═══════════════════════════════════════════════════════════════════════════
# ЛИЧНЫЕ СООБЩЕНИЯ
# ═══════════════════════════════════════════════════════════════════════════
pm:
# Включить личные сообщения
enabled: true
# Кулдаун между PM (секунды)
cooldown: 2
# Логировать PM в консоль
log: false
# Звук при получении PM
sound: true
sound-type: "ENTITY_EXPERIENCE_ORB_PICKUP"
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Интеграция с GradientNick (LoPreff)
# Использует PlaceholderAPI плейсхолдеры
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГРАДИЕНТНЫЕ НИКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Интеграция с градиентным модулем (встроенный LoPreff)
lopreff:
# Включить градиентные ники
enabled: true
# Использовать градиентный ник в чате
use-gradient-name: true
@ -41,22 +83,45 @@ display:
# Обновлять tab list
update-tab-list: true
# Упоминания @ник
mentions:
enabled: true
sound: true
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Выделение при @ник
highlight: "&#04CADF@{player}"
# Выделение когда твой ник написали (без @)
self-highlight: "&#04CADF{player}"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ УПОМИНАНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Фильтр мата
filter:
mentions:
# Включить систему упоминаний (@nickname)
enabled: true
# Воспроизводить звук при упоминании
sound: true
# Тип звука
sound-type: "BLOCK_NOTE_BLOCK_PLING"
# Подсветка упоминания в чате
highlight: "<gradient:#FFFF00:#FFD700>@{player}</gradient>"
# Подсветка собственного ника
self-highlight: "<gradient:#FFD700:#FFA500>{player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ФИЛЬТР МАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
filter:
# Включить фильтр мата
enabled: true
# Список запрещенных слов (простая проверка)
words:
- "хуй"
- "пизд"
- "блять"
- "ебать"
- "сука"
- "мудак"
- "гандон"
- "пидор"
- "говно"
- "шлюха"
# Регулярные выражения для обнаружения мата с обходами
patterns:
# Основные корни с вариациями
- "х\\s*у\\s*[йяёе]" # хуй, хуя, хуё, хуе
- "[хx]\\s*у\\s*[йяёе]" # латиница: xuй
- "п\\s*[иi]\\s*з\\s*д" # пизд, пiзд
@ -65,154 +130,113 @@ filter:
- "б\\s*л\\s*я\\s*[тдь]" # блять, блядь
- "с\\s*у\\s*к\\s*[аи]" # сука, суки
- "м\\s*у\\s*д\\s*[аи]" # муда, муди
- "г\\s*а\\s*н\\s*д\\s*о\\s*н" # гандон
- "д\\s*р\\s*о\\s*ч" # дрочить
- "с\\s*с\\s*а\\s*т\\s*ь" # ссать
- "с\\s*р\\s*а\\s*т\\s*ь" # срать
- "ш\\s*м\\s*а\\s*р\\s*[аи]" # шмара
- "ч\\s*м\\s*[оы]" # чмо, чмы
- "г\\s*н\\s*и\\s*д\\s*[аы]" # гнида
# Простые слова (для быстрой проверки)
words:
# Основные
- "хуй"
- "хуя"
- "хуё"
- "хуе"
- "хуёк"
- "хуёчек"
- "хуесос"
- "хуеплёт"
- "пизда"
- "пизде"
- "пизду"
- "пиздец"
- "пиздюк"
- "пиздюшка"
- "пиздануть"
- "спиздить"
- "пиздоглазый"
- "ебать"
- "ебал"
- "ебут"
- "ебись"
- "ебитесь"
- "ебашить"
- "уёбывать"
- "заёбывать"
- "ебашка"
- "ебанарот"
- "блять"
- "блядь"
- "блядина"
- "сука"
- "суки"
- "сучка"
- "мудак"
- "мудила"
- "мудачок"
- "гандон"
- "гандоник"
- "пидор"
- "пидорас"
- "дрочить"
- "дрочка"
- "онанист"
- "ссать"
- "срать"
- "говно"
- "говнюк"
- "шмара"
- "шлюха"
- "проститутка"
- "чмо"
- "чмошник"
- "чмырь"
- "гнида"
- "тварь"
- "падла"
- "сволочь"
- "охуеть"
- "ахуеть"
- "нихуя"
- "кончепизд"
# Обходы с символами
- "х*й"
- "п@зда"
- "б#ять"
- "хуй"
- "ebat"
- "pidar"
- "mudak"
action: "censor" # censor/block/warn
# Действие при обнаружении мата: censor, block, warn
action: "censor"
# Замена для цензуры
replacement: "***"
# Анти-спам
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АНТИ-СПАМ │
# └─────────────────────────────────────────────────────────────────────────────┘
antispam:
# Включить анти-спам
enabled: true
# Максимальный процент заглавных букв
max-caps-percent: 70
# Максимальное количество повторяющихся символов
max-repeat-chars: 5
# Задержка для проверки похожих сообщений (секунды)
similar-message-delay: 30
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АВТОСООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
automessages:
# Включить автосообщения
enabled: true
# Интервал между сообщениями (секунды)
interval: 300
# Случайный порядок сообщений
random: false
formats:
announcement: "&#04CADF[ОБЪЯВЛЕНИЕ] <message>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЪЯВЛЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Настройки объявлений
announcements:
# Показывать title при объявлении
show-title: true
# Заголовок title
title-header: "&#04CADFОБЪЯВЛЕНИЕ"
title-header: "<gradient:#FF6B6B:#FF4757>ОБЪЯВЛЕНИЕ</gradient>"
# Показывать actionbar при объявлении
show-actionbar: true
# Время показа title (в секундах)
title-duration: 3
# ========================================
# Система мутов
# ========================================
# Формат объявления
formats:
announcement: "<gradient:#FF6B6B:#FF4757>[ОБЪЯВЛЕНИЕ]</gradient> <message>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОЧИСТКА ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
clearchat:
message:
# Показывать сообщение после очистки чата
enabled: true
# Текст сообщения ({player} - имя администратора)
text: "<gradient:#FF6B6B:#FF4757>Чат очищен администратором {player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГОЛОВЫ ИГРОКОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
head-emoji:
# Включить функцию голов игроков
enabled: true
# Разрешить использование @head команд
allow-player-heads: true
# Максимальное количество голов в одном сообщении
max-heads-per-message: 3
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СИСТЕМА МУТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
mute:
# Сообщения с плейсхолдерами:
# %duration% - время мута
# %reason% - причина
# %player% - замученный игрок
# %operator% - модератор (чистый ник без префикса и цвета)
# %operator% - модератор
messages:
# Сообщение при муте (broadcast)
muted: "&#FF6B6B%player% &#808080был замучен на &#FF6B6B%duration% &#808080модератором &#FF6B6B%operator%&#808080. Причина: &#FF6B6B%reason%"
muted: "<gradient:#FF6B6B:#FF4757>%player%</gradient> <gray>был замучен на</gray> <gradient:#FF6B6B:#FF4757>%duration%</gradient> <gray>модератором</gray> <gradient:#FF6B6B:#FF4757>%operator%</gradient><gray>. Причина:</gray> <gradient:#FF6B6B:#FF4757>%reason%</gradient>"
# Сообщение при размуте (broadcast)
unmuted: "&#6BCB77%player% &#808080был размучен модератором &#6BCB77%operator%"
unmuted: "<gradient:#6BCB77:#4ECDC4>%player%</gradient> <gray>был размучен модератором</gray> <gradient:#6BCB77:#4ECDC4>%operator%</gradient>"
# Сообщение замученному игроку
you-muted: "&#FF6B6BВы замучены на %duration%! Причина: %reason%"
you-muted: "<gradient:#FF6B6B:#FF4757>Вы замучены на %duration%! Причина: %reason%</gradient>"
# Сообщение при перманентном муте
you-muted-permanent: "&#FF6B6BВы замучены навсегда! Причина: %reason%"
you-muted-permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда! Причина: %reason%</gradient>"
# Сообщение при попытке написать в чат
cannot-chat: "&#FF6B6BВы замучены! Осталось: %duration%"
cannot-chat-permanent: "&#FF6B6BВы замучены навсегда!"
cannot-chat: "<gradient:#FF6B6B:#FF4757>Вы замучены! Осталось: %duration%</gradient>"
cannot-chat-permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда!</gradient>"
# Тихий мут (только для тех кто видит)
silent-muted: "&#808080[Тихо] &#FF6B6B%player% &#808080замучен на &#FF6B6B%duration% &#808080(%operator%). Причина: %reason%"
silent-unmuted: "&#808080[Тихо] &#6BCB77%player% &#808080размучен (%operator%)"
silent-muted: "<gray>[Тихо]</gray> <gradient:#FF6B6B:#FF4757>%player%</gradient> <gray>замучен на</gray> <gradient:#FF6B6B:#FF4757>%duration%</gradient> <gray>(%operator%). Причина: %reason%</gray>"
silent-unmuted: "<gray>[Тихо]</gray> <gradient:#6BCB77:#4ECDC4>%player%</gradient> <gray>размучен (%operator%)</gray>"
# Причина по умолчанию если не указана
default-reason: "Нету."
default-reason: "Нарушение правил"
# Максимальное время мута по умолчанию (если не указано время)
# Используется наивысшее доступное время из прав игрока
# Формат: 1d, 7d, 30d, perm (перманентный)
default-duration: "7d"
# Доступные длительности для прав lochat.mute.dur.<время>
# Игрок с правом lochat.mute.dur.7d может мутить максимум на 7 дней
# lochat.mute.dur.perm - может мутить навсегда
durations:
- "10m"
- "30m"

View file

@ -1,51 +1,169 @@
# Кастомные команды LoChat
# Здесь можно создавать свои команды с сообщениями и алиасами
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Custom Commands ║
# ║ Кастомные команды ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Пример структуры:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРИМЕРЫ КОМАНД │
# └─────────────────────────────────────────────────────────────────────────────┘
# Структура команды:
# command-name:
# permission: "lochat.command.name" # Право для использования (опционально)
# message: "Текст сообщения" # Сообщение которое отправится
# aliases: ["alias1", "alias2"] # Алиасы команды (опционально)
# type: "chat" # Тип: chat, broadcast, title, actionbar
# target: "sender" # Кому отправить: sender, all, permission:право
# permission: "право.для.использования" # Опционально
# message: "Текст сообщения" # Обязательно
# aliases: ["alias1", "alias2"] # Опционально
# type: "chat" # chat, broadcast, title, actionbar
# target: "sender" # sender, all, permission:право
# ═══════════════════════════════════════════════════════════════════════════════
# ИНФОРМАЦИОННЫЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
# Примеры команд:
help:
message: "&6Добро пожаловать на сервер!\n&#808080Используйте /rules для просмотра правил"
message: |
<gradient:#FFD700:#FFA500>═══════ Помощь по серверу ═══════</gradient>
<gradient:#87CEEB:#4682B4>/rules</gradient> <gray>- правила сервера</gray>
<gradient:#87CEEB:#4682B4>/discord</gradient> <gray>- наш Discord</gray>
<gradient:#87CEEB:#4682B4>/website</gradient> <gray>- официальный сайт</gray>
<gradient:#87CEEB:#4682B4>/coords</gradient> <gray>- ваши координаты</gray>
<gradient:#87CEEB:#4682B4>/time</gradient> <gray>- время на сервере</gray>
aliases: ["помощь", "хелп"]
type: "chat"
target: "sender"
rules:
message: "&c&lПРАВИЛА СЕРВЕРА:\n&#8080801. Не гриферить\n2. Не читерить\n3. Уважать других игроков"
message: |
<gradient:#FF6B6B:#FF4757>═══════ Правила сервера ═══════</gradient>
<white>1.</white> <gray>Не используйте читы и моды</gray>
<white>2.</white> <gray>Уважайте других игроков</gray>
<white>3.</white> <gray>Не спамьте в чате</gray>
<white>4.</white> <gray>Не стройте рядом с чужими постройками</gray>
<white>5.</white> <gray>Не используйте мат и оскорбления</gray>
<gradient:#FFA726:#FF9800>Нарушение правил карается мутом или баном!</gradient>
aliases: ["правила", "rule"]
type: "chat"
target: "sender"
discord:
message: "<blue>Наш Discord сервер: discord.gg/example</blue>"
message: |
<gradient:#7289DA:#5865F2>═══════ Наш Discord ═══════</gradient>
<gray>Присоединяйтесь к нашему сообществу!</gray>
<click:open_url:'https://discord.gg/example'><gradient:#87CEEB:#4682B4>🔗 discord.gg/example</gradient></click>
<gray>В Discord вы можете:</gray>
<white>•</white> <gray>Общаться с игроками</gray>
<white>•</white> <gray>Получать новости сервера</gray>
<white>•</white> <gray>Участвовать в событиях</gray>
aliases: ["дискорд", "ds"]
type: "chat"
target: "sender"
# Команда для админов
website:
message: |
<gradient:#00FF88:#00CC66>═══════ Официальный сайт ═══════</gradient>
<click:open_url:'https://example.com'><gradient:#87CEEB:#4682B4>🌐 example.com</gradient></click>
<gray>На сайте доступно:</gray>
<white>•</white> <gray>Карта сервера</gray>
<white>•</white> <gray>Статистика игроков</gray>
<white>•</white> <gray>Форум и новости</gray>
aliases: ["сайт", "site"]
type: "chat"
target: "sender"
# ═══════════════════════════════════════════════════════════════════════════════
# УТИЛИТЫ
# ═══════════════════════════════════════════════════════════════════════════════
coords:
message: |
<gradient:#FFA726:#FF9800>Ваши координаты:</gradient>
<gradient:#87CEEB:#4682B4>X:</gradient> <white>{x}</white>
<gradient:#87CEEB:#4682B4>Y:</gradient> <white>{y}</white>
<gradient:#87CEEB:#4682B4>Z:</gradient> <white>{z}</white>
<gradient:#87CEEB:#4682B4>Мир:</gradient> <white>{world}</white>
aliases: ["координаты", "pos", "position"]
type: "actionbar"
target: "sender"
time:
message: |
<gradient:#87CEEB:#4682B4>Время на сервере:</gradient> <white>%server_time_24%</white>
<gradient:#87CEEB:#4682B4>Дата:</gradient> <white>%server_date%</white>
<gradient:#87CEEB:#4682B4>Онлайн:</gradient> <white>%server_online%</white> <gray>игроков</gray>
aliases: ["время", "дата"]
type: "chat"
target: "sender"
# ═══════════════════════════════════════════════════════════════════════════════
# АДМИНСКИЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
restart-warning:
permission: "lochat.admin"
message: "<red><bold>ВНИМАНИЕ!</bold></red> <yellow>Сервер будет перезагружен через 5 минут!</yellow>"
message: |
<gradient:#FF6B6B:#FF4757>⚠ ВНИМАНИЕ! ⚠</gradient>
<gradient:#FFA726:#FF9800>Сервер будет перезагружен через 5 минут!</gradient>
<gray>Сохраните свой прогресс и подготовьтесь к перезагрузке.</gray>
aliases: ["рестарт", "reboot"]
type: "title"
target: "all"
maintenance:
permission: "lochat.admin"
message: |
<gradient:#FF6B6B:#FF4757>Сервер переходит в режим технических работ</gradient>
<gray>Ожидаемое время: 30 минут</gray>
aliases: ["тех-работы", "maintenance"]
type: "broadcast"
target: "all"
# Команда с title
# ═══════════════════════════════════════════════════════════════════════════════
# VIP КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
vip-info:
permission: "lochat.vip"
message: |
<gradient:#FFD700:#FFA500>═══════ VIP Привилегии ═══════</gradient>
<white>•</white> <gray>Цветной ник и префикс</gray>
<white>•</white> <gray>Приоритет входа на сервер</gray>
<white>•</white> <gray>Дополнительные команды</gray>
<white>•</white> <gray>Больше возможностей в чате</gray>
<gradient:#6BCB77:#4ECDC4>Спасибо за поддержку сервера!</gradient>
type: "chat"
target: "permission:lochat.vip"
# ═══════════════════════════════════════════════════════════════════════════════
# РАЗВЛЕКАТЕЛЬНЫЕ КОМАНДЫ
# ═══════════════════════════════════════════════════════════════════════════════
welcome:
message: "Добро пожаловать!"
aliases: ["привет"]
message: |
<gradient:#FFD700:#FFA500>Добро пожаловать на сервер!</gradient>
<gradient:#87CEEB:#4682B4>Игрок {player} присоединился к игре</gradient>
aliases: ["привет", "hello"]
type: "title"
target: "sender"
# Команда с actionbar
coords:
message: "Ваши координаты: {x}, {y}, {z}"
aliases: ["координаты", "pos"]
type: "actionbar"
target: "sender"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПЛЕЙСХОЛДЕРЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Доступные плейсхолдеры в сообщениях:
# {player} - имя игрока
# {x}, {y}, {z} - координаты игрока
# {world} - название мира
# {arg0}, {arg1}, {arg2} - аргументы команды (нумерация с 0)
# {args} - все аргументы через пробел
#
# Также поддерживаются все плейсхолдеры PlaceholderAPI:
# %player_name% - имя игрока
# %server_online% - количество игроков онлайн
# %server_time_24% - время в формате 24 часа
# %server_date% - текущая дата
# И многие другие...

View file

@ -1,385 +1,281 @@
# LoChat - Смайлики и стикеры
# Автор: loki
#
# Формат: "триггер": "замена"
# Игроки пишут триггер, он заменяется на символ
#
# Права:
# - chat.emoji.use — использование смайликов
# - chat.emoji.* — все смайлики
# - chat.emoji.hearts — только категория hearts
# - chat.emoji.custom — кастомные смайлики
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Emojis ║
# ║ Смайлики для чата ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ═══════════════════════════════════════════
# НАСТРОЙКИ
# ═══════════════════════════════════════════
settings:
enabled: true
# Требовать право chat.emoji.use
require-permission: false
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЭМОЦИИ И ЛИЦА │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# ЛИЦА И ЭМОЦИИ
# ═══════════════════════════════════════════
faces:
":)": "☺"
emojis:
# Основные эмоции
":)": "😊"
":(": "😢"
":D": "😃"
":(": "☹"
";)": "😉"
":P": "😛"
":O": "😮"
"XD": "😆"
":o": "😮"
":|": "😐"
":/": "😕"
":*": "😘"
"^_^": "😊"
"-_-": "😑"
">:(": "😠"
":3": "😺"
":'(": "😢"
":')": "😂"
"o_o": "😳"
"O_O": "😱"
":thinking:": "🤔"
":cool:": "😎"
":angry:": "😡"
"<3": "❤️"
"</3": "💔"
# Расширенные эмоции
":smile:": "😊"
":sad:": "😢"
":happy:": "😊"
":laugh:": "😂"
":cry:": "😭"
":sleep:": "😴"
":sick:": "🤢"
":dead:": "💀"
# ═══════════════════════════════════════════
# СЕРДЦА И ЛЮБОВЬ
# ═══════════════════════════════════════════
hearts:
"<3": "❤"
":heart:": "❤"
":red_heart:": "❤"
":blue_heart:": "💙"
":green_heart:": "💚"
":yellow_heart:": "💛"
":purple_heart:": "💜"
":black_heart:": "🖤"
":white_heart:": "🤍"
":orange_heart:": "🧡"
":happy:": "😃"
":wink:": "😉"
":tongue:": "😛"
":surprised:": "😮"
":neutral:": "😐"
":confused:": "😕"
":kiss:": "😘"
":love:": "❤️"
":broken_heart:": "💔"
":two_hearts:": "💕"
":sparkling_heart:": "💖"
":heartbeat:": "💓"
":heartpulse:": "💗"
":love:": "💕"
":kiss:": "💋"
":angry:": "😠"
":rage:": "😡"
":cry:": "😭"
":laugh:": "😂"
":joy:": "😂"
":rofl:": "🤣"
":cool:": "😎"
":nerd:": "🤓"
":thinking:": "🤔"
":sleepy:": "😴"
":sick:": "🤒"
":dizzy:": "😵"
":crazy:": "🤪"
# ═══════════════════════════════════════════
# ЖЕСТЫ И РУКИ
# ═══════════════════════════════════════════
gestures:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЖЕСТЫ И ДЕЙСТВИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Жесты
":thumbsup:": "👍"
":+1:": "👍"
":thumbsdown:": "👎"
":-1:": "👎"
":clap:": "👏"
":wave:": "👋"
":ok:": "👌"
":ok_hand:": "👌"
":peace:": "✌️"
":fist:": "✊"
":punch:": "👊"
":peace:": "✌"
":v:": "✌"
":muscle:": "💪"
":strong:": "💪"
":wave:": "👋"
":clap:": "👏"
":pray:": "🙏"
":hands:": "🙌"
":point_up:": "☝"
":point_down:": "👇"
":point_left:": "👈"
":muscle:": "💪"
":point_right:": "👉"
":middle_finger:": "🖕"
":call:": "🤙"
":point_left:": "👈"
":point_up:": "👆"
":point_down:": "👇"
# ═══════════════════════════════════════════
# ПРИРОДА И ПОГОДА
# ═══════════════════════════════════════════
nature:
":fire:": "🔥"
":flame:": "🔥"
":zap:": "⚡"
":lightning:": "⚡"
":boom:": "💥"
":explosion:": "💥"
":sparkles:": "✨"
":stars:": "✨"
":snow:": "❄"
":snowflake:": "❄"
":cloud:": "☁"
":sun:": "☀"
":sunny:": "☀"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРИРОДА И ПОГОДА │
# └─────────────────────────────────────────────────────────────────────────────┘
# Природа
":sun:": "☀️"
":moon:": "🌙"
":crescent_moon:": "🌙"
":full_moon:": "🌕"
":rainbow:": "🌈"
":star:": "⭐"
":cloud:": "☁️"
":rain:": "🌧️"
":snow:": "❄️"
":fire:": "🔥"
":water:": "💧"
":drop:": "💧"
":ocean:": "🌊"
":wind:": "💨"
":tornado:": "🌪"
":leaf:": "🍃"
":tree:": "🌳"
":flower:": "🌸"
":rose:": "🌹"
":cactus:": "🌵"
":leaf:": "🍃"
":rainbow:": "🌈"
":lightning:": "⚡"
# ═══════════════════════════════════════════
# ЗВЁЗДЫ И СИМВОЛЫ
# ═══════════════════════════════════════════
symbols:
":star:": "⭐"
":star2:": "🌟"
":glowing_star:": "🌟"
":dizzy:": "💫"
":sparkle:": "❇"
":skull:": "💀"
":ghost:": "👻"
":alien:": "👽"
":robot:": "🤖"
":poop:": "💩"
":100:": "💯"
":gem:": "💎"
":diamond:": "💎"
":money:": "💰"
":dollar:": "💵"
":coin:": "🪙"
":gift:": "🎁"
":balloon:": "🎈"
":party:": "🎉"
":tada:": "🎉"
":confetti:": "🎊"
":trophy:": "🏆"
":medal:": "🏅"
":crown:": "👑"
":king:": "👑"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЖИВОТНЫЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# МАЙНКРАФТ ТЕМАТИКА
# ═══════════════════════════════════════════
minecraft:
":sword:": "⚔"
":crossed_swords:": "⚔"
":shield:": "🛡"
":axe:": "🪓"
":pickaxe:": "⛏"
":bow:": "🏹"
":arrow:": "➤"
":bomb:": "💣"
":tnt:": "🧨"
":potion:": "🧪"
":ender:": "🟣"
":nether:": "🔴"
":emerald:": "💚"
":gold:": "🟡"
":iron:": "⬜"
":coal:": "⬛"
":redstone:": "🔴"
":lapis:": "🔵"
":exp:": "🟢"
":xp:": "🟢"
":heart_mc:": "❤"
":hunger:": "🍖"
":armor:": "🛡"
# ═══════════════════════════════════════════
# ЖИВОТНЫЕ
# ═══════════════════════════════════════════
animals:
# Животные
":cat:": "🐱"
":dog:": "🐶"
":wolf:": "🐺"
":fox:": "🦊"
":pig:": "🐷"
":cow:": "🐮"
":sheep:": "🐑"
":chicken:": "🐔"
":dragon:": "🐉"
":bee:": "🐝"
":fish:": "🐟"
":spider:": "🕷"
":bat:": "🦇"
":rabbit:": "🐰"
":bear:": "🐻"
":panda:": "🐼"
":monkey:": "🐵"
":pig:": "🐷"
":cow:": "🐄"
":horse:": "🐴"
":unicorn:": "🦄"
":snake:": "🐍"
":sheep:": "🐑"
":chicken:": "🐔"
":duck:": "🦆"
":eagle:": "🦅"
":fish:": "🐟"
":shark:": "🦈"
":whale:": "🐋"
":dolphin:": "🐬"
":turtle:": "🐢"
":frog:": "🐸"
":bird:": "🐦"
":penguin:": "🐧"
":owl:": "🦉"
":snake:": "🐍"
":dragon:": "🐉"
":unicorn:": "🦄"
# ═══════════════════════════════════════════
# ЕДА И НАПИТКИ
# ═══════════════════════════════════════════
food:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЕДА И НАПИТКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Еда
":apple:": "🍎"
":green_apple:": "🍏"
":banana:": "🍌"
":orange:": "🍊"
":strawberry:": "🍓"
":watermelon:": "🍉"
":grapes:": "🍇"
":cherry:": "🍒"
":peach:": "🍑"
":pineapple:": "🍍"
":bread:": "🍞"
":meat:": "🍖"
":steak:": "🥩"
":cake:": "🎂"
":cookie:": "🍪"
":cheese:": "🧀"
":meat:": "🥩"
":pizza:": "🍕"
":hamburger:": "🍔"
":burger:": "🍔"
":fries:": "🍟"
":hotdog:": "🌭"
":taco:": "🌮"
":sushi:": "🍣"
":ramen:": "🍜"
":egg:": "🥚"
":cheese:": "🧀"
":milk:": "🥛"
":cake:": "🎂"
":cookie:": "🍪"
":donut:": "🍩"
":ice_cream:": "🍦"
":candy:": "🍬"
":chocolate:": "🍫"
# Напитки
":coffee:": "☕"
":tea:": "🍵"
":beer:": "🍺"
":wine:": "🍷"
":cocktail:": "🍹"
":ice_cream:": "🍦"
":donut:": "🍩"
":candy:": "🍬"
":chocolate:": "🍫"
":watermelon:": "🍉"
":banana:": "🍌"
":carrot:": "🥕"
":corn:": "🌽"
":milk:": "🥛"
":water:": "💧"
# ═══════════════════════════════════════════
# ИГРОВЫЕ И ИНТЕРФЕЙС
# ═══════════════════════════════════════════
gaming:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИГРЫ И РАЗВЛЕЧЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Игры
":game:": "🎮"
":controller:": "🎮"
":joystick:": "🕹"
":dice:": "🎲"
":chess:": "♟"
":target:": "🎯"
":flag:": "🚩"
":checkered_flag:": "🏁"
":warning:": "⚠"
":no_entry:": "⛔"
":stop:": "🛑"
":check:": "✓"
":checkmark:": "✔"
":x:": "✗"
":cross:": "✖"
":question:": "❓"
":exclamation:": "❗"
":zzz:": "💤"
":bulb:": "💡"
":idea:": "💡"
":bell:": "🔔"
":mute:": "🔇"
":speaker:": "🔊"
":mega:": "📢"
":mic:": "🎤"
":cards:": "🃏"
":chess:": "♟️"
":football:": "⚽"
":basketball:": "🏀"
":tennis:": "🎾"
":bowling:": "🎳"
":dart:": "🎯"
":trophy:": "🏆"
":medal:": "🏅"
":crown:": "👑"
# ═══════════════════════════════════════════
# СТРЕЛКИ И НАПРАВЛЕНИЯ
# ═══════════════════════════════════════════
arrows:
":arrow_up:": "↑"
":arrow_down:": "↓"
":arrow_left:": "←"
":arrow_right:": "→"
":arrow_up_right:": "↗"
":arrow_up_left:": "↖"
":arrow_down_right:": "↘"
":arrow_down_left:": "↙"
":arrows_lr:": "↔"
":arrows_ud:": "↕"
":return:": "↩"
":redo:": "↪"
":refresh:": "🔄"
":infinity:": "∞"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ТРАНСПОРТ │
# └─────────────────────────────────────────────────────────────────────────────┘
# ═══════════════════════════════════════════
# МУЗЫКА И ИСКУССТВО
# ═══════════════════════════════════════════
music:
":note:": "♪"
":notes:": "♫"
":music:": "🎵"
":musical_note:": "🎶"
":headphones:": "🎧"
":guitar:": "🎸"
":piano:": "🎹"
":drum:": "🥁"
":violin:": "🎻"
":art:": "🎨"
":palette:": "🎨"
":camera:": "📷"
":movie:": "🎬"
":tv:": "📺"
":radio:": "📻"
# Транспорт
":car:": "🚗"
":bus:": "🚌"
":truck:": "🚚"
":bike:": "🚲"
":motorcycle:": "🏍️"
":plane:": "✈️"
":helicopter:": "🚁"
":rocket:": "🚀"
":ship:": "🚢"
":boat:": "⛵"
":train:": "🚂"
# ═══════════════════════════════════════════
# РАЗНОЕ
# ═══════════════════════════════════════════
misc:
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРЕДМЕТЫ И СИМВОЛЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Предметы
":sword:": "⚔️"
":shield:": "🛡️"
":bow:": "🏹"
":hammer:": "🔨"
":pickaxe:": "⛏️"
":axe:": "🪓"
":shovel:": "🗡️"
":key:": "🔑"
":lock:": "🔒"
":unlock:": "🔓"
":key:": "🔑"
":hourglass:": "⏳"
":timer:": "⏱"
":clock:": "🕐"
":calendar:": "📅"
":pin:": "📌"
":paperclip:": "📎"
":scissors:": "✂"
":pencil:": "✏"
":pen:": "🖊"
":book:": "📖"
":scroll:": "📜"
":mail:": "📧"
":envelope:": "✉"
":phone:": "📱"
":computer:": "💻"
":keyboard:": "⌨"
":mouse:": "🖱"
":trash:": "🗑"
":tools:": "🛠"
":wrench:": "🔧"
":hammer:": "🔨"
":gear:": "⚙"
":link:": "🔗"
":magnet:": "🧲"
":battery:": "🔋"
":plug:": "🔌"
":gem:": "💎"
":diamond:": "💎"
":gold:": "🥇"
":silver:": "🥈"
":bronze:": "🥉"
":coin:": "🪙"
":money:": "💰"
":gift:": "🎁"
":balloon:": "🎈"
":party:": "🎉"
":confetti:": "🎊"
":fireworks:": "🎆"
# ═══════════════════════════════════════════
# КАСТОМНЫЕ (добавляй свои)
# ═══════════════════════════════════════════
custom:
# Примеры кастомных смайликов
":server:": "🖥"
":admin:": "👨‍💻"
":mod:": "🛡"
":vip:": "⭐"
":donate:": "💎"
":online:": "🟢"
":offline:": "🔴"
":afk:": "💤"
":gg:": "🏆"
":ez:": "😎"
":rip:": "⚰"
":f:": "🇫"
":pog:": "😲"
":kek:": "😂"
":sus:": "🤨"
":bruh:": "😐"
":based:": "💪"
":cringe:": "😬"
":ratio:": "📉"
":w:": "🏆"
":l:": "📉"
# Символы
":check:": "✅"
":cross:": "❌"
":warning:": "⚠️"
":info:": "ℹ️"
":question:": "❓"
":exclamation:": "❗"
":plus:": "➕"
":minus:": "➖"
":multiply:": "✖️"
":divide:": "➗"
":arrow_up:": "⬆️"
":arrow_down:": "⬇️"
":arrow_left:": "⬅️"
":arrow_right:": "➡️"
":100:": "💯"
":infinity:": "♾️"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ MINECRAFT СПЕЦИФИЧНЫЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Minecraft блоки и предметы
":creeper:": "💥"
":tnt:": "🧨"
":redstone:": "🔴"
":emerald:": "💚"
":iron:": "⚪"
":coal:": "⚫"
":wood:": "🟤"
":stone:": "🗿"
":dirt:": "🟫"
":grass:": "🟩"
":sand:": "🟨"
":water_bucket:": "🪣"
":lava_bucket:": "🔥"
":bed:": "🛏️"
":chest:": "📦"
":furnace:": "🔥"
":crafting:": "🔧"
":enchant:": "✨"
":potion:": "🧪"
":book:": "📚"
":map:": "🗺️"
":compass:": "🧭"
":clock:": "🕐"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГОЛОВЫ ИГРОКОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Примеры использования голов игроков:
# :head_Steve: - показать голову игрока Steve
# @head Notch - показать интерактивную голову игрока Notch
#
# Требуется право: lochat.heademoji.use
head_examples:
usage: |
<gradient:#9370DB:#8A2BE2>═══════ Головы игроков ═══════</gradient>
<gradient:#87CEEB:#4682B4>:head_nickname:</gradient> <gray>- показать голову игрока</gray>
<gradient:#87CEEB:#4682B4>@head nickname</gradient> <gray>- интерактивная голова</gray>
<gray>Требуется право:</gray> <white>lochat.heademoji.use</white>

View file

@ -1,68 +1,141 @@
# LoChat Gradient Module Configuration
# Модуль градиентных ников (интегрированный LoPreff)
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Gradient Config ║
# ║ Настройки градиентных ников ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Включить/выключить модуль
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Включить градиентные ники
enabled: true
# Тип хранения данных: file или sqlite
storage-type: "file"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ЦВЕТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Минимальное количество цветов в градиенте
min-colors: 1
# Максимальное количество цветов в градиенте
max-colors: 7
# Минимальное количество цветов
min-colors: 1
# Цена за каждый цвет (PlayerPoints)
price-per-color: 50
# Цена за префикс
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ НАСТРОЙКИ ПРЕФИКСОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Цена за префикс (PlayerPoints)
prefix-price: 500
# Покупка префикса один раз (потом бесплатно)
# Одноразовая покупка префикса (true) или за каждое изменение (false)
prefix-one-time-purchase: true
# Кулдаун на смену цвета (секунды)
# Максимальная длина префикса (символы)
max-prefix-length: 16
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КУЛДАУНЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Кулдаун на изменение цвета (секунды)
color-cooldown: 60
# Кулдаун на смену префикса (секунды)
prefix-cooldown: 300
# Кулдаун на изменение префикса (секунды)
prefix-cooldown: 120
# Максимальная длина префикса
max-prefix-length: 7
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИНТЕГРАЦИИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Формат префикса ({prefix} - сам префикс)
prefix-format: "[{prefix}] "
# Интеграция с LuckPerms
luckperms:
# Включить интеграцию
enabled: true
# Приоритет префикса в LuckPerms
prefix-priority: 100
# Обновлять префикс в LuckPerms при изменении
update-prefix: true
# Применять градиент на префикс
gradient-on-prefix: true
# Интеграция с PlayerPoints
playerpoints:
# Включить интеграцию (покупки за поинты)
enabled: true
# Показывать баланс в GUI
show-balance: true
# Применять градиент на LuckPerms префикс (если нет кастомного)
gradient-on-luckperms-prefix: true
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ПРЕДУСТАНОВКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Единый градиент на префикс + ник
continuous-gradient: true
# Предустановленные градиенты
presets:
fire: ["#FF4500", "#FF6347", "#FFD700"]
ocean: ["#00CED1", "#1E90FF", "#4169E1"]
forest: ["#228B22", "#32CD32", "#90EE90"]
sunset: ["#FF69B4", "#FF1493", "#DC143C"]
rainbow: ["#FF0000", "#FF7F00", "#FFFF00", "#00FF00", "#0000FF", "#4B0082", "#9400D3"]
ice: ["#B0E0E6", "#87CEEB", "#4682B4"]
gold: ["#FFD700", "#FFA500", "#FF8C00"]
purple: ["#9370DB", "#8A2BE2", "#4B0082"]
pink: ["#FFB6C1", "#FF69B4", "#FF1493"]
green: ["#00FF7F", "#00FA9A", "#98FB98"]
# Использовать &#RRGGBB формат (true) или <#RRGGBB> (false)
use-legacy-rgb-format: false
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ GUI НАСТРОЙКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Отображение над игроком
display:
# Обновлять display name игрока (показывает префикс+ник над головой)
update-display-name: true
# Обновлять tab list
update-tab-list: true
gui:
# Название GUI подтверждения
confirm-title: "<gradient:#FFD700:#FFA500>Подтверждение покупки</gradient>"
# Тип хранилища: YAML или SQLITE
storage-type: YAML
# Размер GUI (9, 18, 27, 36, 45, 54)
size: 27
# Файл SQLite базы данных
sqlite-file: gradient-data.db
# Предметы в GUI
items:
confirm:
material: "GREEN_WOOL"
name: "<gradient:#6BCB77:#4ECDC4>✓ Подтвердить</gradient>"
lore:
- "<gray>Нажмите для подтверждения"
- "<gray>покупки градиента"
# Чёрный список префиксов (нельзя использовать)
prefix-blacklist:
- admin
- owner
- moder
- helper
- staff
- модер
- админ
- хелпер
cancel:
material: "RED_WOOL"
name: "<gradient:#FF6B6B:#FF4757>✗ Отменить</gradient>"
lore:
- "<gray>Нажмите для отмены"
- "<gray>покупки"
info:
material: "PAPER"
name: "<gradient:#FFA726:#FF9800>Информация</gradient>"
lore:
- "<gray>Цена: <yellow>{price} поинтов</yellow>"
- "<gray>Цвета: <white>{colors}</white>"
- ""
- "<gray>Ваш баланс: <yellow>{balance}</yellow>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ РАЗРЕШЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Автоматические разрешения для групп
permissions:
# Группы, которые получают бесплатные градиенты
free-groups:
- "vip"
- "premium"
- "admin"
# Группы, которые могут использовать любые цвета
unlimited-colors:
- "admin"
- "owner"

View file

@ -1,57 +1,156 @@
# LoChat Gradient Module Messages
# Сообщения модуля градиентных ников
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Gradient Messages ║
# ║ Сообщения градиентного модуля ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# Общие
only-player: "&#04CADFЭта команда только для игроков!"
no-permission: "&#04CADFУ вас нет прав на это действие!"
player-not-found: "&#04CADFИгрок не найден!"
reload-success: "&#04CADFКонфигурация градиентов перезагружена!"
cooldown: "&#04CADFПодождите ещё {time} секунд!"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Цвета
color-help: |
&#04CADF=== Команда /color ===
&#04CADF/color <цвет1> [цвет2] ... &#808080— установить градиент
&#04CADF/color on &#808080— включить цвет
&#04CADF/color off &#808080— выключить цвет
&#04CADF/color reset &#808080— сбросить цвет
&#04CADF/color copy <игрок> &#808080— скопировать цвет
&#808080Пример: /color #FF0000 #00FF00 #0000FF
color-enabled: "&#04CADFЦвет ника включён!"
color-disabled: "&#04CADFЦвет ника выключен!"
color-reset: "&#04CADFЦвет ника сброшен!"
color-no-colors: "&#04CADFУ вас нет установленных цветов!"
color-success: "&#04CADFЦвет успешно установлен! Списано: {price} PP"
color-copy-usage: "&#04CADFИспользование: /color copy <игрок>"
color-copy-no-colors: "&#04CADFУ игрока {player} нет цветов!"
invalid-color: "&#04CADFНеверный формат цвета: {color}. Используйте #RRGGBB"
too-many-colors: "&#04CADFМаксимум {max} цветов!"
not-enough-colors: "&#04CADFМинимум {min} цветов!"
not-enough-points-color: "&#04CADFНедостаточно поинтов! Нужно: {price} PP"
# Префикс градиентного модуля
prefix: "<gradient:#9370DB:#8A2BE2>[Gradient]</gradient>"
# Префикс
prefix-help: |
&#04CADF=== Команда /prefix ===
&#04CADF/prefix <текст> &#808080— установить префикс
&#04CADF/prefix on &#808080— включить префикс
&#04CADF/prefix off &#808080— выключить префикс
&#04CADF/prefix reset &#808080— сбросить префикс
prefix-enabled: "&#04CADFПрефикс включён!"
prefix-disabled: "&#04CADFПрефикс выключен!"
prefix-reset-success: "&#04CADFПрефикс сброшен!"
prefix-no-prefix: "&#04CADFУ вас нет установленного префикса!"
prefix-success: "&#04CADFПрефикс успешно установлен! Списано: {price} PP"
prefix-success-free: "&#04CADFПрефикс успешно изменён!"
prefix-no-colors: "&#04CADFПрефикс не может содержать цветовые коды!"
prefix-invalid-chars: "&#04CADFПрефикс содержит недопустимые символы!"
prefix-blacklisted: "&#04CADFЭтот префикс запрещён!"
prefix-too-long: "&#04CADFПрефикс слишком длинный! Максимум: {max} символов"
not-enough-points-prefix: "&#04CADFНедостаточно поинтов! Нужно: {price} PP"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КОМАНДА /color │
# └─────────────────────────────────────────────────────────────────────────────┘
# Админ информация
info-header: "&#04CADF=== Информация об игроке {player} ==="
info-prefix: "&#808080Префикс: &f{prefix}"
info-prefix-enabled: "&#808080Префикс включён: &f{enabled}"
info-colors: "&#808080Цвета: &f{colors}"
info-color-enabled: "&#808080Цвет включён: &f{enabled}"
info-prefix-purchased: "&#808080Префикс куплен: &f{purchased}"
color:
# Успешные действия
set: "<gradient:#6BCB77:#4ECDC4>Градиент установлен!</gradient>"
enabled: "<gradient:#6BCB77:#4ECDC4>Градиентный ник включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Градиентный ник отключен</gradient>"
reset: "<gradient:#FFA726:#FF9800>Градиент сброшен</gradient>"
copied: "<gradient:#6BCB77:#4ECDC4>Градиент скопирован с игрока {player}</gradient>"
# Ошибки
invalid-hex: "<gradient:#FF6B6B:#FF4757>Неверный HEX цвет: {color}</gradient>"
too-many-colors: "<gradient:#FF6B6B:#FF4757>Слишком много цветов! Максимум: {max}</gradient>"
too-few-colors: "<gradient:#FF6B6B:#FF4757>Слишком мало цветов! Минимум: {min}</gradient>"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав на использование градиентов</gradient>"
cooldown: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед изменением цвета</gradient>"
not-enough-points: "<gradient:#FF6B6B:#FF4757>Недостаточно поинтов! Нужно: {price}, у вас: {balance}</gradient>"
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
no-gradient: "<gradient:#FFA726:#FF9800>У игрока нет градиента для копирования</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Команды градиента ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/color <hex1> [hex2] ...</gradient> <gray>- установить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color on/off</gradient> <gray>- включить/выключить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color reset</gradient> <gray>- сбросить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color copy <игрок></gradient> <gray>- скопировать градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/color preset <название></gradient> <gray>- использовать предустановку</gray>"
- ""
- "<gradient:#FFA726:#FF9800>Предустановки:</gradient> <white>fire, ocean, forest, sunset, rainbow, ice, gold, purple, pink, green</white>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КОМАНДА /prefix │
# └─────────────────────────────────────────────────────────────────────────────┘
prefix:
# Успешные действия
set: "<gradient:#6BCB77:#4ECDC4>Префикс установлен!</gradient>"
enabled: "<gradient:#6BCB77:#4ECDC4>Префикс включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Префикс отключен</gradient>"
reset: "<gradient:#FFA726:#FF9800>Префикс сброшен</gradient>"
# Ошибки
too-long: "<gradient:#FF6B6B:#FF4757>Префикс слишком длинный! Максимум: {max} символов</gradient>"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав на использование префиксов</gradient>"
cooldown: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед изменением префикса</gradient>"
not-enough-points: "<gradient:#FF6B6B:#FF4757>Недостаточно поинтов! Нужно: {price}, у вас: {balance}</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Команды префикса ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/prefix <текст></gradient> <gray>- установить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/prefix on/off</gradient> <gray>- включить/выключить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/prefix reset</gradient> <gray>- сбросить префикс</gray>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АДМИНСКИЕ КОМАНДЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
admin:
# Успешные действия
reloaded: "<gradient:#6BCB77:#4ECDC4>Конфигурация градиентов перезагружена</gradient>"
color-set: "<gradient:#6BCB77:#4ECDC4>Градиент установлен игроку {player}</gradient>"
prefix-set: "<gradient:#6BCB77:#4ECDC4>Префикс установлен игроку {player}</gradient>"
color-enabled: "<gradient:#6BCB77:#4ECDC4>Градиент включен для {player}</gradient>"
color-disabled: "<gradient:#FF6B6B:#FF4757>Градиент отключен для {player}</gradient>"
prefix-enabled: "<gradient:#6BCB77:#4ECDC4>Префикс включен для {player}</gradient>"
prefix-disabled: "<gradient:#FF6B6B:#FF4757>Префикс отключен для {player}</gradient>"
color-reset: "<gradient:#FFA726:#FF9800>Градиент сброшен для {player}</gradient>"
prefix-reset: "<gradient:#FFA726:#FF9800>Префикс сброшен для {player}</gradient>"
updated-all: "<gradient:#6BCB77:#4ECDC4>Обновлены все игроки ({count})</gradient>"
# Информация об игроке
info:
- "<gradient:#FFD700:#FFA500>═══════ Информация о {player} ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>Градиент:</gradient> <white>{gradient_status}</white>"
- "<gradient:#87CEEB:#4682B4>Цвета:</gradient> <white>{colors}</white>"
- "<gradient:#87CEEB:#4682B4>Префикс:</gradient> <white>{prefix_status}</white>"
- "<gradient:#87CEEB:#4682B4>Текст префикса:</gradient> <white>{prefix_text}</white>"
- "<gradient:#87CEEB:#4682B4>Отображаемое имя:</gradient> {display_name}"
# Ошибки
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
invalid-hex: "<gradient:#FF6B6B:#FF4757>Неверный HEX цвет: {color}</gradient>"
# Помощь
help:
- "<gradient:#FFD700:#FFA500>═══════ Админские команды ═══════</gradient>"
- "<gradient:#87CEEB:#4682B4>/aprefix reload</gradient> <gray>- перезагрузить конфиг</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix info <игрок></gradient> <gray>- информация об игроке</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix setcolor <игрок> <цвета></gradient> <gray>- установить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix setprefix <игрок> <текст></gradient> <gray>- установить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix coloron/coloroff <игрок></gradient> <gray>- вкл/выкл градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix prefixon/prefixoff <игрок></gradient> <gray>- вкл/выкл префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix resetcolor <игрок></gradient> <gray>- сбросить градиент</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix resetprefix <игрок></gradient> <gray>- сбросить префикс</gray>"
- "<gradient:#87CEEB:#4682B4>/aprefix updateall</gradient> <gray>- обновить всех игроков</gray>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ GUI СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
gui:
# Заголовки
confirm-title: "<gradient:#FFD700:#FFA500>Подтверждение покупки</gradient>"
# Кнопки
confirm-button: "<gradient:#6BCB77:#4ECDC4>✓ Подтвердить покупку</gradient>"
cancel-button: "<gradient:#FF6B6B:#FF4757>✗ Отменить</gradient>"
# Описания
confirm-lore:
- "<gray>Цена: <yellow>{price} поинтов</yellow>"
- "<gray>Цвета: <white>{colors}</white>"
- ""
- "<gray>Ваш баланс: <yellow>{balance}</yellow>"
- ""
- "<gradient:#6BCB77:#4ECDC4>Нажмите для подтверждения</gradient>"
cancel-lore:
- "<gradient:#FF6B6B:#FF4757>Нажмите для отмены</gradient>"
# Результаты
purchase-success: "<gradient:#6BCB77:#4ECDC4>Градиент успешно куплен!</gradient>"
purchase-cancelled: "<gradient:#FFA726:#FF9800>Покупка отменена</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЩИЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
general:
# Статусы
enabled: "<gradient:#6BCB77:#4ECDC4>Включено</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Отключено</gradient>"
none: "<gray>Нет</gray>"
# Единицы времени
seconds: "сек"
minutes: "мин"
hours: "ч"
days: "д"

View file

@ -1,70 +1,133 @@
prefix: "&#04CADF[LoChat]"
# ╔══════════════════════════════════════════════════════════════════════════════╗
# ║ LoChat Messages ║
# ║ Сообщения плагина LoChat ║
# ║ Версия: 1.5.5-1.20.1 ║
# ╚══════════════════════════════════════════════════════════════════════════════╝
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОСНОВНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
# Префикс плагина
prefix: "<gradient:#00D4FF:#0099CC>[LoChat]</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ГЛОБАЛЬНЫЙ ЧАТ │
# └─────────────────────────────────────────────────────────────────────────────┘
global:
disabled: "&#04CADFГлобальный чат отключен"
toggled-on: "&#04CADFГлобальный чат включен"
toggled-off: "&#04CADFГлобальный чат отключен"
disabled: "<gradient:#FF6B6B:#FF4757>Глобальный чат отключен</gradient>"
toggled-on: "<gradient:#6BCB77:#4ECDC4>Глобальный чат включен</gradient>"
toggled-off: "<gradient:#FF6B6B:#FF4757>Глобальный чат отключен</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЛОКАЛЬНЫЙ ЧАТ │
# └─────────────────────────────────────────────────────────────────────────────┘
local:
no-players: "&#04CADFРядом нет игроков"
no-players: "<gradient:#FFA726:#FF9800>Рядом нет игроков</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ЛИЧНЫЕ СООБЩЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
pm:
# Форматы личных сообщений
# {sender} - ник отправителя, {receiver} - ник получателя
# {sender_display} - отправитель с градиентом, {receiver_display} - получатель с градиентом
# {message} - текст сообщения
format-sent: "&#808080[PM] Ты → {receiver_display}&#808080: {message}"
format-received: "&#808080[PM] {sender_display}&#808080 → Ты: {message}"
format-sent: "<gray>[PM]</gray> <gradient:#87CEEB:#4682B4>Ты</gradient> <gray>→</gray> {receiver_display}<gray>:</gray> {message}"
format-received: "<gray>[PM]</gray> {sender_display} <gray>→</gray> <gradient:#87CEEB:#4682B4>Ты</gradient><gray>:</gray> {message}"
# Использовать градиентные ники в PM
use-gradient-names: true
# Старые форматы (для совместимости)
sent: "&#808080[PM] Ты → {player}: {message}"
received: "&#808080[PM] {player} → Ты: {message}"
no-reply: "&#04CADFНекому ответить"
ignored: "&#04CADFЭтот игрок вас игнорирует"
player-offline: "&#04CADFИгрок не в сети"
self: "&#04CADFНельзя писать самому себе"
sent: "<gray>[PM]</gray> <gradient:#87CEEB:#4682B4>Ты</gradient> <gray>→</gray> <white>{player}</white><gray>:</gray> {message}"
received: "<gray>[PM]</gray> <white>{player}</white> <gray>→</gray> <gradient:#87CEEB:#4682B4>Ты</gradient><gray>:</gray> {message}"
# Ошибки PM
no-reply: "<gradient:#FF6B6B:#FF4757>Некому ответить</gradient>"
ignored: "<gradient:#FF6B6B:#FF4757>Этот игрок вас игнорирует</gradient>"
player-offline: "<gradient:#FF6B6B:#FF4757>Игрок не в сети</gradient>"
self: "<gradient:#FF6B6B:#FF4757>Нельзя писать самому себе</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ИГНОРИРОВАНИЕ │
# └─────────────────────────────────────────────────────────────────────────────┘
ignore:
added: "&#04CADFИгрок {player} добавлен в игнор"
removed: "&#04CADFИгрок {player} убран из игнора"
already-ignored: "&#04CADFИгрок уже в игноре"
not-ignored: "&#04CADFИгрок не в игноре"
self: "&#04CADFНельзя игнорировать себя"
added: "<gradient:#6BCB77:#4ECDC4>Игрок {player} добавлен в игнор</gradient>"
removed: "<gradient:#6BCB77:#4ECDC4>Игрок {player} убран из игнора</gradient>"
already-ignored: "<gradient:#FFA726:#FF9800>Игрок уже в игноре</gradient>"
not-ignored: "<gradient:#FFA726:#FF9800>Игрок не в игноре</gradient>"
self: "<gradient:#FF6B6B:#FF4757>Нельзя игнорировать себя</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОБЪЯВЛЕНИЯ │
# └─────────────────────────────────────────────────────────────────────────────┘
announce:
reloaded: "&#04CADFКонфигурация перезагружена"
reloaded: "<gradient:#6BCB77:#4ECDC4>Конфигурация перезагружена</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ШПИОН РЕЖИМ │
# └─────────────────────────────────────────────────────────────────────────────┘
spy:
enabled: "&#04CADFШпион режим включен"
disabled: "&#04CADFШпион режим выключен"
format: "&#808080[SPY] {sender} → {receiver}: {message}"
chat-format: "&#808080[SPY] {type} {sender}: {message}"
enabled: "<gradient:#6BCB77:#4ECDC4>Шпион режим включен</gradient>"
disabled: "<gradient:#FF6B6B:#FF4757>Шпион режим выключен</gradient>"
format: "<gray>[SPY]</gray> <gradient:#FFD700:#FFA500>{sender}</gradient> <gray>→</gray> <gradient:#87CEEB:#4682B4>{receiver}</gradient><gray>:</gray> <white>{message}</white>"
chat-format: "<gray>[SPY]</gray> <gradient:#FFA726:#FF9800>{type}</gradient> <gradient:#00FF88:#00CC66>{sender}</gradient><gray>:</gray> <white>{message}</white>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ФИЛЬТР МАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
filter:
blocked: "&#04CADFСообщение заблокировано (мат)"
warning: "&#04CADFПредупреждение: не используйте мат!"
blocked: "<gradient:#FF6B6B:#FF4757>Сообщение заблокировано (недопустимые слова)</gradient>"
warning: "<gradient:#FFA726:#FF9800>Предупреждение: не используйте недопустимые слова!</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ КУЛДАУНЫ │
# └─────────────────────────────────────────────────────────────────────────────┘
cooldown:
wait: "&#04CADFПодождите {time} сек перед следующим сообщением"
wait: "<gradient:#FFA726:#FF9800>Подождите {time} сек перед следующим сообщением</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ АНТИ-СПАМ │
# └─────────────────────────────────────────────────────────────────────────────┘
antispam:
caps: "&#04CADFСлишком много заглавных букв!"
repeat: "&#04CADFНе повторяйте символы!"
similar: "&#04CADFНе отправляйте одинаковые сообщения!"
caps: "<gradient:#FF6B6B:#FF4757>Слишком много заглавных букв!</gradient>"
repeat: "<gradient:#FF6B6B:#FF4757>Не повторяйте символы!</gradient>"
similar: "<gradient:#FF6B6B:#FF4757>Не отправляйте одинаковые сообщения!</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОЧИСТКА ЧАТА │
# └─────────────────────────────────────────────────────────────────────────────┘
clearchat:
cleared: "&#04CADFЧат очищен администратором {player}"
cleared: "<gradient:#6BCB77:#4ECDC4>Чат очищен администратором {player}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ ОШИБКИ │
# └─────────────────────────────────────────────────────────────────────────────┘
errors:
no-permission: "&#04CADFНет прав!"
player-not-found: "&#04CADFИгрок не найден"
invalid-usage: "&#04CADFИспользование: {usage}"
no-permission: "<gradient:#FF6B6B:#FF4757>Нет прав!</gradient>"
player-not-found: "<gradient:#FF6B6B:#FF4757>Игрок не найден</gradient>"
invalid-usage: "<gradient:#FFA726:#FF9800>Использование: {usage}</gradient>"
# ┌─────────────────────────────────────────────────────────────────────────────┐
# │ СИСТЕМА МУТОВ │
# └─────────────────────────────────────────────────────────────────────────────┘
mute:
muted: "&#04CADFИгрок {player} замучен на {time}"
unmuted: "&#04CADFИгрок {player} размучен"
already-muted: "&#04CADFИгрок уже замучен"
not-muted: "&#04CADFИгрок не замучен"
you-muted: "&#04CADFВы замучены! Осталось: {time}"
permanent: "&#04CADFВы замучены навсегда!"
muted: "<gradient:#6BCB77:#4ECDC4>Игрок {player} замучен на {time}</gradient>"
unmuted: "<gradient:#6BCB77:#4ECDC4>Игрок {player} размучен</gradient>"
already-muted: "<gradient:#FFA726:#FF9800>Игрок уже замучен</gradient>"
not-muted: "<gradient:#FFA726:#FF9800>Игрок не замучен</gradient>"
you-muted: "<gradient:#FF6B6B:#FF4757>Вы замучены! Осталось: {time}</gradient>"
permanent: "<gradient:#FF6B6B:#FF4757>Вы замучены навсегда!</gradient>"

View file

@ -11,6 +11,7 @@ softdepend:
- PlayerPoints
- LuckPerms
- LibertyBans
- SkinsRestorer
commands:
g:
@ -73,6 +74,12 @@ commands:
permission: chat.clear
aliases: [cc, очиститьчат, сдуфксрфе, сс]
clearchatconfig:
description: Configure clear chat message
usage: /clearchatconfig <enable|disable|message|status> [text]
permission: lochat.clearchat.config
aliases: [ccc, настройкаочистки]
lochat:
description: LoChat admin command
usage: /lochat [reload]
@ -219,3 +226,9 @@ permissions:
lochat.mute.dur.perm:
description: Can mute permanently
default: op
lochat.clearchat.config:
description: Can configure clear chat message
default: op
lochat.heademoji.use:
description: Can use head emojis in chat
default: true