Иконка ресурса

Плагин mcFriends — друзья и личные сообщения 1.0.12

Скриншоты
mcFriends — друзья и личные сообщения
Для версий
  1. 1.12.+
  2. 1.13.+
  3. 1.16.+
  4. 1.17.+
  5. 1.18+
  6. 1.19.+
  7. BungeeCord
  8. Velocity
  9. 1.20.+
  10. 1.21.+

Друзья на вашем сервере​


mcFriends добавляет понятную систему друзей: игроки могут отправлять и принимать заявки, хранить список друзей, писать друг другу личные сообщения и при желании явно переключаться в личный диалог. Плагин подходит как для отдельного сервера, так и для сети через BungeeCord или Velocity.

Для владельца сервера

Настройте общую систему друзей для одного сервера или сети. Выберите, кто обрабатывает личные команды, и включите нужные дополнительные модули. Игроки управляют своим общением через меню, а комментарии в конфигурации помогают разобраться с настройками.

Для игроков

  • Список друзей и запросы на добавление.
  • Личные сообщения только между принятыми друзьями.
  • Явно выбранный личный диалог с одним другом.
  • Меню друзей и личных настроек.
  • Управление приватностью, запросами, сообщениями, блокировкой и видимостью.
  • Русскую локализацию и возможность переключения языка.
  • Сохранение социального состояния после переподключения.

Как начать общаться​


Основные действия не требуют запоминать сложные команды. Чтобы отправить заявку, достаточно:

Код:
/friend add Ник

Получатель увидит уведомление с подсказкой и кликабельными действиями для принятия или отклонения заявки. После подтверждения дружбы игроки могут писать друг другу:

Код:
/msg Ник Текст

Сообщение постороннему игроку не отправляется: mcFriends объясняет, что сначала нужно стать друзьями.

Что умеет mcFriends​


Личный диалог

Кроме отдельных команд сообщений, игрок может явно выбрать личный диалог с другом. После этого обычный текст, введённый в чат, направляется выбранному собеседнику. Плагин показывает участников разговора, их префиксы и само сообщение, поэтому служебное уведомление не заменяет содержимое переписки.

Входящее личное сообщение само по себе не меняет выбранного адресата. Это защищает от ситуации, когда ответ случайно уходит не тому человеку. При выходе из выбранного диалога игрок снова пишет в обычный чат. Для выбора собеседника и выхода используются предусмотренные плагином действия и подсказки интерфейса.

Личный диалог рассчитан на двух игроков. mcFriends не является групповым чатом или голосовой связью.

Совместная работа с личными сообщениями других плагинов

По умолчанию mcFriends перехватывает настроенные команды личных сообщений. Владельцу доступен параметр:

YAML:
commands:
  intercept-private-messages: false

При значении false такие команды остаются другим плагинам, а собственные функции дружбы mcFriends продолжают работать. Отдельно настраиваются списки псевдонимов команд и перехват команд с пространством имён.

Совместная работа проверялась с CMI и Essentials на BungeeCord и Velocity как с включённым, так и с выключенным перехватом, обычными игроками без OP. В проверенных интеграциях учитываются блокировки, права, мут и игнорирование. Это не означает автоматическую совместимость с любым неизвестным плагином, который самостоятельно изменяет чат или личные сообщения.

Меню и настройки

У mcFriends есть меню друзей и персональных настроек. При переходах между экранами анимация меню сохраняется. Игрок может управлять доступностью запросов, личных сообщений, видимостью и блокировками в предусмотренных настройках. Текст и названия элементов меню используют контрастные цвета; чёрный текст в меню не применяется, чтобы подписи оставались видимыми.

Комментарии в конфигурации объясняют назначение параметров. Полная конфигурация приведена в конце страницы.

Один сервер и сеть

Для отдельного сервера можно использовать H2. Для общей системы друзей в сети поддерживаются MariaDB и PostgreSQL. В сетевой схеме необходимо правильно назначить роли серверов и настроить подключение к общей базе данных. Секреты базы передаются отдельно от открытой конфигурации.

Для настроенной прокси-сети владелец также может включить переход на сервер друга. Перед переходом действует задержка, после которой повторно проверяются права, дружба, видимость и разрешение самого друга. Если игрок успел переподключиться, ожидающий переход отменяется.

Это именно переход между серверами сети, а не телепортация к координатам друга внутри игрового мира.

Дополнительная защита между друзьями

Модуль защиты от урона между друзьями по умолчанию выключен. Если владелец сервера его включает, друзья защищены друг от друга, пока оба игрока не разрешат бой в своих настройках.

Модуль относится к предусмотренному взаимодействию между друзьями и не заявляется как глобальная защита от любого возможного источника урона.

Где пригодится

Друзья могут продолжать переписку на разных серверах одной настроенной сети. Для долгого разговора удобно явно выбрать собеседника, а для короткого сообщения — указать друга в команде. Нежелательное общение ограничивается настройками приватности и блокировкой.

В игре​


Ниже показаны настоящие игровые меню, заявки и переписка текущей версии.



Команды и права​


Для основных действий используются отдельные команды
Код:
/friend
,
Код:
/friends
,
Код:
/msg
и
Код:
/reply
. Справка
Код:
/friend help
разделена на четыре страницы, чтобы команды и их назначение было проще посмотреть прямо в игре.

