Перейти к содержимому

Dimension Bridge

DimensionBridge безопасно переносит игроков через команды Velocity с одного зарегистрированного backend-сервера на другой. Работает только на стороне сервера, поддерживает пункты назначения с ограничениями по протоколу и не требует клиентского мода или прав для команды /server.

FabricVelocity
Загрузчики
FabricVelocity
Скачиваний на Modrinth
379
Подписчиков на Modrinth
1
версии
23
Обновлён
26 июля 202626 июл.
Опубликован
в 2026

Коротко о моде

Работает на Fabric и Velocity
Для Minecraft 1.20.1–26.2
Последняя версия — 1.2.2+mc1.20.1 от 26 июля 2026
Нужен Fabric API
Лицензия LGPL-3.0-or-later — бесплатно
Где нужен
В игренеизвестноНа серверенеизвестно

Автор не указал, где нужен мод

Версии игры1.20.1–26.2
Описание переведено автоматическиПоказать оригинал (EN)

Важно: для работы 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 для запуска

Версия MinecraftJava
1.20.1–1.20.417
1.20.5–1.21.1121
26.1–26.225
текущий плагин Velocity25

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

  1. Полностью останови Velocity.
  2. Скопируй Velocity JAR в:
velocity/plugins/dimensionbridge-velocity-<VERSION>.jar
  1. Запусти Velocity.
  2. При первом запуске создаётся:
plugins/dimensionbridge/dimensionbridge.properties
  1. Отредактируй файл. Затем его можно перезагрузить командой /dimensionbridge reload.

В консоли прокси должно появиться сообщение вроде:

DimensionBridge loaded. Channel: dimensionbridge:transfer

6. Установка мода на Fabric-бэкенд

Повтори эти шаги для каждого бэкенд-сервера:

  1. Полностью останови бэкенд.
  2. Скопируй точно соответствующий Fabric JAR в директорию mods.
  3. Убедись, что установлен Fabric API.
  4. В директории mods должен остаться только один JAR DimensionBridge.
  5. Запусти бэкенд.
  6. При первом запуске создаётся:
config/dimensionbridge-fabric.properties
  1. Отредактируй файл и перезапусти бэкенд.

В консоли бэкенда должно появиться сообщение вроде:

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=lobby
deny-unlisted-targets
deny-unlisted-targets=true
  • true: серверы, не указанные в 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_20
display-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 true

DimensionBridge не требует 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] lobby

Velocity

Справка
/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] lobby

Allowlist 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 60

60 тиков — это примерно три секунды.

Повторяющийся блок эффекта

Повторяющийся, безусловный, всегда активный:

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 force
execute 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 1
scoreboard players reset @a[scores={dimensionTimer=1}] dimensionTarget
scoreboard players reset @a[scores={dimensionTimer=1}] dimensionTimer

14. Пример: кликабельное меню в чате через /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 1
execute as @a[scores={dimension=2}] run scoreboard players set @s dimensionTarget 2
execute as @a[scores={dimension=3}] run scoreboard players set @s dimensionTarget 3
scoreboard players set @a[scores={dimension=1..3}] dimensionTimer 60
scoreboard players reset @a[scores={dimension=1..3}] dimension

Переносы при значении таймера 1:

dimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=1}] hauptwelt
dimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=2}] hardcore
dimensionbridge transfer @a[scores={dimensionTimer=1,dimensionTarget=3}] vanilla

15. Решение проблем

Командный блок ничего не делает

Проверь:

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=false

LuckPerms:

/lp group default permission set velocity.command.server false

Держи allowlist Fabric узкими:

# Лобби
allowed-destinations=hauptwelt,hardcore,vanilla
# Игровые миры
allowed-destinations=lobby

17. Обновление

  1. Останови прокси и все бэкенды.
  2. Удали старые JAR-файлы DimensionBridge.
  3. Установи новый JAR для Velocity.
  4. Установи JAR, соответствующий точной нативной версии Minecraft каждого бэкенда.
  5. Никогда не загружай две версии DimensionBridge одновременно.
  6. Сделай резервную копию файлов конфигурации.
  7. Перезапусти прокси и бэкенды.
  8. Проверь /dimensionbridge info и одну базовую передачу через командный блок.

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

Как установить Dimension Bridge?

Установите Fabric под свою версию Minecraft, скачайте Dimension Bridge под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Dimension Bridge?

У Dimension Bridge есть сборки для Minecraft 1.20.1–26.2.

Лицензия и источник
GNU Lesser General Public License v3.0 or laterможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее