No description
Find a file
loki5512344 4f6eaf35e9 chore: clean up documentation and rebuild with badwords filter
- Remove outdated CODE_REVIEW_RU.md and REFACTORING_SERVICES.md documentation
- Add badwords.txt resource file for swear filter functionality
- Rebuild compiled classes with updated filter and configuration logic
- Update all configuration files (appearance, discord, filters, messages)
- Rebuild core components: ConfigManager, PluginInitializer, SwearFilter, GradientModule, PrefixService, PlayerEventListener, EnhancedChatRenderer
- Consolidate build artifacts with source changes for consistency
2026-04-06 00:38:34 +02:00
bin chore: clean up documentation and rebuild with badwords filter 2026-04-06 00:38:34 +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 chore: clean up documentation and rebuild with badwords filter 2026-04-06 00:38:34 +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 chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +02:00
gradle.properties v1.5.0: Добавлены кастомные команды, алиасы, цвета чата, многоядерная сборка 2025-12-30 12:29:39 +01:00
gradlew Initial commit: LoChat v1.0.0 with Gradient module 2025-12-29 14:57:49 +01:00
gradlew.bat Initial commit: LoChat v1.0.0 with Gradient module 2025-12-29 14:57:49 +01:00
README.md chore: update .gitignore and build.gradle.kts for local server testing 2026-04-01 16:09:15 +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.4 (как paper-api в build.gradle.kts), собирает JAR плагина и кладёт его в run/plugins. Первый запуск долгий из‑за загрузки; остановка — stop в консоли сервера.

✨ Основные возможности

💬 Чат система

  • Глобальный чат - общение между всеми игроками
  • Локальный чат - общение в радиусе
  • Личные сообщения - PM система с ответами
  • Игнорирование - блокировка нежелательных игроков
  • Упоминания - @player, @everyone, @here, @role
  • Hover/Click события - интерактивные сообщения

🎨 Градиентные ники

  • Кастомные градиентные цвета (до 7 цветов)
  • Готовые пресеты (огонь, океан, радуга и т.д.)
  • Кастомные префиксы
  • Интеграция с LuckPerms
  • Система покупки через PlayerPoints
  • Кулдауны и ограничения

🛡️ Модерация

  • Мут система с историей
  • Временные и постоянные муты
  • Скрытые муты (silent)
  • Готовые причины мутов
  • Эскалация наказаний
  • Автоматические муты

🔍 Фильтры

  • Фильтр мата (настраиваемый словарь)
  • Антиспам и антифлуд
  • CAPS фильтр
  • URL и IP фильтр
  • Фильтр рекламы
  • Фильтр повторов

🎯 Кастомные команды

  • /help, /rules, /discord - информационные
  • /coords, /ping, /stats - утилиты
  • /me - действия от третьего лица
  • /sounds - управление звуками
  • Полностью настраиваемые в конфиге

🔊 Звуковые эффекты

  • Звуки для PM и упоминаний
  • Звуки для мутов/размутов
  • Звуки для градиентов
  • Звуки для команд
  • Персональные настройки звуков

📊 Статистика

  • Статистика сообщений
  • Топ игроков по активности
  • Статистика мутов
  • Статистика фильтров
  • Автоматическая очистка старых данных

📁 Структура проекта