Если команда введена без обязательного ника или текста, плагин сообщает, какого аргумента не хватает. Там, где это поддерживает клиент, Tab помогает с именами: при добавлении друга предлагаются видимые игроки онлайн, а для личного сообщения — подходящие друзья. Скрытые игроки через такие подсказки не раскрываются.

Сообщения поддерживают кириллицу и обычный Unicode.

Обычные игроки получают права mcfriends.use и mcfriends.message по умолчанию. Административное право mcfriends.admin по умолчанию относится к OP. При настройке группы проверьте, что нужные игроку права не запрещены. Справка показывает доступные действия и их аргументы.

Совместимость и зависимости​


Поставляется один JAR для Bukkit, Spigot, Paper, Purpur, BungeeCord и Velocity. Нужная версия Java определяется требованиями используемого ядра. Поддержка Folia не заявляется.

Запуск и корректная остановка проверялись на выбранных сборках старых версий вплоть до 26.2, а также на BungeeCord и Velocity 3.4 и 4.0. Игровые меню отдельно проверялись на 1.12.2, 1.13.2, 1.16.5 и 1.21.11.

Настоящим клиентом Minecraft 26.2 проверялись команды, подсказки, дружба и точная доставка сообщений на Paper 26.2, а также через BungeeCord и Velocity 4.0. Это не является обещанием проверки каждого меню или каждой существующей сборки 26.2.

Обязательных дополнительных плагинов для основного mcFriends нет. Для общей сети нужна MariaDB или PostgreSQL. Дополнение для mcProfile устанавливается только вместе с mcProfile.

Установка и обновление​


Распакуйте архив перед установкой: серверу нужен файл mcFriends-1.0.12.jar. В комплекте также находится необязательное дополнение mcFriends-mcProfile-addon-1.0.1.jar для меню mcProfile; без mcProfile его устанавливать не нужно.

Порядок установки:

  • Сделать резервную копию.
  • Полностью остановить игровой сервер или прокси.
  • Поместить JAR в папку
    Код:
    plugins
    на нужных ролях выбранной схемы.
  • Настроить параметры mcFriends и, при необходимости, общую базу данных.
  • Запустить сервер и проверить журнал запуска.
  • Проверить основные команды обычным игроком без административных прав.

Использовать
Код:
/reload
для установки или обновления не рекомендуется.

Поддержка: создать обращение.

Настройки​


YAML:
# Назначение: Версия структуры файла. Схема 1 загружается с нормализацией команд в собственные имена схемы 2.
# @config Тип: целое число | Допустимо: 2; старая схема 1 принимается с нормализацией команд | Единица: нет | По умолчанию: 2 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
config-version: 2

# Назначение: Роль этой копии плагина в сети серверов.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
node:
  # Назначение: AUTO сам выбирает роль; также доступны STANDALONE, PROXY и BACKEND.
  # @config Тип: строка | Допустимо: AUTO, STANDALONE, PROXY или BACKEND | Единица: нет | По умолчанию: AUTO | Зависимость: AUTO использует адаптер текущей платформы; PROXY недопустим на Bukkit, BACKEND недопустим на прокси; STANDALONE требует оба multi-флага false
  mode: AUTO
  # Назначение: Общее имя сети. Оно должно совпадать на всех её прокси и игровых серверах.
  # @config Тип: строка | Допустимо: [A-Za-z0-9][A-Za-z0-9_.-]{0,63} | Единица: нет | По умолчанию: default | Зависимость: совпадает во всей одной сети; разные сети не должны видеть данные друг друга
  network-id: default
  # Назначение: Уникальное имя именно этой копии плагина. Замените change-me перед запуском сети.
  # @config Тип: строка | Допустимо: [A-Za-z0-9][A-Za-z0-9_.-]{0,63}; change-me запрещено при multi-proxy или multi-server | Единица: нет | По умолчанию: change-me | Зависимость: уникален среди одновременно работающих копий одной сети
  node-id: change-me
  # Назначение: Имя прокси для режима PROXY; пустое значение использует node-id.
  # @config Тип: строка | Допустимо: пустая строка либо [A-Za-z0-9][A-Za-z0-9_.-]{0,63} | Единица: нет | По умолчанию: '' | Зависимость: идентификатор прокси в присутствии и доставке; пустое значение использует node-id
  proxy-id: ''
  # Назначение: Имя игрового сервера для режима BACKEND; пустое значение использует node-id.
  # @config Тип: строка | Допустимо: пустая строка либо [A-Za-z0-9][A-Za-z0-9_.-]{0,63} | Единица: нет | По умолчанию: '' | Зависимость: идентификатор игрового сервера в присутствии и доставке; пустое значение использует node-id
  server-id: ''

