| .github | ||
| bin | ||
| config/checkstyle | ||
| gradle/wrapper | ||
| libs | ||
| src | ||
| .gitignore | ||
| build.gradle.kts | ||
| CODE_OF_CONDUCT.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| SECURITY.md | ||
| settings.gradle.kts | ||
| TODO.md | ||
LoChat - Advanced Chat Plugin
Мощный чат плагин для Paper/Folia серверов с градиентными никами, продвинутой модерацией и гибкой конфигурацией.
Сборка и локальный тестовый сервер
./gradlew runServer
Gradle задача runServer (run-paper) скачивает Paper 1.21.1, собирает 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 # Градиентные ники
Быстрый старт
Установка
- Скачайте последнюю версию из Releases
- Поместите JAR в папку
plugins/ - Перезапустите сервер
- Настройте конфиги в
plugins/LoChat/
Первая настройка
-
Основной конфиг (
config.yml):- Настройте радиус локального чата
- Включите/отключите нужные функции
- Настройте цены на градиенты
- Настройте фильтры
-
Фильтр мата (
badwords.txt):- Добавьте свои запрещенные слова
- По одному слову на строку
- Строки с # игнорируются
-
Внешний вид (
config/appearance.yml):- Настройте префиксы чата (GLOBAL/LOCAL)
- Измените цвета и форматы
- Настройте hover подсказки
- Добавьте эмодзи
-
Discord (
config/discord.yml):- Вставьте URL вебхука
- Настройте форматы сообщений
- Включите нужные события
Сборка из исходников
# Клонировать репозиторий
git clone https://codeberg.org/loki5512344/Lochat.git
cd Lochat
# Собрать проект
./gradlew build
# Jar файл будет в build/libs/
Зависимости
Обязательные
- Java 21+
- Paper 1.21.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 (платно)
# config.yml
gradient:
price-per-color: 50
prefix-price: 500
use-permission-instead-of-cost: false
Вариант 2: Через пермишены (бесплатно)
# 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- доступ к /colorgradient.prefix- доступ к /prefixgradient.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 для разработчиков
Получение сервисов
// Получить 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())) {
// Игрок замучен
}
Создание кастомного фильтра
public class MyFilter implements MessageFilter {
@Override
public FilterResult filter(Player player, String message) {
if (message.contains("запрещено")) {
return FilterResult.blocked("Сообщение заблокировано");
}
return FilterResult.ok(message);
}
}
Известные проблемы
- Градиенты могут некорректно отображаться в старых версиях клиента (< 1.16)
- Некоторые фильтры могут блокировать легитимные сообщения (настраивается в
config/filters.yml)
Статистика проекта
- Версия: 1.5.5
- Строк кода: 9000+
- Конфигов: 10+
- Команд: 30+
Вклад в проект
Мы приветствуем вклад в развитие проекта! Перед началом работы ознакомьтесь с:
- Code of Conduct - правила поведения в сообществе
- Security Policy - политика безопасности
Как внести вклад
- Fork репозитория
- Создайте ветку для фичи (
git checkout -b feature/amazing-feature) - Commit изменения (
git commit -m 'Add amazing feature') - Push в ветку (
git push origin feature/amazing-feature) - Откройте Pull Request
Типы вклада
- 🐛 Исправление багов
- ✨ Новые функции
- 📝 Улучшение документации
- 🎨 Улучшение UI/UX
- ⚡ Оптимизация производительности
- 🔒 Улучшение безопасности
Лицензия
GNU General Public License v3.0 - см. файл LICENSE
Это свободное программное обеспечение. Вы можете распространять и/или модифицировать его в соответствии с условиями GNU General Public License версии 3.
Автор
Loki Development Team
- Codeberg: @loki5512344