LoChat/
├── src/main/
│   ├── java/com/loki/lochat/
│   │   ├── api/                          # API интерфейсы
│   │   │   ├── filter/                   # Фильтры сообщений
│   │   │   └── service/                  # Сервисы (Chat, Mute, PM и т.д.)
│   │   ├── commands/                     # Команды плагина
│   │   │   ├── custom/                   # Кастомные команды
│   │   │   │   ├── HelpCommand.java
│   │   │   │   ├── RulesCommand.java
│   │   │   │   ├── DiscordCommand.java
│   │   │   │   ├── CoordsCommand.java
│   │   │   │   ├── PingCommand.java
│   │   │   │   ├── StatsCommand.java
│   │   │   │   ├── MeCommand.java
│   │   │   │   └── SoundsCommand.java
│   │   │   ├── CustomCommandManager.java
│   │   │   ├── MuteCommand.java
│   │   │   ├── UnmuteCommand.java
│   │   │   └── ... (другие команды)
│   │   ├── config/                       # Конфигурация
│   │   ├── core/                         # Реализации
│   │   │   ├── filter/                   # Реализации фильтров
│   │   │   │   ├── AdvancedMessageFilter.java
│   │   │   │   ├── CapsFilter.java
│   │   │   │   ├── CooldownFilter.java
│   │   │   │   └── MuteFilter.java
│   │   │   ├── registry/                 # ServiceRegistry (DI)
│   │   │   └── service/                  # Реализации сервисов
│   │   │       ├── ChatServiceImpl.java
│   │   │       ├── MuteServiceImpl.java
│   │   │       ├── PMServiceImpl.java
│   │   │       └── ... (другие сервисы)
│   │   ├── data/                         # Модели данных
│   │   │   └── model/
│   │   │       ├── ChatMessage.java
│   │   │       └── MuteData.java
│   │   ├── gradient/                     # Градиентные ники
│   │   │   ├── commands/                 # Команды градиентов
│   │   │   ├── config/                   # Конфиг градиентов
│   │   │   ├── data/                     # Данные градиентов
│   │   │   ├── gui/                      # GUI для градиентов
│   │   │   ├── hooks/                    # LuckPerms интеграция
│   │   │   ├── listeners/                # Слушатели градиентов
│   │   │   └── util/                     # Утилиты градиентов
│   │   ├── integrations/                 # Интеграции с плагинами
│   │   │   ├── PlaceholderAPIHook.java
│   │   │   ├── LibertyBansHook.java
│   │   │   └── SkinsRestorerHook.java
│   │   ├── listener/                     # Слушатели событий
│   │   ├── managers/                     # Менеджеры
│   │   ├── util/                         # Утилиты (Folia)
│   │   ├── utils/                        # Утилиты (Formatter, Mention)
│   │   └── LoChat.java                   # Главный класс
│   │
│   └── resources/                        # Ресурсы
│       ├── config/                       # Конфигурационные файлы
│       │   ├── chat-formats.yml          # Форматы чата
│       │   ├── filters.yml               # Настройки фильтров
│       │   ├── gradient-config.yml       # Конфиг градиентов
│       │   ├── automessages.yml          # Автосообщения
│       │   ├── mute-config.yml           # Система мутов
│       │   ├── sounds.yml                # Звуковые эффекты
│       │   ├── database.yml              # База данных
│       │   ├── integrations.yml          # Интеграции
│       │   └── custom-commands.yml       # Кастомные команды
│       │
│       ├── data/                         # Файлы данных
│       │   ├── data.yml                  # Основные данные
│       │   ├── players.yml               # Данные игроков
│       │   ├── gradients.yml             # Градиентные ники
│       │   ├── mutes.yml                 # Муты и история
│       │   ├── ignores.yml               # Игнорирование
│       │   ├── statistics.yml            # Статистика
│       │   └── filter-words.json         # Запрещенные слова
│       │
│       ├── config.yml                    # Основной конфиг
│       ├── messages.yml                  # Сообщения
│       └── plugin.yml                    # Конфиг плагина
│
├── build.gradle.kts                      # Gradle конфиг
└── README.md                             # Этот файл

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

Установка

  1. Скачайте последнюю версию из Releases
  2. Поместите LoChat-1.5.5-1.20.1.jar в папку plugins/
  3. Перезапустите сервер
  4. Настройте конфиги в plugins/LoChat/

Первая настройка

  1. Основной конфиг (config.yml):

    • Настройте радиус локального чата
    • Включите/отключите нужные функции
    • Настройте Discord и Website ссылки
  2. Сообщения (messages.yml):

    • Измените сообщения на свой язык
    • Настройте цвета и форматирование
  3. Фильтры (config/filters.yml):

    • Настройте фильтр мата
    • Добавьте свои запрещенные слова в data/filter-words.json
    • Настройте антиспам и другие фильтры
  4. Градиенты (config/gradient-config.yml):

    • Настройте стоимость градиентов
    • Добавьте свои пресеты
    • Настройте интеграцию с PlayerPoints

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