# Назначение: Хранилище друзей, заявок, настроек и личных сообщений.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
database:
  # Назначение: Тип базы: H2 для одного сервера, MARIADB или POSTGRESQL для сети.
  # @config Тип: строка | Допустимо: H2, MARIADB или POSTGRESQL | Единица: нет | По умолчанию: H2 | Зависимость: H2 допускается только при multi-proxy=false и multi-server=false; сеть требует общей MariaDB или PostgreSQL
  type: H2
  # Назначение: JDBC-адрес базы. Для сетевого режима укажите отдельную общую базу mcFriends.
  # @config Тип: строка | Допустимо: непустой JDBC-адрес выбранного типа без user/password/token в параметрах; для удалённой SQL-базы sslMode=verify-full | Единица: нет | По умолчанию: jdbc:h2:./plugins/mcFriends/data/friends;AUTO_SERVER=FALSE | Зависимость: схема адреса совпадает с database.type; пароль берётся отдельно; loopback разрешён без удалённого TLS
  jdbc-url: jdbc:h2:./plugins/mcFriends/data/friends;AUTO_SERVER=FALSE
  # Назначение: Пользователь базы данных.
  # @config Тип: строка | Допустимо: строка, в том числе пустая; не пароль | Единица: нет | По умолчанию: sa | Зависимость: учётная запись должна иметь доступ только к выбранной базе и таблицам mcFriends
  username: sa
  # Назначение: Имя переменной окружения с паролем. Сам пароль в config.yml писать нельзя.
  # @config Тип: строка | Допустимо: имя переменной окружения или пустая строка; не значение пароля | Единица: нет | По умолчанию: MCFRIENDS_DB_PASSWORD | Зависимость: заданная переменная имеет приоритет над password-file; для SQL-сети пароль обязателен
  password-env: MCFRIENDS_DB_PASSWORD
  # Назначение: Альтернатива переменной: путь к закрытому файлу, содержащему только пароль.
  # @config Тип: строка | Допустимо: путь к файлу пароля или пустая строка; не значение пароля | Единица: нет | По умолчанию: '' | Зависимость: используется при отсутствии значения password-env; доступ к файлу оставляйте только владельцу процесса
  password-file: ''
  # Назначение: Префикс таблиц mcFriends в выбранной базе.
  # @config Тип: строка | Допустимо: [A-Za-z][A-Za-z0-9_]{0,31} | Единица: нет | По умолчанию: mcfriends_ | Зависимость: одинаков во всех копиях одной сети; изменение выбирает другой набор таблиц, а не переименовывает старые
  table-prefix: mcfriends_
  # Назначение: Максимальное число одновременных соединений с базой.
  # @config Тип: целое число | Допустимо: 1..64 | Единица: соединения | По умолчанию: 4 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  pool-size: 4
  # Назначение: Сколько миллисекунд ждать соединения с базой перед безопасным отказом запуска.
  # @config Тип: целое число | Допустимо: 1..60000 | Единица: миллисекунды | По умолчанию: 10000 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  connection-timeout-ms: 10000

# Назначение: Обмен присутствием и сообщениями между узлами одной сети.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
network:
  # Назначение: Включите, если игроков принимает больше одного прокси.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: true требует общей MariaDB/PostgreSQL и уникального node-id; несовместимо со STANDALONE
  multi-proxy: false
  # Назначение: Включите, если mcFriends установлен более чем на одном игровом сервере.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: true требует общей MariaDB/PostgreSQL и уникального node-id; несовместимо со STANDALONE
  multi-server: false
  # Назначение: Настройки отметок «игрок в сети».
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  presence:
    # Назначение: Как часто активный узел обновляет присутствие игрока, в миллисекундах.
    # @config Тип: целое число | Допустимо: 1000..300000 | Единица: миллисекунды | По умолчанию: 10000 | Зависимость: ttl-ms должен быть не меньше удвоенного интервала; слишком редкое обновление задерживает статус
    heartbeat-ms: 10000
    # Назначение: Через сколько миллисекунд без обновления игрок считается вышедшим.
    # @config Тип: целое число | Допустимо: 3000..1800000; не менее двух heartbeat-ms | Единица: миллисекунды | По умолчанию: 35000 | Зависимость: учитывает только свежие отметки; respect-vanish дополнительно скрывает неизвестное/скрытое присутствие
    ttl-ms: 35000
  # Назначение: Доставка личных сообщений и уведомлений между узлами.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  messages:
    # Назначение: Частота проверки очереди сообщений, в миллисекундах.
    # @config Тип: целое число | Допустимо: 50..30000 | Единица: миллисекунды | По умолчанию: 250 | Зависимость: меньше интервал — меньше задержка и больше обращений к базе
    poll-ms: 250
    # Назначение: Максимум сообщений, забираемых за один проход.
    # @config Тип: целое число | Допустимо: 1..1000 | Единица: сообщения | По умолчанию: 100 | Зависимость: работает совместно с poll-ms; не является лимитом друзей или длины текста
    batch-size: 100
    # Назначение: Время владения сообщением одним обработчиком, в миллисекундах.
    # @config Тип: целое число | Допустимо: 1000..300000 | Единица: миллисекунды | По умолчанию: 10000 | Зависимость: ограничивает владение записью очереди одним обработчиком; повторная доставка проходит проверку актуального состояния
    claim-ttl-ms: 10000

