Dimension Bridge
DimensionBridge безопасно переносит игроков через команды Velocity с одного зарегистрированного backend-сервера на другой. Работает только на стороне сервера, поддерживает пункты назначения с ограничениями по протоколу и не требует клиентского мода или прав для команды /server.
- Загрузчики
- FabricVelocity
- Скачиваний на Modrinth
- 379
- Подписчиков на Modrinth
- 1
- версии
- 23
- Обновлён
- 26 июля 202626 июл.
- Опубликован
- в 2026
Коротко о моде
Автор не указал, где нужен мод
Важно: для работы velocity-прокси нужны и мод для Minecraft, и плагин
DimensionBridge состоит из плагина для Velocity и соответствующего серверного мода для Fabric. Командный блок может отправить авторизованный запрос на перенос через /dimensionbridge transfer. Velocity проверяет исходный сервер, пункт назначения, игрока, протокол клиента, кулдаун и окно авторизации, прежде чем подключить игрока.
Он создан для порталов, врат между измерениями, путешествий по измерениям, меню лобби и других атмосферных переключений между серверами. Обычным игрокам не нужен доступ к /server или какое-либо разрешение моста.
Так что это безопасный способ телепортировать игрока с одного сервера на другой, и при этом можно очень гибко настроить, какие «маршруты перемещения» доступны.
Например: Игрок может перейти с лобби-сервера на любой мировой сервер. Но с world-server-1 он может вернуться только в лобби, а с world-server-2 — в лобби-сервер и на world-server-2a. Так можно выстраивать сложные структуры серверов.
Ещё один вариант фильтра — ограничить доступ к некоторым серверам в зависимости от протокола Minecraft. Так, ваш лобби-сервер может быть открыт для любой версии Minecraft, но служит хабом, из которого игроки могут подключаться только к серверам, подходящим под их активную версию Minecraft.
Представьте телефонную будку, в которую можно войти, и она показывает только те номера, которые вы действительно можете набрать с вашей версией Minecraft. Другой игрок с другой версией видит другие номера.
Возможности почти безграничны, и это ещё и функция безопасности: даже если игрок получит какую-то информацию о вашей инфраструктуре и настройке серверов, он не сможет использовать команды, потому что они привязаны к уровню мода / op, тогда как обычные порталы используют свои команды на пользовательском уровне.
Пожалуйста, делитесь своими идеями по использованию этого.
Я придумал это, когда смотрел «Отличное приключение Билла и Теда», и захотел иметь безопасный способ переключаться между серверами / временными периодами.
С уважением,
Jan
DimensionBridge – руководство по установке, настройке и командам
1. Обзор
DimensionBridge — это серверный мост между бэкенд-серверами Fabric и прокси Velocity. Он позволяет командным блокам, консоли сервера и другим источникам команд с подходящими правами переносить игроков на зарегистрированный сервер Velocity.
Игрокам не нужен доступ к команде /server в Velocity или к какому-либо разрешению моста. Поэтому защищённые серверы назначения можно сделать доступными только через одобренные порталы, телефонные будки или другие конструкции на командных блоках.
Архитектура
Minecraft client
│
▼
Velocity proxy
└─ DimensionBridge Velocity plugin
│ Channel: dimensionbridge:transfer
▼
Fabric backend
└─ DimensionBridge Fabric mod
└─ Command block: dimensionbridge transfer <targets> <server>Мод на стороне клиента не требуется.
2. Поддерживаемые версии
Для каждой нативной версии сервера Fabric собирается отдельный JAR:
1.20.1 1.20.2 1.20.3 1.20.4 1.20.5 1.20.6
1.21 1.21.1 1.21.2 1.21.3 1.21.4 1.21.5
1.21.6 1.21.7 1.21.8 1.21.9 1.21.10 1.21.11
26.1 26.1.1 26.1.2 26.2Всегда используйте тот JAR для Fabric, который точно соответствует нативной версии этого бэкенд-сервера. Версия клиента, транслируемая через ViaVersion, не важна при выборе JAR для бэкенда.
Версии Java для запуска
| Версия Minecraft | Java |
|---|---|
| 1.20.1–1.20.4 | 17 |
| 1.20.5–1.21.11 | 21 |
| 26.1–26.2 | 25 |
| текущий плагин Velocity | 25 |
3. Требования
Velocity
- прокси Velocity;
- Java 25;
- каждый бэкенд зарегистрирован в
velocity.toml; - по желанию LuckPerms для управления разрешениями.
Fabric-бэкенды
- Fabric Loader, соответствующий версии Minecraft;
- Fabric API, соответствующий версии Minecraft;
- соответствующий DimensionBridge Fabric JAR;
- командные блоки включены в
server.properties:
enable-command-block=trueПосле изменения server.properties требуется полный перезапуск сервера.
4. Загрузка исходного кода
Если хочешь поучаствовать — напиши мне.
5. Установка плагина Velocity
- Полностью останови Velocity.
- Скопируй Velocity JAR в:
velocity/plugins/dimensionbridge-velocity-<VERSION>.jar- Запусти Velocity.
- При первом запуске создаётся:
plugins/dimensionbridge/dimensionbridge.properties- Отредактируй файл. Затем его можно перезагрузить командой
/dimensionbridge reload.
В консоли прокси должно появиться сообщение вроде:
DimensionBridge loaded. Channel: dimensionbridge:transfer6. Установка мода на Fabric-бэкенд
Повтори эти шаги для каждого бэкенд-сервера:
- Полностью останови бэкенд.
- Скопируй точно соответствующий Fabric JAR в директорию
mods. - Убедись, что установлен Fabric API.
- В директории
modsдолжен остаться только один JAR DimensionBridge. - Запусти бэкенд.
- При первом запуске создаётся:
config/dimensionbridge-fabric.properties- Отредактируй файл и перезапусти бэкенд.
В консоли бэкенда должно появиться сообщение вроде:
DimensionBridge backend <VERSION> loaded. Channel: dimensionbridge:transferУ конфигурации Fabric сейчас нет команды перезагрузки. Изменения в dimensionbridge-fabric.properties требуют перезапуска бэкенда.
7. Конфигурация Fabric
Файл:
config/dimensionbridge-fabric.propertiesПример для лобби:
allowed-destinations=hauptwelt,hardcore,vanillaПример для игрового сервера, разрешающий только возврат в лобби:
allowed-destinations=lobbyРазрешить любую синтаксически корректную цель:
allowed-destinations=*allowed-destinations
Это локальный белый список отдельного Fabric-бэкенда. Payload переноса отправляется в Velocity только тогда, когда запрошенная цель разрешена здесь.
- разделяй несколько имён запятыми;
- имена приводятся к нижнему регистру;
- имена могут содержать строчные буквы, цифры,
_и-; *разрешает любую синтаксически корректную цель, которую затем примет Velocity.
В целях безопасности по возможности используй узкий белый список вместо *.
8. Конфигурация Velocity
Файл:
plugins/dimensionbridge/dimensionbridge.propertiesПолный пример с серверами lobby, hauptwelt, hardcore и vanilla:
# Имена серверов должны точно совпадать с velocity.toml.
# * разрешает любой источник или протокол.
initial-servers=lobby
deny-unlisted-targets=true
cooldown-ms=2500
authorization-window-ms=5000
bypass-permission=dimensionbridge.bypass
destinations=lobby,hauptwelt,hardcore,vanilla
destination.lobby.display-name=Lobby
destination.lobby.protected=false
destination.lobby.allowed-sources=*
destination.lobby.allowed-protocols=*
destination.hauptwelt.display-name=Main World
destination.hauptwelt.protected=true
destination.hauptwelt.allowed-sources=lobby
destination.hauptwelt.allowed-protocols=MINECRAFT_1_20
destination.hardcore.display-name=Hardcore
destination.hardcore.protected=true
destination.hardcore.allowed-sources=lobby
destination.hardcore.allowed-protocols=MINECRAFT_1_20
destination.vanilla.display-name=Vanilla
destination.vanilla.protected=true
destination.vanilla.allowed-sources=lobby
destination.vanilla.allowed-protocols=MINECRAFT_26_2
### Глобальные настройки
#### `initial-servers`
Список серверов через запятую, разрешённых как начальные серверы входа через прокси.
```properties
initial-servers=lobbydeny-unlisted-targets
deny-unlisted-targets=truetrue: серверы, не указанные вdestinations, запрещены;false: не указанные в списке серверы остаются вне правил защиты DimensionBridge.
Используй true для закрытой сети порталов.
cooldown-ms
Задержка между двумя запросами моста от одного игрока:
cooldown-ms=2500Допустимый диапазон: от 0 до 60 000 миллисекунд.
authorization-window-ms
Временное окно, в течение которого запрос на подключение Velocity, запущенный DimensionBridge, остаётся авторизованным:
authorization-window-ms=5000Допустимый диапазон: от 500 до 60 000 миллисекунд. Значение должно быть больше, чем обычная попытка подключения прокси к бэкенду.
bypass-permission
Право, обходящее все проверки защиты DimensionBridge:
bypass-permission=dimensionbridge.bypassВыдавай его только доверенным администраторам.
Определения пунктов назначения
Каждая запись в destinations требует четыре свойства:
destinations=lobby,hauptwelt
destination.hauptwelt.display-name=Main World
destination.hauptwelt.protected=true
destination.hauptwelt.allowed-sources=lobby
destination.hauptwelt.allowed-protocols=MINECRAFT_1_20display-name
Читаемое имя, используемое в сообщениях игрокам.
protected
true: для входа в цель требуется действующая авторизация DimensionBridge. Прямые подключения через/serverзапрещены, если у игрока нет права обхода.false: обычные подключения разрешены, когда правило протокола совпадает.
Для лобби обычно следует использовать protected=false, чтобы начальный вход и обратные переходы оставались надёжными.
allowed-sources
Бэкенд-серверы, с которых можно запросить это назначение:
destination.hauptwelt.allowed-sources=lobbyНесколько источников:
destination.hauptwelt.allowed-sources=lobby,hardcoreЛюбой источник:
destination.lobby.allowed-sources=*allowed-protocols
Имена клиентских протоколов Velocity, принимаемые этим назначением:
destination.hauptwelt.allowed-protocols=MINECRAFT_1_20Несколько протоколов:
destination.hauptwelt.allowed-protocols=MINECRAFT_1_20,MINECRAFT_1_21Любой протокол:
destination.lobby.allowed-protocols=*Minecraft 1.20 и 1.20.1 используют одну группу протоколов MINECRAFT_1_20.
Используй эту команду, чтобы получить точное имя Velocity для подключённого клиента:
/dimensionbridge protocol <player>9. Права
dimensionbridge.admin
Позволяет игроку использовать административные команды DimensionBridge в Velocity.
dimensionbridge.bypass
Обходит проверки назначения, источника, протокола и авторизации портала. Выдавай его только доверенным администраторам.
velocity.command.server
Управляет обычной командой /server в Velocity. Её можно запретить обычным игрокам, когда переходы должны происходить только через порталы:
/lp group default permission set velocity.command.server falseАдминистраторы могут сохранить её:
/lp group admin permission set velocity.command.server trueDimensionBridge не требует velocity.command.server.
Право на бэкенд-команду
dimensionbridge transfer доступна на Fabric только консоли, командным блокам и источникам с уровнем модератора/команд 2. Обычные игроки не могут её использовать. Не выдавай обычным игрокам права оператора или модератора.
10. Справочник команд
Fabric-бэкенд
Перемещение игроков
/dimensionbridge transfer <targets> <Velocity server name>В командных блоках уберите ведущий слэш:
dimensionbridge transfer @p hauptweltПримеры:
# Ближайший игрок
dimensionbridge transfer @p hauptwelt
# Ближайший игрок в пределах трёх блоков
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] hauptwelt
# Все игроки внутри кабинки шириной в один блок и высотой в три блока
dimensionbridge transfer @a[x=10,y=64,z=5,dx=0,dy=2,dz=0] hauptwelt
# Только игроки без тега нахождения в бою
dimensionbridge transfer @a[x=10,y=64,z=5,distance=..2,tag=!inCombat] hauptwelt
# Возврат в лобби
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] lobbyVelocity
Справка
/dimensionbridge
/dbПерезагрузка конфигурации Velocity
/dimensionbridge reload
/db reloadПерезагружает только конфигурацию Velocity.
Показать активную конфигурацию
/dimensionbridge info
/db infoВ выводе отображаются путь к конфигурации и загруженные пункты назначения.
Показать протокол клиента
/dimensionbridge protocol
/dimensionbridge protocol <player>Если игрок не указан, команда показывает его собственный протокол.
11. Базовая проверка работоспособности
Настройки командного блока:
Impulse
Unconditional
Needs RedstoneКоманда:
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] hauptweltВстаньте не дальше трёх блоков от командного блока и нажмите кнопку.
Чтобы исключить радиус как возможную причину:
dimensionbridge transfer @p hauptweltПредыдущий вывод командного блока должен быть примерно таким:
DimensionBridge: sent 1 transfer request(s) to 'hauptwelt'.Текущая версия мода может показывать это сообщение на немецком; важны число и пункт назначения.
12. Пример: телефонные кабинки в лобби
Кабинка в основной мир
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] hauptweltКабинка в хардкорный мир
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] hardcoreКабинка в ванильный мир
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] vanillaКабинка возврата на каждом игровом сервере
dimensionbridge transfer @p[distance=..3,limit=1,sort=nearest] lobbyAllowlist Fabric на этом бэкенде тоже должен разрешать пункт назначения.
13. Пример: эффект мерцания и обратный отсчёт
Выполните один раз:
scoreboard objectives add dimensionTarget dummy
scoreboard objectives add dimensionTimer dummyКнопка запуска в основном мире
Импульсный блок:
scoreboard players set @p[distance=..3,limit=1,sort=nearest] dimensionTarget 1Следующий цепной блок:
scoreboard players set @p[distance=..3,limit=1,sort=nearest] dimensionTimer 6060 тиков — это примерно три секунды.
Повторяющийся блок эффекта
Повторяющийся, безусловный, всегда активный:
execute as @a[scores={dimensionTimer=1..}] at @s run particle minecraft:portal ~ ~1 ~ 0.3 0.8 0.3 0.1 10 forceСледующие цепные блоки, все всегда активные:
execute as @a[scores={dimensionTimer=1..}] at @s run particle minecraft:reverse_portal ~ ~1 ~ 0.45 0.9 0.45 0.08 5 forceexecute as @a[scores={dimensionTimer=1..}] run title @s actionbar {"text":"Opening dimension …","color":"aqua","italic":true}execute as @a[scores={dimensionTimer=60}] at @s run playsound minecraft:block.beacon.activate master @s ~ ~ ~ 0.8 0.7
```mcfunction
execute as @a[scores={dimensionTimer=20}] at @s run playsound minecraft:block.respawn_anchor.charge master @s ~ ~ ~ 0.8 1.3Перенос должен сработать до того, как значение таймера 1 будет убрано:
dimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=1}] hauptweltЗатем:
scoreboard players remove @a[scores={dimensionTimer=2..}] dimensionTimer 1scoreboard players reset @a[scores={dimensionTimer=1}] dimensionTargetscoreboard players reset @a[scores={dimensionTimer=1}] dimensionTimer14. Пример: кликабельное меню в чате через /trigger
Выполнить один раз:
scoreboard objectives add dimension trigger
scoreboard objectives add dimensionTarget dummy
scoreboard objectives add dimensionTimer dummyВключи триггер для игрока перед показом меню:
scoreboard players enable @p[distance=..3,limit=1,sort=nearest] dimensionПример с синтаксисом текстовых компонентов нативного лобби Minecraft 1.20.1:
tellraw @p[distance=..3,limit=1,sort=nearest] [{"text":"☎ Select dimension\n","color":"gold","bold":true},{"text":"[ Main World ]","color":"green","clickEvent":{"action":"run_command","value":"/trigger dimension set 1"}},{"text":"\n"},{"text":"[ Hardcore ]","color":"red","clickEvent":{"action":"run_command","value":"/trigger dimension set 2"}},{"text":"\n"},{"text":"[ Vanilla ]","color":"aqua","clickEvent":{"action":"run_command","value":"/trigger dimension set 3"}}]Синтаксис JSON-компонентов текста может меняться между версиями Minecraft. Используй синтаксис, поддерживаемый нативной версией сервера, выполняющего команду.
Сохрани выбранную цель:
execute as @a[scores={dimension=1}] run scoreboard players set @s dimensionTarget 1execute as @a[scores={dimension=2}] run scoreboard players set @s dimensionTarget 2execute as @a[scores={dimension=3}] run scoreboard players set @s dimensionTarget 3scoreboard players set @a[scores={dimension=1..3}] dimensionTimer 60scoreboard players reset @a[scores={dimension=1..3}] dimensionПереносы при значении таймера 1:
dimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=1}] hauptweltdimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=2}] hardcoredimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=3}] vanilla15. Решение проблем
Командный блок ничего не делает
Проверь:
enable-command-block=trueТакже:
- поставь блок в режим Impulse, Unconditional, Needs Redstone;
- убедись, что кнопка подаёт питание на блок;
- включи и прочитай предыдущий вывод командного блока;
- упрости селектор для проверки:
dimensionbridge transfer @p hauptwelt«Unknown or incomplete command»
Возможные причины:
- неправильный Fabric JAR для нативной версии Minecraft;
- DimensionBridge не загрузился;
- отсутствует Fabric API;
- бэкенд не был полностью перезапущен после установки.
«Target is not locally allowed»
Пункт назначения отсутствует в:
config/dimensionbridge-fabric.propertiesПример:
allowed-destinations=hauptwelt,hardcore,vanillaПосле этого перезапусти бэкенд.
«Unknown dimension identifier or destination»
Пункт назначения отсутствует в списке destinations в Velocity или пропущен блок его свойств.
«Destination server is not registered in the proxy»
Имя сервера не совпадает точно с его записью в velocity.toml.
«Этот портал может не выбрать это назначение»
Текущий бэкенд отсутствует в `destination..allowed-sources`.
Версия отклонена
Проверь фактический протокол клиента:
/dimensionbridge protocol <player>Используй отображённую константу в allowed-protocols.
Прямой /server отклонён
Это ожидаемо для целей с protected=true. Используй портал или намеренно выдай dimensionbridge.bypass администратору.
Изменения конфигурации не применяются
- Конфигурация Velocity:
/dimensionbridge reload - Конфигурация Fabric: полный перезапуск бэкенда
Никакой payload не доходит до Velocity
Проверь, что:
- выбранный игрок сейчас подключён к отправляющему бэкенду;
- на прокси и бэкенде установлены совпадающие поколения DimensionBridge;
- обе стороны используют канал
dimensionbridge:transfer; - не осталось установленным старого TelephoneBridge или дубликата JAR DimensionBridge.
16. Рекомендуемая конфигурация безопасности
Velocity:
deny-unlisted-targets=trueИгровые миры:
destination.hauptwelt.protected=true
destination.hardcore.protected=true
destination.vanilla.protected=trueЛобби:
destination.lobby.protected=falseLuckPerms:
/lp group default permission set velocity.command.server falseДержи allowlist Fabric узкими:
# Лобби
allowed-destinations=hauptwelt,hardcore,vanilla# Игровые миры
allowed-destinations=lobby17. Обновление
- Останови прокси и все бэкенды.
- Удали старые JAR-файлы DimensionBridge.
- Установи новый JAR для Velocity.
- Установи JAR, соответствующий точной нативной версии Minecraft каждого бэкенда.
- Никогда не загружай две версии DimensionBridge одновременно.
- Сделай резервную копию файлов конфигурации.
- Перезапусти прокси и бэкенды.
- Проверь
/dimensionbridge infoи одну базовую передачу через командный блок.
Частые вопросы
Как установить Dimension Bridge?
Установите Fabric под свою версию Minecraft, скачайте Dimension Bridge под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Dimension Bridge?
У Dimension Bridge есть сборки для Minecraft 1.20.1–26.2.