# Клонировать репозиторий
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] - размутить
  • /lmutelist - список мутов
  • /lmutehistory <игрок> - история мутов
  • /lmuteblame <модератор> - муты модератора

Кастомные команды

  • /help - помощь
  • /rules - правила
  • /discord - Discord сервера
  • /coords - координаты
  • /ping [игрок] - пинг
  • /stats [игрок] - статистика
  • /me <действие> - действие от 3-го лица
  • /sounds [on|off] - управление звуками

Админские

  • /lochat reload - перезагрузить конфиг
  • /clearchat - очистить чат
  • /chatspy - режим шпиона
  • /announce <сообщение> - объявление

🎨 Примеры использования

Градиентный ник

/color #FF0000 #00FF00 #0000FF

Создаст радужный градиент от красного через зеленый к синему.

Кастомный префикс

/prefix [VIP]

Установит префикс [VIP] перед ником.

Настройка системы оплаты градиентов

Вариант 1: Через PlayerPoints (платно)

# config/gradient-config.yml
gradient:
  price-per-color: 50          # 50 поинтов за каждый цвет
  prefix-price: 500            # 500 поинтов за префикс
  use-permission-instead-of-cost: false

Игроки платят поинтами за установку градиентов.

Вариант 2: Через пермишены (бесплатно)

# config/gradient-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

Или через группу:

/lp group vip permission set gradient.color true
/lp group vip permission set gradient.prefix true
/lp group vip permission set gradient.bypass.cost true

Основные пермишены градиентов

Пермишен Описание
gradient.color Доступ к команде /color
gradient.prefix Доступ к команде /prefix
gradient.bypass.cost Бесплатное использование (обход стоимости)
gradient.bypass.cooldown Обход кулдауна
gradient.admin Админские команды /aprefix
gradient.colors.5 Максимум 5 цветов в градиенте
gradient.colors.10 Максимум 10 цветов в градиенте
gradient.colors.unlimited Неограниченное количество цветов

Текущие цены (по умолчанию)

  • Градиент: 50 поинтов за каждый цвет

    • 1 цвет = 50 поинтов
    • 2 цвета = 100 поинтов
    • 3 цвета = 150 поинтов
    • и т.д.
  • Префикс: 500 поинтов (одноразовая покупка)

Цены настраиваются в config/gradient-config.yml

Мут игрока

/lmute Player123 1h Спам в чате

Замутит игрока на 1 час с причиной "Спам в чате".

Скрытый мут

/lmute Player123 30m -s Нарушение правил

Замутит игрока скрытно (другие игроки не увидят уведомление).

🔌 API для разработчиков

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

// Получить сервис чата
ChatService chatService = ServiceRegistry.getChatService();

// Отправить глобальное сообщение
chatService.sendGlobalMessage(player, "Привет!");

// Получить сервис мутов
MuteService muteService = ServiceRegistry.getMuteService();

// Проверить мут
if (muteService.isMuted(player.getUniqueId())) {
    // Игрок замучен
}

Создание кастомного фильтра

public class MyFilter implements MessageFilter {
    @Override
    public FilterResult filter(Player player, String message) {
        if (message.contains("запрещено")) {
            return FilterResult.block("Сообщение заблокировано");
        }
        return FilterResult.allow();
    }
    
    @Override
    public String getName() {
        return "MyFilter";
    }
    
    @Override
    public int getPriority() {
        return 10;
    }
}

// Регистрация
FilterManager.registerFilter(new MyFilter());

🐛 Известные проблемы

  • Градиенты могут не отображаться в некоторых версиях клиента
  • Фильтры могут блокировать легитимные сообщения (настраивается)

📊 Статистика проекта

  • Версия: 1.5.5-1.20.1
  • Коммитов: 80+
  • Строк кода: 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

📄 Лицензия

Proprietary - Все права защищены

👥 Автор

Loki Development Team

🔗 Ссылки


⭐ Если проект понравился, поставьте звезду на Codeberg!