# Назначение: Команды друзей и настраиваемый перехват личных сообщений.
# @config Тип: раздел | Допустимо: перечисленные ключи | Единица: нет | По умолчанию: ниже | Зависимость: после изменения нужен перезапуск; настройка должна совпадать на прокси и backend-узлах сети
commands:
  # Назначение: true направляет перечисленные команды ЛС и ответа в mcFriends; false сохраняет обработку Essentials/CMI/vanilla. Собственные /mcfriends:msg и /mcfriends:reply остаются доступны.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: при false mcFriends не заменяет регистрацию, выполнение и Tab чужих команд; отсутствие ключа в старом файле означает true
  intercept-private-messages: true
  # Назначение: Команды открытия меню и управления друзьями.
  # @config Тип: список строк | Допустимо: [friend, friends] | Единица: нет | По умолчанию: [friend, friends] | Зависимость: работают независимо от перехвата ЛС
  friend-aliases: [friend, friends]
  # Назначение: Алиасы личного сообщения из EssentialsX и CMI; при необходимости можно убрать необязательные алиасы.
  # @config Тип: список строк | Допустимо: подмножество списка ниже, msg обязателен | Единица: нет | По умолчанию: список ниже | Зависимость: перехватываются только при intercept-private-messages=true
  message-aliases: [msg, w, m, t, pm, emsg, epm, tell, etell, whisper, ewhisper]
  # Назначение: Алиасы ответа последнему собеседнику.
  # @config Тип: список строк | Допустимо: подмножество [reply, r, er, ereply], reply обязателен | Единица: нет | По умолчанию: [reply, r, er, ereply] | Зависимость: тот же переключатель перехвата
  reply-aliases: [reply, r, er, ereply]
  # Назначение: Также перехватывать /essentials:msg, /cmi:msg, /minecraft:msg и /cmi msg. Другие команды этих плагинов не меняются.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: действует только вместе с intercept-private-messages=true
  intercept-namespaced: true
  # Назначение: Пространства имён и команды-обёртки для перечисленных алиасов ЛС.
  # @config Тип: список строк | Допустимо: подмножество [essentials, cmi, minecraft] | Единица: нет | По умолчанию: [essentials, cmi, minecraft] | Зависимость: intercept-namespaced=true; нестандартные пользовательские CMI alias требуют отдельной проверки маршрута
  provider-prefixes: [essentials, cmi, minecraft]
  # Назначение: Если перехват включён, временная ошибка mcFriends не должна отправить приватный текст другому обработчику.
  # @config Тип: boolean | Допустимо: только true | Единица: нет | По умолчанию: true | Зависимость: настройка не включает перехват при intercept-private-messages=false
  cancel-on-service-error: true

# Назначение: Игровые ограничения и защита от спама.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
limits:
  # Назначение: Максимальное число друзей у одного игрока.
  # @config Тип: целое число | Допустимо: 1..10000 | Единица: друзья | По умолчанию: 100 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  friends: 100
  # Назначение: Максимальное число входящих заявок.
  # @config Тип: целое число | Допустимо: 1..1000 | Единица: заявки | По умолчанию: 20 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  incoming-requests: 20
  # Назначение: Максимальное число отправленных заявок.
  # @config Тип: целое число | Допустимо: 1..1000 | Единица: заявки | По умолчанию: 20 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  outgoing-requests: 20
  # Назначение: Срок жизни заявки в секундах; 604800 — семь дней.
  # @config Тип: целое число | Допустимо: 1..315360000 (не более 3650 дней) | Единица: секунды | По умолчанию: 604800 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  request-ttl-seconds: 604800
  # Назначение: Максимальная длина личного сообщения в символах Unicode.
  # @config Тип: целое число | Допустимо: 1..2000 | Единица: кодовые точки Unicode | По умолчанию: 256 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  message-code-points: 256
  # Назначение: Сколько личных сообщений разрешено за одно окно ограничения.
  # @config Тип: целое число | Допустимо: 1..100 | Единица: сообщения за окно | По умолчанию: 5 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  message-rate-permits: 5
  # Назначение: Размер окна ограничения сообщений в секундах.
  # @config Тип: целое число | Допустимо: 1..600 | Единица: секунды | По умолчанию: 10 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  message-rate-window-seconds: 10
  # Назначение: Максимум друзей, которым можно отправить одно групповое уведомление.
  # @config Тип: целое число | Допустимо: 1..10000 | Единица: получатели | По умолчанию: 250 | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  broadcast-recipients: 250

# Назначение: Правила хранения и показа личных сообщений.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
messages:
  # Назначение: Разрешать личное сообщение только когда получатель сейчас в сети.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: false разрешает ограниченную очередь офлайн-сообщений; дружба и приватность всё равно проверяются
  require-online: true
  # Назначение: Сколько секунд недоставленное сообщение остаётся в очереди.
  # @config Тип: целое число | Допустимо: 5..86400 | Единица: секунды | По умолчанию: 60 | Зависимость: после истечения недоставленное сообщение не принимается к доставке; это не история чата
  retention-seconds: 60
  # Назначение: Разрешать цветовые коды и форматирование в тексте игроков.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: меняет только оформление пользовательского текста; не отменяет дружбу, приватность и ограничения
  allow-formatting: false
  # Назначение: Всегда оставляйте false: содержимое личных сообщений не записывается в журнал.
  # @config Тип: boolean | Допустимо: только false | Единица: нет | По умолчанию: false | Зависимость: false обязательно для защиты личной переписки
  log-content: false

