Skip to content

v2.4

Latest

Choose a tag to compare

@fcplugins-dev fcplugins-dev released this 03 Aug 13:40
· 1 commit to main since this release

Добавлено

  • Интеграция с hClans (флаг hClans: true в config.yml): клановый канал работает через ru.he3hauka.hclans.api.ClanApi — проверка наличия клана, имя клана, группировка сообщений.
  • Встроенные контекстные плейсхолдеры: {ctx:sender}, {ctx:player}, {ctx:message}, {ctx:world} (и варианты {context:...}) — резолвятся в форматах чата, приватов и бродкастов.
  • Встроенный action handler copy + команда /fcchat action <id> [message] с правами fcchat.action.<id>.
  • Команда /fcchat channel <id> и её подсказки в tab-complete показывают текущий канал игрока.
  • Таб-комплит для /fcchat action.
  • Git-репозиторий с исходниками, сообщения коммитов на русском.

Изменено

  • Клановый канал определяется по id: "clan" в chat/channel.yml; убрана placeholder-механика (input/output).
  • Интеграция TowerClans переписана под новую API (TowerClansAPI / ClanManager), getClanManager() берётся из инстанса плагина.
  • Проверка наличия клана выполняется по актуальному реестру TowerClans (getClans() + сверка участников по UUID) — кэш ModifiedPlayer больше не используется.
  • Интеграции TowerClans и hClans работают в связке: приоритет у TowerClans, иначе hClans.
  • clearChat переведён с deprecated Bukkit.broadcastMessage на цикл по игрокам, анонс об очистке получает и отправитель.
  • switchChannel корректно обрабатывает null/пустой id (переводит в default).
  • AntiSpam.isSpam использует реальные значения времени и кулдауна из moderation.yml.
  • Hover цензурированных сообщений показывает только само сообщение, а не всю строку формата.

Исправлено

  • Антиспам не срабатывал: в isSpam остались неинициализированные переменные от декомпиляции, из-за которых условие всегда было ложным.
  • Оригинал заблокированного фильтром сообщения был виден всем при наведении без права fcchat.read — теперь hover с оригиналом доступен только с этим правом (в локальном и глобальном чате; в каналах уже было).
  • После распуска клана в TowerClans игрок оставался в клановом канале: кэш ModifiedPlayer держал устаревшую ссылку на распущенный клан — проверка переведена на живой реестр кланов.
  • Дублирование слушателей и таймеров при /fcchat reload:
    • reloadEventsWithPriority снимает и старые слушатели ChatGame;
    • AutoMessages.start() идемпотентен (останавливает предыдущий таймер);
    • ChatGame сбрасывает активную игру при settings.enabled: false в chatgame.yml.

Оптимизация и рефакторинг

  • Оживлено публичное API: каждый метод FcChatApi теперь работает и используется:
    • getChannels() / getPlayerChannel(UUID) / isCommandEnabled() подключены в плагин (tab-complete, команды);
    • registerContextPlaceholder / registerActionHandler / executeAction обеспечены встроенными реализациями.