- Поддерживаемые версии
- 1.21
- 26
- Ядра и Прокси
- Bukkit
- Spigot
- Paper
- Минимальная версия Java
- 21
VoiceChatAddon
Мост между Simple Voice Chat и Plasmo Voice, награды и интеграция с LiteBans
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Мост между Simple Voice Chat и Plasmo Voice, награды и интеграция с LiteBans
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
VoiceChatAddon — это серверный плагин, который соединяет игроков с Simple Voice Chat и Plasmo Voice через двусторонний мост локального войс-чата.
Игрок может использовать любой из двух поддерживаемых клиентских модов и слышать находящихся рядом игроков с другим войсом. Плагин передаёт закодированные голосовые пакеты в обе стороны, сохраняет настроенную дальность слышимости, учитывает шёпот Simple Voice Chat и предотвращает дублирование звука у игроков с обоими модами.
VoiceChatAddon также определяет наличие каждого войс-чата, выдаёт одноразовые награды, добавляет плейсхолдеры PlaceholderAPI, поддерживает SQLite и MySQL, защищает награды от обхода через другой аккаунт, синхронизирует муты LiteBans и предоставляет гибкую систему actions.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Основные возможности
- Двусторонний мост Simple Voice Chat ↔ Plasmo Voice.
- Общий proximity-войс между игроками с разными модами.
- Игроку достаточно установить один из двух поддерживаемых войсов.
- Сохранение дальности слышимости в обоих направлениях.
- Поддержка режима шёпота Simple Voice Chat.
- Безопасное ограничение максимальной дальности моста.
- Защита от двойного звука у игроков с обоими модами.
- Отдельное определение Simple Voice Chat и Plasmo Voice.
- Настраиваемый список используемых войс-чатов.
- Режимы награды: ANY, BOTH, SIMPLE и PLASMO.
- Отдельные actions для Simple, Plasmo и обоих войсов.
- Постоянное хранение полученных наград.
- Опциональная защита от получения награды с другого аккаунта по IP.
- Поддержка SQLite и MySQL через HikariCP.
- Обычные и relational-плейсхолдеры PlaceholderAPI.
- Счётчики игроков с каждым войс-чатом.
- Настраиваемые MiniMessage-значки статуса.
- Опциональная синхронизация мутов LiteBans с обоими войсами.
- Настраиваемый cooldown уведомления о муте.
- MiniMessage и PlaceholderAPI внутри actions.
- Сообщения, broadcast, команды, звуки, title, actionbar и bossbar.
- Частицы, фейерверки, эффекты и опциональные Vault-действия.
- Перезагрузка конфигурации командой.
- Подробный debug-отчёт по выбранному игроку.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Как работает
Установите серверные версии Simple Voice Chat и Plasmo Voice на один Paper-бэкенд, после чего включите оба войса в конфиге VoiceChatAddon.
Каждый игрок может зайти с любым из двух клиентских модов:
- Игрока с Simple Voice Chat слышат находящиеся рядом игроки с Plasmo Voice.
- Игрока с Plasmo Voice слышат находящиеся рядом игроки с Simple Voice Chat.
- Игроки с одинаковым войсом продолжают слышать друг друга через обычную систему своего мода.
Отдельный клиентский мод VoiceChatAddon не нужен. Игрок устанавливает только выбранный им войс-чат.
────────────────────────────────────────
Двусторонний мост войс-чатов
Плагин передаёт голос в обоих направлениях:
Код:
Simple Voice Chat -> Plasmo Voice
Plasmo Voice -> Simple Voice Chat
Голос передаётся уже закодированными аудиопакетами без дополнительного декодирования и повторного кодирования.
Мост активируется, когда:
- На сервере установлен и запущен Simple Voice Chat.
- На сервере установлен и запущен Plasmo Voice.
- В settings.voiceChats указаны SIMPLE и PLASMO.
- Включена настройка settings.bridgeVoiceChats.
- Доступны API обоих войсов и proximity-линия Plasmo Voice.
Пример:
Код:
settings:
voiceChats:
- PLASMO
- SIMPLE
bridgeVoiceChats: true
────────────────────────────────────────
Дальность и шёпот
Для говорящего через Simple Voice Chat используется дальность, настроенная на сервере в самом войс-чате. В режиме шёпота применяется примерно треть этой дальности.
Для говорящего через Plasmo Voice сохраняется дальность активного proximity-пакета.
В целях безопасности дальность моста ограничивается значениями от 1 до 128 блоков.
────────────────────────────────────────
Защита от двойного звука
VoiceChatAddon отслеживает, какие войс-чаты доступны каждому онлайн-игроку.
Если у говорящего установлены оба поддерживаемых мода, плагин не передаёт его голос через мост. Также bridged-аудио фильтруется для слушателей, которые уже получают оригинальный голосовой поток через исходный мод.
Благодаря этому один и тот же голос не воспроизводится дважды.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Определение войса и награды
Игрок использует команду:
Код:
/voice
Плагин проверяет наличие настроенного войс-чата и выполняет подходящую секцию награды.
Доступные секции:
Код:
actions.reward
actions.reward_simple
actions.reward_plasmo
actions.install
actions.noPermsReward
actions.reward выполняется, если у игрока определены оба войс-чата.
actions.reward_simple выполняется для Simple Voice Chat.
actions.reward_plasmo выполняется для Plasmo Voice.
actions.install выполняется, если заданное условие награды не выполнено.
────────────────────────────────────────
Режимы награды
Условие получения награды задаётся через settings.mode.
Код:
ANY - Simple Voice Chat или Plasmo Voice
BOTH - оба войс-чата
SIMPLE - Simple Voice Chat
PLASMO - Plasmo Voice
Пример:
Код:
settings:
mode: ANY
────────────────────────────────────────
Одноразовая выдача и защита по IP
Каждое успешное получение награды сохраняется по UUID, имени и IP-адресу игрока вместе со временем выдачи.
Один UUID не может забрать награду повторно.
Если включена настройка settings.antiIPAbuse, плагин также запрещает получать награду другому аккаунту с уже использованного IP-адреса.
Код:
settings:
antiIPAbuse: true
Защиту можно выключить, если с одной сети играет несколько настоящих игроков.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Хранилище
VoiceChatAddon поддерживает два типа базы данных:
Код:
SQLITE
MYSQL
По умолчанию используется SQLite:
Код:
plugins/voicechat-addon/storage.db
Пример MySQL:
Код:
settings:
database:
type: MYSQL
mysql:
host: "127.0.0.1"
port: 3306
database: "voicechat_addon"
username: "root"
password: ""
Подключения к базе данных управляются через HikariCP.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Интеграция с LiteBans
Если установлен LiteBans, VoiceChatAddon проверяет активный мут игрока перед обработкой исходящих голосовых пакетов.
Игрок в муте не сможет говорить через:
- Simple Voice Chat.
- Plasmo Voice.
- Мост между двумя войсами.
При попытке говорить плагин выполняет actions.muted.
Cooldown уведомления настраивается в миллисекундах:
Код:
settings:
mutedActionCooldown: 30000
Результат проверки мута ненадолго кешируется, поэтому LiteBans не обращается к базе данных на каждый аудиопакет.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
PlaceholderAPI
Обычные плейсхолдеры:
Код:
%voicechataddon_voice%
%voicechataddon_voice_total%
%voicechataddon_voice_simple%
%voicechataddon_voice_plasmo%
%voicechataddon_voice% возвращает настроенный значок наличия или отсутствия войс-чата у игрока.
%voicechataddon_voice_total% возвращает количество онлайн-игроков хотя бы с одним настроенным войсом.
%voicechataddon_voice_simple% возвращает количество онлайн-игроков с Simple Voice Chat.
%voicechataddon_voice_plasmo% возвращает количество онлайн-игроков с Plasmo Voice.
Relational-плейсхолдер:
Код:
%rel_voicechataddon_voice%
Он сравнивает смотрящего игрока и цель:
- available — смотрящий может слышать цель через общий мод или активный мост.
- incompatible — у цели есть войс, но смотрящий не может слышать эту систему.
- unavailable — у цели нет ни одного настроенного войс-чата.
Все три значка настраиваются в формате MiniMessage:
Код:
settings:
voicePlaceholder:
available: "<#10FA20>●"
incompatible: "<#FA8B10>●"
unavailable: "<#EA0909>●"
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Система actions
Награды, подсказка по установке, уведомление о муте, ошибки и сообщение перезагрузки настраиваются списками actions.
Поддерживаемые типы:
Код:
[MESSAGE]
[BROADCAST]
[CONSOLE]
[PLAYER]
[SOUND]
[TITLE]
[ACTIONBAR]
[BOSSBAR]
[PARTICLE]
[FIREWORK]
[EFFECT]
[VAULT]
[CLOSE]
Встроенные плейсхолдеры:
Код:
{prefix}
{player}
В тексте и командах также можно использовать плейсхолдеры PlaceholderAPI.
Пример:
Код:
actions:
reward_simple:
- "[MESSAGE] {prefix} Вы получили награду за Simple Voice Chat"
- "[SOUND] sound:ENTITY_EXPERIENCE_ORB_PICKUP && volume:1.0 && pitch:1.2"
- "[CONSOLE] give {player} diamond 3"
install:
- "[MESSAGE] {prefix} Установите один из поддерживаемых войс-чатов"
muted:
- "[ACTIONBAR] <red>Вы в муте и не можете говорить && ticks:100 && updating:false"
Для Vault-действий требуются Vault и зарегистрированный плагин экономики.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Конфигурация
Основной файл:
Код:
plugins/voicechat-addon/config.yml
Пример основных настроек:
Код:
settings:
prefix: "<#FDBE00><bold>СЕРВЕР</bold><gray>:<white>"
antiIPAbuse: true
voiceChats:
- PLASMO
- SIMPLE
bridgeVoiceChats: true
mode: ANY
mutedActionCooldown: 30000
database:
type: SQLITE
После редактирования конфига используйте /voice reload.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Команды
Код:
/voice
/voice reload
/voicechataddon <игрок>
/voice проверяет войс-чат игрока и обрабатывает одноразовую награду.
/voice reload перезагружает конфигурацию, состояние моста и кеш статусов войса.
/voicechataddon <игрок> выводит подробный debug-отчёт об онлайн-игроке: определённые клиенты, состояние API, готовность моста и совместимость со смотрящим.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Права
Код:
voicechat.addon.reload
voicechat.addon.debug
voicechat.addon.reload разрешает использовать /voice reload.
voicechat.addon.debug разрешает использовать /voicechataddon <игрок>.
Оба права по умолчанию выданы операторам сервера.
Обычная команда награды /voice не требует права.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Требования
- Java 21 или новее.
- Minecraft 1.21.x.
- Paper 1.21.x или совместимое Paper-ядро.
- PlaceholderAPI.
- Simple Voice Chat и/или Plasmo Voice.
Для соединения игроков с разными войсами Simple Voice Chat и Plasmo Voice должны быть одновременно установлены на одном бэкенд-сервере.
Опциональные интеграции:
- LiteBans — блокирует передачу голоса во время мута.
- Vault и плагин экономики — добавляют Vault-действия.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Установка
- Установите PlaceholderAPI на бэкенд-сервер.
- Установите серверную версию Simple Voice Chat, Plasmo Voice или обоих плагинов.
- Настройте UDP-порты и сеть каждого войс-чата по его инструкции.
- Поместите VoiceChatAddon.jar в папку plugins бэкенд-сервера.
- При необходимости установите LiteBans и/или Vault.
- Запустите или перезапустите сервер.
- Откройте plugins/voicechat-addon/config.yml.
- Настройте используемые войсы, режим награды, базу данных и actions.
- Перезапустите сервер или используйте /voice reload для поддерживаемых изменений конфига.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Примечания
- VoiceChatAddon устанавливается на Paper-бэкенд, а не на Velocity или другой прокси.
- При нескольких бэкендах установите плагин на каждый сервер, где нужны определение войса, награды, плейсхолдеры или мост.
- Для работы моста нужны оба серверных войс-плагина, но игроку достаточно одного клиентского мода.
- Мост предназначен для локального proximity-войса. Приватные группы и каналы остаются отдельными системами каждого мода и не объединяются между Simple Voice Chat и Plasmo Voice.
- VoiceChatAddon не открывает и не настраивает UDP-порты вместо войс-плагинов.
- Награда сохраняется навсегда и выдаётся один раз на UUID.
- При сохранении награды записывается IP-адрес; выключите antiIPAbuse, если защита по IP не нужна.
- При работе за прокси для защиты по IP должна быть правильно настроена передача настоящего IP игрока.
- Перед открытием команды /voice игрокам обязательно проверьте и настройте стандартные reward-actions под свой сервер.
- Факт получения сохраняется до выполнения reward-actions, поэтому ошибка команды награды не разрешит автоматическую повторную попытку.
- После изменения типа базы данных или реквизитов MySQL требуется полный перезапуск сервера.
- Игроки с обоими клиентскими модами исключаются из передачи через мост для защиты от двойного звука.
- Поддержка Folia не заявлена.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Благодарности
Логика голосового моста адаптирована из проекта You must be logged in to see this link., распространяемого по лицензии MIT.
- Зависимости
- Необязательно - SimpleVoiceChat, PlasmoVoice, Vault, LiteBans. Обязательно - PlaceholderAPI
- Команды и права
- Всё выше написано