# Назначение: Инвентарное меню друзей и настроек.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
gui:
  # Назначение: Включить меню; при false команда покажет краткий текстовый список.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: на прокси для инвентарного меню нужна копия на игровом сервере с общей SQL-базой; false включает текстовый список
  enabled: true
  # Назначение: Число рядов в меню друзей, от 2 до 6.
  # @config Тип: целое число | Допустимо: 2..6 | Единица: ряды по 9 слотов | По умолчанию: 6 | Зависимость: применяется к основному меню друзей; экран настроек использует свою фиксированную раскладку
  rows: 6
  # Назначение: Живая цветная рамка должна работать во всех экранах и переходах меню.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  animation:
    # Назначение: Включить анимацию рамки.
    # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: анимация действует только при gui.enabled=true и сохраняется при переходе в настройки и обратно
    enabled: true
    # Назначение: Интервал между кадрами в миллисекундах; слишком малое значение создаёт лишние обновления.
    # @config Тип: целое число | Допустимо: 100..30000 | Единица: миллисекунды | По умолчанию: 1000 | Зависимость: используется при gui.enabled=true и animation.enabled=true; меньше интервал — больше обновлений слотов
    period-ms: 1000
  # Назначение: Защита от двойных кликов по меню, в миллисекундах.
  # @config Тип: целое число | Допустимо: 0..5000 | Единица: миллисекунды | По умолчанию: 250 | Зависимость: применяется к действиям в открытом меню; 0 отключает только задержку кликов, не проверки инвентаря
  click-cooldown-ms: 250

# Назначение: Дополнительные функции для игроков.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
features:
  # Назначение: Сообщать друзьям, когда игрок появился в сети.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
  online-info-on-join:
    # Назначение: Включить уведомление о входе.
    # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
    enabled: true
    # Назначение: Задержка уведомления после входа, в миллисекундах.
    # @config Тип: целое число | Допустимо: 0..300000 | Единица: миллисекунды | По умолчанию: 1500 | Зависимость: используется при enabled=true; даёт игровому серверу время сообщить актуальную видимость
    delay-ms: 1500
  # Назначение: Разрешить игроку отправлять объявление всем друзьям.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
  friend-broadcast:
    # Назначение: Включить объявления друзьям.
    # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
    enabled: true
    # Назначение: Перерыв между объявлениями одного игрока, в секундах.
    # @config Тип: целое число | Допустимо: 0..3600 | Единица: секунды | По умолчанию: 30 | Зависимость: используется при enabled=true; дополнительно действуют приватность и broadcast-recipients
    cooldown-seconds: 30
  # Назначение: Отключение урона между друзьями на игровых серверах.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
  friendly-fire:
    # Назначение: Включить защиту друзей от взаимного урона.
    # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: работает на игровом сервере и учитывает настройки друзей; существующий запрет урона не снимается
    enabled: false
    # Назначение: Миры с защитой; пустой список означает все миры.
    # @config Тип: список строк | Допустимо: список непустых имён миров; [] означает все миры | Единица: нет | По умолчанию: [] | Зависимость: используется при friendly-fire.enabled=true; имена должны совпадать с мирами сервера
    protected-worlds: []
  # Назначение: Переход на сервер, где играет друг.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: используется соответствующей включённой функцией и не отменяет настройки приватности
  friend-jump:
    # Назначение: Включить запрос перехода к другу.
    # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: переход требует работающего прокси, дружбы, разрешения получателя и доступного сервера
    enabled: false
    # Назначение: Задержка перед переходом, в секундах.
    # @config Тип: целое число | Допустимо: 0..300 | Единица: секунды | По умолчанию: 3 | Зависимость: используется при friend-jump.enabled=true; перед действием снова проверяется актуальное состояние
    delay-seconds: 3
    # Назначение: Серверы, на которые переход через друзей запрещён.
    # @config Тип: список строк | Допустимо: список непустых имён серверов; [] ничего дополнительно не запрещает | Единица: нет | По умолчанию: [login] | Зависимость: используется при friend-jump.enabled=true; указывайте имена из маршрутизации прокси
    disabled-servers: [login]

# Назначение: Связь с необязательными плагинами оформления и приватности.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
integrations:
  # Назначение: Наследование настроек приватности из mcProfile, если он установлен.
  # @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: необязательная интеграция; отсутствие плагина не должно мешать основным командам
  mcprofile:
    # Назначение: MOST_PRIVATE выбирает более закрытое правило при расхождении настроек.
    # @config Тип: строка | Допустимо: LOCAL_ONLY, MCPROFILE_FALLBACK, MCPROFILE_PRIMARY или MOST_PRIVATE | Единица: нет | По умолчанию: MOST_PRIVATE | Зависимость: LOCAL_ONLY и MCPROFILE_FALLBACK не принимают внешнюю запись; MCPROFILE_PRIMARY принимает профиль; MOST_PRIVATE сохраняет более закрытые значения
    inheritance: MOST_PRIVATE
  # Назначение: Использовать префиксы и имена из LuckPerms при показе друзей.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: необязательная интеграция; отсутствие плагина не должно мешать основным командам
  luckperms-display-names: true
  # Назначение: Регистрировать плейсхолдеры PlaceholderAPI, если он установлен.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: необязательная интеграция; отсутствие плагина не должно мешать основным командам
  placeholderapi: true
  # Назначение: Не раскрывать скрытого игрока в статусе и подсказках онлайн-игроков; личные сообщения между друзьями сохраняются.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: при true статус раскрывается только после свежего VISIBLE от игрового сервера; личные сообщения этим не блокируются
  respect-vanish: true

