No description
Find a file
2026-06-10 23:52:46 +02:00
.github fix(ci): исправить права gradlew (+x) и обновить workflows 2026-06-10 23:52:46 +02:00
bin build: rebuild artifacts and update CI workflows 2026-04-07 13:45:25 +02:00
config/checkstyle Update to Minecraft 1.21.8, add checkstyle, fix compilation errors 2026-02-24 00:04:03 +01:00
gradle/wrapper Initial commit: LoChat v1.0.0 with Gradient module 2025-12-29 14:57:49 +01:00
libs chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +02:00
src build: rebuild artifacts and update CI workflows 2026-04-07 13:45:25 +02:00
.gitignore chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +02:00
build.gradle.kts build: rebuild artifacts and update CI workflows 2026-04-07 13:45:25 +02:00
CODE_OF_CONDUCT.md docs: добавить Code of Conduct, Security Policy и Issue Templates 2026-04-12 23:00:20 +02:00
gradle.properties v1.5.0: Добавлены кастомные команды, алиасы, цвета чата, многоядерная сборка 2025-12-30 12:29:39 +01:00
gradlew fix(ci): исправить права gradlew (+x) и обновить workflows 2026-06-10 23:52:46 +02:00
gradlew.bat Initial commit: LoChat v1.0.0 with Gradient module 2025-12-29 14:57:49 +01:00
LICENSE chore: add GPL v3 license and update test artifacts 2026-04-06 00:45:29 +02:00
README.md docs: добавить Code of Conduct, Security Policy и Issue Templates 2026-04-12 23:00:20 +02:00
SECURITY.md docs: добавить Code of Conduct, Security Policy и Issue Templates 2026-04-12 23:00:20 +02:00
settings.gradle.kts chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +02:00
TODO.md chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +02:00

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         # Градиентные ники

Быстрый старт

Установка

  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 вебхука
    • Настройте форматы сообщений
    • Включите нужные события

Сборка из исходников

# Клонировать репозиторий
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 - доступ к /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 для разработчиков

Получение сервисов

// Получить 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+

Вклад в проект

Мы приветствуем вклад в развитие проекта! Перед началом работы ознакомьтесь с:

Как внести вклад

  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

Типы вклада

  • 🐛 Исправление багов
  • ✨ Новые функции
  • 📝 Улучшение документации
  • 🎨 Улучшение UI/UX
  • ⚡ Оптимизация производительности
  • 🔒 Улучшение безопасности

Лицензия

GNU General Public License v3.0 - см. файл LICENSE

Это свободное программное обеспечение. Вы можете распространять и/или модифицировать его в соответствии с условиями GNU General Public License версии 3.

Автор

Loki Development Team

  • Codeberg: @loki5512344

Ссылки