LoChat/README.md
loki5512344 6119feafcf chore: add GPL v3 license and update test artifacts
- Add LICENSE file with GNU General Public License v3
- Update README.md documentation
- Rebuild ChatFormatterTest class with latest changes
- Ensure project licensing compliance and clarity
2026-04-06 00:45:29 +02:00

388 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LoChat - Advanced Chat Plugin
Продвинутый чат плагин для Paper/Folia серверов с градиентными никами, модерацией и гибкой системой конфигурации.
## Сборка и локальный тестовый сервер
```bash
./gradlew runServer
```
Gradle задача `runServer` ([run-paper](https://github.com/jpenilla/run-paper)) скачивает Paper 1.21.4, собирает JAR плагина и кладёт его в `run/plugins`. Первый запуск долгий из-за загрузки. Остановка через `stop` в консоли сервера.
## Основные возможности
### Чат система
- Глобальный чат - общение между всеми игроками
- Локальный чат - общение в радиусе
- Личные сообщения - PM система с ответами
- Игнорирование - блокировка нежелательных игроков
- Упоминания - @player, @everyone, @here, @role
- Hover/Click события - интерактивные сообщения
- Кастомные сообщения входа/выхода/смерти с названием оружия
### Градиентные ники и префиксы
- Кастомные градиентные цвета (до 7 цветов)
- Готовые пресеты (огонь, океан, радуга и т.д.)
- Кастомные префиксы и суффиксы
- Интеграция с LuckPerms (префиксы и суффиксы с градиентом)
- Система покупки через PlayerPoints
- Кулдауны и ограничения
### Модерация
- Мут система с историей
- Бан система с временем и причиной
- Варны (предупреждения)
- Временные и постоянные наказания
- Скрытые муты (silent)
- Готовые причины наказаний
- Эскалация наказаний
### Фильтры чата
- Фильтр мата с защитой от обхода (х->x, о->o и т.д.)
- Антиспам и антифлуд
- CAPS фильтр
- URL и IP фильтр
- Фильтр скрытых ссылок (discord.gg, bit.ly и т.д.)
- Фильтр повторяющихся символов
- Настраиваемый список запрещенных слов
### RP команды
- /me - действия от третьего лица
- /do - описание действий
- /try - попытка действия с шансом
- /roll - бросок кубика
- Настраиваемый радиус и кулдауны
### Звуковые эффекты
- Звуки для PM и упоминаний
- Звуки для мутов/размутов
- Звуки для градиентов
- Звуки для команд
- Персональные настройки звуков
### Discord интеграция
- Webhook для отправки сообщений
- События входа/выхода/смерти
- Кастомные форматы и цвета
- Аватары игроков
- Фильтрация сообщений
## Структура конфигов
```
plugins/LoChat/
├── config.yml # Основной конфиг (все настройки в одном месте)
├── messages.yml # Сообщения плагина
├── custom-commands.yml # Кастомные команды
├── badwords.txt # Список запрещенных слов
│
├── config/
│ ├── appearance.yml # Внешний вид чата (префиксы, форматы, hover)
│ ├── discord.yml # Discord интеграция
│ ├── filters.yml # Настройки фильтров
│ ├── messages.yml # Дополнительные сообщения
│ ├── mute.yml # Настройки мутов
│ └── sounds.yml # Звуковые эффекты
│
└── data/
├── mutes.yml # Данные мутов
├── bans.yml # Данные банов
├── ignores.yml # Игнорирование
└── gradient-data.yml # Градиентные ники
```
## Быстрый старт
### Установка
1. Скачайте последнюю версию из Releases
2. Поместите JAR в папку `plugins/`
3. Перезапустите сервер
4. Настройте конфиги в `plugins/LoChat/`
### Первая настройка
1. **Основной конфиг** (`config.yml`):
- Настройте радиус локального чата
- Включите/отключите нужные функции
- Настройте цены на градиенты
- Настройте фильтры
2. **Фильтр мата** (`badwords.txt`):
- Добавьте свои запрещенные слова
- По одному слову на строку
- Строки с # игнорируются
3. **Внешний вид** (`config/appearance.yml`):
- Настройте префиксы чата (GLOBAL/LOCAL)
- Измените цвета и форматы
- Настройте hover подсказки
- Добавьте эмодзи
4. **Discord** (`config/discord.yml`):
- Вставьте URL вебхука
- Настройте форматы сообщений
- Включите нужные события
## Сборка из исходников
```bash
# Клонировать репозиторий
git clone https://codeberg.org/loki5512344/Lochat.git
cd Lochat
# Собрать проект
./gradlew build
# Jar файл будет в build/libs/
```
## Зависимости
### Обязательные
- Java 21+
- Paper 1.20.1+ или Folia
### Опциональные
- PlaceholderAPI - для плейсхолдеров
- LuckPerms - для градиентных префиксов/суффиксов
- PlayerPoints - для покупки градиентов
- LibertyBans - синхронизация мутов
- SkinsRestorer - поддержка скинов
## Команды
### Чат команды
- `/g <сообщение>` - глобальный чат
- `/l <сообщение>` - локальный чат
- `/msg <игрок> <сообщение>` - личное сообщение
- `/reply <сообщение>` - ответить на ЛС
- `/ignore <игрок>` - игнорировать игрока
- `/unignore <игрок>` - разигнорировать
- `/ignorelist` - список игнорируемых
### Градиенты
- `/color <hex1> [hex2] ...` - установить градиент
- `/prefix <текст>` - установить префикс
- `/aprefix <команда>` - админские команды градиентов
### Модерация
- `/lmute <игрок> [время] [-s] [причина]` - замутить
- `/lunmute <игрок> [-s]` - размутить
- `/lban <игрок> [время] [причина]` - забанить
- `/lunban <игрок>` - разбанить
- `/lwarn <игрок> [причина]` - выдать варн
- `/lmutelist` - список мутов
- `/lmutehistory <игрок>` - история мутов
### RP команды
- `/me <действие>` - действие от 3-го лица
- `/do <описание>` - описание действия
- `/try <попытка>` - попытка с шансом
- `/roll [число]` - бросок кубика
### Админские
- `/lochat reload` - перезагрузить конфиг
- `/clearchat` - очистить чат
- `/chatspy` - режим шпиона
- `/announce <сообщение>` - объявление
## Примеры использования
### Градиентный ник
```
/color #FF0000 #00FF00 #0000FF
```
Создаст радужный градиент от красного через зеленый к синему.
### Кастомный префикс
```
/prefix [VIP]
```
Установит префикс `[VIP]` перед ником.
### Настройка системы оплаты градиентов
#### Вариант 1: Через PlayerPoints (платно)
```yaml
# config.yml
gradient:
price-per-color: 50
prefix-price: 500
use-permission-instead-of-cost: false
```
#### Вариант 2: Через пермишены (бесплатно)
```yaml
# config.yml
gradient:
price-per-color: 0
prefix-price: 0
use-permission-instead-of-cost: true
```
Выдайте игрокам права:
```
/lp user <игрок> permission set gradient.color true
/lp user <игрок> permission set gradient.prefix true
/lp user <игрок> permission set gradient.bypass.cost true
```
### Основные пермишены
#### Градиенты
- `gradient.color` - доступ к /color
- `gradient.prefix` - доступ к /prefix
- `gradient.bypass.cost` - бесплатное использование
- `gradient.bypass.cooldown` - обход кулдауна
- `gradient.admin` - админские команды
#### Чат
- `lochat.chat.colors` - цветные сообщения
- `lochat.chat.global` - глобальный чат
- `lochat.chat.local` - локальный чат
- `lochat.pm` - личные сообщения
#### Модерация
- `lochat.mute` - мутить игроков
- `lochat.mute.silent` - скрытые муты
- `lochat.ban` - банить игроков
- `lochat.warn` - выдавать варны
#### Обход фильтров
- `lochat.bypass.swear` - обход мат-фильтра
- `lochat.bypass.spam` - обход антиспама
- `lochat.bypass.flood` - обход антифлуда
- `lochat.bypass.caps` - обход CAPS фильтра
- `lochat.bypass.urlfilter` - обход URL фильтра
- `lochat.bypass.cooldown` - обход кулдауна
### Мут игрока
```
/lmute Player123 1h Спам в чате
```
Замутит игрока на 1 час с причиной "Спам в чате".
### Скрытый мут
```
/lmute Player123 30m -s Нарушение правил
```
Замутит игрока скрытно (другие игроки не увидят уведомление).
### Бан с причиной
```
/lban Player123 7d Читы
```
Забанит игрока на 7 дней с причиной "Читы".
## Форматы времени
- `s` - секунды (30s = 30 секунд)
- `m` - минуты (15m = 15 минут)
- `h` - часы (2h = 2 часа)
- `d` - дни (7d = 7 дней)
- `perm` или `0` - навсегда
Примеры:
- `1h30m` - 1 час 30 минут
- `7d` - 7 дней
- `perm` - навсегда
## Плейсхолдеры
### Чат
- `{player}` - ник игрока
- `{player_prefix}` - префикс игрока (LuckPerms/градиент)
- `{player_suffix}` - суффикс игрока (LuckPerms/градиент)
- `{message}` - текст сообщения
- `{emoji}` - эмодзи префикса чата
- `{prefix}` - префикс чата (GLOBAL/LOCAL)
- `{separator}` - разделитель
### Hover
- `{player}` - ник игрока
- `{world}` - мир игрока
- `{ping}` - пинг
- `{gamemode}` - режим игры
- `{health}` - здоровье
- `{food}` - голод
### Смерть
- `{player}` - ник погибшего
- `{killer}` - ник убийцы
- `{weapon}` - название оружия
- `{death_message}` - стандартное сообщение смерти
## API для разработчиков
### Получение сервисов
```java
// Получить ServiceRegistry
ServiceRegistry registry = plugin.getServiceRegistry();
// Получить сервис чата
ChatService chatService = registry.get(ChatService.class);
// Отправить глобальное сообщение
chatService.sendGlobalMessage(player, "Привет!");
// Получить сервис мутов
MuteService muteService = registry.get(MuteService.class);
// Проверить мут
if (muteService.isMuted(player.getUniqueId())) {
// Игрок замучен
}
```
### Создание кастомного фильтра
```java
public class MyFilter implements MessageFilter {
@Override
public FilterResult filter(Player player, String message) {
if (message.contains("запрещено")) {
return FilterResult.blocked("Сообщение заблокировано");
}
return FilterResult.ok(message);
}
}
```
## Известные проблемы
- Градиенты могут не отображаться в некоторых версиях клиента
- Фильтры могут блокировать легитимные сообщения (настраивается)
## Статистика проекта
- Версия: 1.5.5
- Строк кода: 9000+
- Конфигов: 10+
- Команд: 30+
## Вклад в проект
Проект находится в активной разработке. Pull requests приветствуются.
1. Fork репозитория
2. Создайте ветку для фичи (`git checkout -b feature/amazing-feature`)
3. Commit изменения (`git commit -m 'Add amazing feature'`)
4. Push в ветку (`git push origin feature/amazing-feature`)
5. Откройте Pull Request
## Лицензия
GNU General Public License v3.0 - см. файл [LICENSE](LICENSE)
Это свободное программное обеспечение. Вы можете распространять и/или модифицировать его в соответствии с условиями GNU General Public License версии 3.
## Автор
Loki Development Team
- Codeberg: @loki5512344
## Ссылки
- [Codeberg Repository](https://codeberg.org/loki5512344/Lochat)
- [Issues](https://codeberg.org/loki5512344/Lochat/issues)