# Назначение: Язык сообщений и меню.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
localization:
  # Назначение: Основной язык общего режима сообщений, когда per-player выключен.
  # @config Тип: строка | Допустимо: языковая метка вида ru_RU; должна входить в supported | Единица: нет | По умолчанию: ru_RU | Зависимость: используется как общий язык при per-player=false; перевод должен быть доступен
  default: ru_RU
  # Назначение: Запасной язык, если перевод отдельной строки отсутствует.
  # @config Тип: строка | Допустимо: языковая метка вида ru_RU; должна входить в supported | Единица: нет | По умолчанию: ru_RU | Зависимость: используется, если отдельная строка выбранного перевода отсутствует
  fallback: ru_RU
  # Назначение: Разрешённые языки, между которыми игрок может переключаться в меню.
  # @config Тип: список строк | Допустимо: непустой список языковых меток с доступными переводами; включает default и fallback | Единица: нет | По умолчанию: [ru_RU, en_US, de_DE, es_ES, fr_FR, pt_BR, pl_PL, tr_TR, uk_UA, zh_CN] | Зависимость: файлы переводов лежат в locales; недоступный обязательный перевод не должен маскироваться успешным запуском
  supported: [ru_RU, en_US, de_DE, es_ES, fr_FR, pt_BR, pl_PL, tr_TR, uk_UA, zh_CN]
  # Назначение: Учитывать выбранный язык каждого игрока вместо одного языка на весь сервер.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  per-player: true

# Назначение: Одноразовый перенос данных из прежней системы друзей.
# @config Тип: раздел | Допустимо: перечисленные вложенные ключи; неизвестные ключи отклоняются | Единица: нет | По умолчанию: значения вложенных ключей ниже | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
import:
  # Назначение: Режим API импорта по умолчанию: true только строит план; false разрешает применение при вызове API.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: действует без явного переопределения dry-run; CLI отдельно требует --apply, обычный запуск сервера импорт не выполняет
  dry-run-by-default: true
  # Назначение: Префикс исходных таблиц прежней системы друзей.
  # @config Тип: строка | Допустимо: [A-Za-z][A-Za-z0-9_]{0,31} | Единица: нет | По умолчанию: fr_ | Зависимость: применяется только к чтению источника импорта; целевые таблицы задаются database.table-prefix
  source-table-prefix: fr_
  # Назначение: Масштаб предельного размера источника: допускается min(10000000, batch-size * 10000) записей.
  # @config Тип: целое число | Допустимо: 1..10000 | Единица: множитель 10000 записей | По умолчанию: 500 | Зависимость: историческое имя; ограничивает план чтения, а не размер SQL-пакета; используется только при импорте
  batch-size: 500
  # Назначение: Переносить ещё не принятые заявки в друзья.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  include-pending-requests: true
  # Назначение: Переносить пользовательские настройки приватности.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: true | Зависимость: загружается при запуске; после изменения нужен контролируемый перезапуск этой копии
  include-settings: true
  # Назначение: Не переносить старые офлайн-сообщения без отдельного решения владельца.
  # @config Тип: boolean | Допустимо: true или false | Единица: нет | По умолчанию: false | Зависимость: включайте только при разрешённом переносе; принимаются сообщения между уже подтверждёнными друзьями
  include-offline-messages: false
  • 01-friends-menu.png
    01-friends-menu.png
    133.6 KB · Показов: 4,325
  • 02-settings-menu.png
    02-settings-menu.png
    134.7 KB · Показов: 19
  • 03-private-message.png
    03-private-message.png
    277.4 KB · Показов: 23
  • 13-friend-request-r3.png
    13-friend-request-r3.png
    283.7 KB · Показов: 27
  • 14-message-before-friendship.png
    14-message-before-friendship.png
    274.2 KB · Показов: 25
  • 15-msg-reply-r3.png
    15-msg-reply-r3.png
    258.9 KB · Показов: 25
  • 16-friends-list-r3.png
    16-friends-list-r3.png
    122.7 KB · Показов: 25
  • 17-settings-r3.png
    17-settings-r3.png
    127.8 KB · Показов: 26
  • 18-english-localization-r3.png
    18-english-localization-r3.png
    130 KB · Показов: 23
  • 19-owned-alias-conflict-1.0.2.png
    19-owned-alias-conflict-1.0.2.png
    88.8 KB · Показов: 12
  • 20-pm-blocked-after-remove-1.0.2.png
    20-pm-blocked-after-remove-1.0.2.png
    89.1 KB · Показов: 11
  • 21-mcprofile-addon-1.0.1.png
    21-mcprofile-addon-1.0.1.png
    77.2 KB · Показов: 9
  • 01-message-blocked-before-friend.png
    01-message-blocked-before-friend.png
    401.4 KB · Показов: 12
  • 02-friend-request-sent.png
    02-friend-request-sent.png
    400.9 KB · Показов: 10
  • 03-friendship-confirmed.png
    03-friendship-confirmed.png
    400.1 KB · Показов: 10
  • 04-private-message-and-reply.png
    04-private-message-and-reply.png
    400 KB · Показов: 10
  • 05-friends-menu.png
    05-friends-menu.png
    252.9 KB · Показов: 10
  • 06-settings-animation-frame-a.png
    06-settings-animation-frame-a.png
    255.5 KB · Показов: 10
  • 07-settings-animation-frame-b.png
    07-settings-animation-frame-b.png
    255.2 KB · Показов: 8
  • 08-private-messages-setting.png
    08-private-messages-setting.png
    256.3 KB · Показов: 6
  • 09-private-messages-disabled.png
    09-private-messages-disabled.png
    256.7 KB · Показов: 8
  • 10-visibility-setting-changed.png
    10-visibility-setting-changed.png
    255.7 KB · Показов: 9
  • 11-friendly-fire-enabled.png
    11-friendly-fire-enabled.png
    256.7 KB · Показов: 9
  • 12-english-settings.png
    12-english-settings.png
    254.9 KB · Показов: 7
  • 13-friends-menu-english.png
    13-friends-menu-english.png
    253 KB · Показов: 7
  • 14-remove-and-message-blocked.png
    14-remove-and-message-blocked.png
    400.4 KB · Показов: 4
  • 01-message-blocked-before-friend.png
    01-message-blocked-before-friend.png
    406.6 KB · Показов: 2
  • 02-friend-request-sent.png
    02-friend-request-sent.png
    406.1 KB · Показов: 2
  • 03-friendship-confirmed.png
    03-friendship-confirmed.png
    405 KB · Показов: 2
  • 04-private-message-and-reply.png
    04-private-message-and-reply.png
    405.3 KB · Показов: 2
  • 05-friends-menu.png
    05-friends-menu.png
    252.5 KB · Показов: 4
  • 06-settings-animation-frame-a.png
    06-settings-animation-frame-a.png
    254 KB · Показов: 3
  • 07-settings-animation-frame-b.png
    07-settings-animation-frame-b.png
    254.4 KB · Показов: 3
  • 09-private-messages-disabled.png
    09-private-messages-disabled.png
    255.6 KB · Показов: 3
  • 10-visibility-setting-changed.png
    10-visibility-setting-changed.png
    254.6 KB · Показов: 3
  • 11-friendly-fire-enabled.png
    11-friendly-fire-enabled.png
    255.4 KB · Показов: 4
  • 12-english-settings.png
    12-english-settings.png
    254.3 KB · Показов: 1
  • 13-friends-menu-english.png
    13-friends-menu-english.png
    252.4 KB · Показов: 3
  • 14-remove-and-message-blocked.png
    14-remove-and-message-blocked.png
    405.5 KB · Показов: 1
  • 01-message-blocked-before-friend.png
    01-message-blocked-before-friend.png
    400.6 KB · Показов: 16
  • 02-friend-request-sent.png
    02-friend-request-sent.png
    399.9 KB · Показов: 16
  • 03-friendship-confirmed.png
    03-friendship-confirmed.png
    398.9 KB · Показов: 17
  • 04-private-message-and-reply.png
    04-private-message-and-reply.png
    398.6 KB · Показов: 16
  • 05-friends-menu.png
    05-friends-menu.png
    254 KB · Показов: 18
  • 06-settings-animation-frame-a.png
    06-settings-animation-frame-a.png
    255.6 KB · Показов: 16
  • 08-private-messages-setting.png
    08-private-messages-setting.png
    256.7 KB · Показов: 15
  • 09-private-messages-disabled.png
    09-private-messages-disabled.png
    256.6 KB · Показов: 11
  • 10-visibility-setting-changed.png
    10-visibility-setting-changed.png
    255.9 KB · Показов: 9
  • 11-friendly-fire-enabled.png
    11-friendly-fire-enabled.png
    257.1 KB · Показов: 9
  • 12-english-settings.png
    12-english-settings.png
    255.4 KB · Показов: 11
  • 13-friends-menu-english.png
    13-friends-menu-english.png
    253.5 KB · Показов: 11
  • 14-remove-and-message-blocked.png
    14-remove-and-message-blocked.png
    399.5 KB · Показов: 11
  • 02-incoming-request-actions.png
    02-incoming-request-actions.png
    396.2 KB · Показов: 42
  • 02a-request-declined.png
    02a-request-declined.png
    399.4 KB · Показов: 42
  • 03-friendship-confirmed.png
    03-friendship-confirmed.png
    401.9 KB · Показов: 42
  • 04-private-message-and-reply.png
    04-private-message-and-reply.png
    398.9 KB · Показов: 43
  • 05-friends-menu.png
    05-friends-menu.png
    253 KB · Показов: 43
  • 05a-explicit-dialog-opened.png
    05a-explicit-dialog-opened.png
    398.5 KB · Показов: 40
  • 05b-private-dialog-transcript.png
    05b-private-dialog-transcript.png
    398.1 KB · Показов: 28
  • 05c-active-dialog-menu.png
    05c-active-dialog-menu.png
    252.8 KB · Показов: 25
  • 07-settings-animation-frame-b.png
    07-settings-animation-frame-b.png
    254 KB · Показов: 28
  • 09-private-messages-disabled.png
    09-private-messages-disabled.png
    254.9 KB · Показов: 30
  • 10-visibility-setting-changed.png
    10-visibility-setting-changed.png
    254.7 KB · Показов: 29
  • 11-friendly-fire-enabled.png
    11-friendly-fire-enabled.png
    254.7 KB · Показов: 29
  • 12-english-settings.png
    12-english-settings.png
    253.7 KB · Показов: 28
  • 14-remove-and-message-blocked.png
    14-remove-and-message-blocked.png
    398.4 KB · Показов: 7
  • friends-menu-settings-hover.png
    friends-menu-settings-hover.png
    68.6 KB · Показов: 16
  • friends-settings.png
    friends-settings.png
    72.8 KB · Показов: 12
  • friend-add-player-suggestions.png
    friend-add-player-suggestions.png
    143.9 KB · Показов: 12
  • friend-add-tab-filled.png
    friend-add-tab-filled.png
    144.1 KB · Показов: 12
  • friend-request.png
    friend-request.png
    145.7 KB · Показов: 12
  • msg-friend-ascii.png
    msg-friend-ascii.png
    150.6 KB · Показов: 12
  • msg-friend-russian.png
    msg-friend-russian.png
    147.1 KB · Показов: 8
  • friends-help.png
    friends-help.png
    146.1 KB · Показов: 8
  • friends-help-page-2.png
    friends-help-page-2.png
    147.2 KB · Показов: 8
  • friends-help-page-3.png
    friends-help-page-3.png
    146.9 KB · Показов: 8
  • friends-help-page-4.png
    friends-help-page-4.png
    145.4 KB · Показов: 8
  • msg-recipient-suggestions.png
    msg-recipient-suggestions.png
    143.9 KB · Показов: 8
  • msg-tab-filled.png
    msg-tab-filled.png
    144.1 KB · Показов: 8
  • message-help-detail.png
    message-help-detail.png
    145.5 KB · Показов: 1
  • malformed-remove-help.png
    malformed-remove-help.png
    145.7 KB · Показов: 1
Автор
mcdev
Куплено
9
Показов
402
Первый выпуск
Обновление

Оценки

0.00 звёзд 0 оценок

Другие ресурсы пользователя mcdev

Что важно знать

Автор
Категория
Плагины
Кратко
Друзья, личные сообщения и выбранный диалог: заявки, меню, приватность и подсказки команд.
Первая публикация
23.08.2026
Обновлено
20.09.2026
Стоимость
169 RUB (без скидки 339 RUB)
Скачиваний
9
Совместимость
1.12.+1.13.+1.16.+1.17.+1.18+1.19.+BungeeCordVelocity1.20.+1.21.+
Требования
Обязательных plugin dependencies нет. H2 встроена. MariaDB/PostgreSQL нужны только для общей сети. LuckPerms, PlaceholderAPI, mcProfile и vanish-плагины опциональны.

Последние обновления

  1. mcFriends 1.0.12 — видимая кнопка настроек и понятные команды

    mcFriends 1.0.12 Исправлен цвет кнопки настроек в меню друзей: подпись теперь остаётся видимой...

Частые вопросы

Что представляет собой ресурс «mcFriends — друзья и личные сообщения»?
Ресурс «mcFriends — друзья и личные сообщения» опубликован в категории «Плагины». Кратко: Друзья, личные сообщения и выбранный диалог: заявки, меню, приватность и подсказки команд..
Сколько стоит ресурс «mcFriends — друзья и личные сообщения»?
Текущая цена ресурса — 169 RUB. Базовая цена без скидки — 339 RUB.
Когда ресурс «mcFriends — друзья и личные сообщения» обновлялся в последний раз?
Последнее зафиксированное обновление ресурса — 20.09.2026. Перед покупкой можно дополнительно проверить блок обновлений и changelog на этой странице.
Есть ли у ресурса «mcFriends — друзья и личные сообщения» отзывы и оценки?
Пока у ресурса нет опубликованных оценок. Актуальный статус и новые отзывы можно отслеживать прямо в блоке отзывов на странице.
Где задавать вопросы по ресурсу «mcFriends — друзья и личные сообщения»?
Основная точка для вопросов по ресурсу — его страница на mcDev. Если отдельная ссылка поддержки не указана, ориентируйтесь на профиль автора и связанные обсуждения.
С какой совместимостью идёт ресурс «mcFriends — друзья и личные сообщения»?
Автор указал совместимость этого ресурса отдельно:1.12.+1.13.+1.16.+1.17.+1.18+1.19.+BungeeCordVelocity1.20.+1.21.+
Какие требования нужно учесть перед покупкой ресурса «mcFriends — друзья и личные сообщения»?
Перед установкой стоит учесть такие требования:Обязательных plugin dependencies нет. H2 встроена. MariaDB/PostgreSQL нужны только для общей сети. LuckPerms, PlaceholderAPI, mcProfile и vanish-плагины опциональны.