World Switcher
Серверный менеджер миров в стиле Multiverse: переключение миров командой /ws, импорт и управление сохранениями миров командой /wsc, отдельные инвентари для каждого игрока в каждом мире. Ванильные клиенты могут подключаться — установка на клиент не нужна.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 409
- Подписчиков на Modrinth
- 2
- версий
- 5
- Обновлён
- 18 сентября 202618 сент.
- Опубликован
- в 2026
Коротко о моде
Ставится только на сервер; игрокам ставить не нужно
World Switcher
Запускай несколько миров на одном сервере и дай игрокам переключаться между ними одной командой — в стиле Multiverse, но для NeoForge.
100% серверный: установка на клиент не нужна. Ванильные клиенты 1.21.1 могут заходить без мода, потому что World Switcher не регистрирует ни предметы, ни блоки, ни сетевые пакеты — кастомные миры используют ванильный тип измерения minecraft:overworld с ключом worldswitcher:*, который ванильные клиенты принимают.
🤖 Уведомление об использовании ИИ: Основная часть этого проекта была разработана в сотрудничестве с ИИ Claude от Anthropic (с JetBrains' Junie в качестве дополнительного помощника). ИИ помог с реализацией кода, документацией и структурой проекта. Хотя основные идеи и направление исходили от человеческого творчества, помощь ИИ сделала этот проект более надёжным и функционально полным. Мы верим в прозрачность использования ИИ, одновременно отмечая потенциал сотрудничества человека и ИИ в разработке программного обеспечения.
Возможности
- **`/ws
** — мгновенное переключение миров, без перезапуска сервера. Голая команда/wsвыводит список всех миров (кликабельный).default` — это ванильная группа миров (overworld/nether/end), доступная всегда. /wsc— управление мирами для операторов, сгруппированное по объекту действия:world(create,import,rename,load,unload,info,delete,gamerule,difficulty,gamemode,access),player(tp,state …),groupиconfig. Все команды до версии 1.5.0 по-прежнему работают как устаревшие псевдонимы.- Состояние игрока для каждого игрока и каждого мира (опционально, включено по умолчанию): инвентарь, эндер-сундук, опыт, здоровье, голод, эффекты, режим игры и последняя позиция хранятся отдельно для каждого мира. Ванильные измерения (overworld/nether/end) считаются одной группой.
- Модифицированное состояние игрока для каждого мира, без зависимостей и с настройкой по каждому ключу: сгенерированный файл
serverconfig/worldswitcher-playerdata.tomlс комментариями перечисляет всё, что найдено на вашем сервере — data attachments NeoForge (например, весь инвентарь Curios), постоянные NBT игрока (NeoForgeData, используется Waystones/Quark, …), жажду/температуру Tough As Nails и моды, которые ведут собственное хранилище, такие как Cosmetic Armor Reworked — каждый с указанием мода-владельца, описанием и простымtrue(для каждого мира) /false(глобально). Просматривай и меняй на лету с помощью/wsc config playerdata scanи `… set <true|false>`. - Группы миров: объедини любой набор миров в одну группу инвентаря, и они будут делить одно состояние игрока — честный способ синхронизировать миры. `/wsc group set
. Группаdefault— это ванильные измерения, так что помещение мира туда означает, что игроки сохраняют свои основные предметы (старое поведениеshareinventory`, по-прежнему доступное как псевдоним). - Перенос состояния игрока между мирами:
/wsc player state show|copy|move|swap|clear, включая офлайн-игроков. Позиция никогда не переносится; всё остальное — да, вместе с модифицированным состоянием. - Режим игры для каждого мира: мир может выдавать режим как по умолчанию, который задаёт первое посещение игрока, или принудительно, применяемый при каждом входе — разница между «это творческий мир» и «отсюда никто не выйдет из режима приключения». `/wsc world gamemode [forced]`.
- Ограниченные миры: задай миру минимальный уровень прав с помощью `/wsc world access <0-4>
. Проверяется для/ws`, для порталов, ведущих в него, и при входе; ограниченные миры также исчезают из автодополнения для игроков, которые не могут в них войти. - Игровые правила, время, погода и сложность для каждого мира: каждый управляемый мир ведёт свои собственные часы, погоду, правила и сложность.
/gamerule,/time,/weatherи/difficulty— контекстно-зависимы; замораживай время или устраивай вечную ночь в каждом мире отдельно, и сон пропускает ночь только в твоём мире. Работает и с модифицированными правилами, напримерdoSeasonCycleиз Serene Seasons. - Хуки команд: автоматически выполняй заданные администратором команды на события мира —
firstPlayerJoin(0 → 1 игрок),lastPlayerLeave(1 → 0 игроков) иplayerMoved(игрок переключает мир). Задавай их глобально и для каждого мира вserverconfig/worldswitcher-hooks.json, с переменными{{worldName}},{{worldId}},{{playerName}}и{{playerUuid}}и запуском от имени (server/player) для каждого хука. Перезагрузка на лету с помощью/wsc config hooks reload. Идеально для паузыdoDaylightCycle/doWeatherCycle(илиdoSeasonCycleиз Serene Seasons), пока мир пуст. - Кликабельные объявления о переключении: когда кто-то переключает мир, все остальные видят в чате сообщение, где название мира — кликабельная ссылка `/ws `, чтобы последовать за ним.
- Правильный импорт миров: копирует только данные overworld, читает сид и точку спавна из исходного
level.dat, так что генерация ландшафта продолжается бесшовно за границей импортированной области. Старые миры (1.18+) обновляются на лету. - Безопасное переименование: отображаемые имена отделены от внутреннего id мира — инвентари, точки спавна у кроватей и папки миров переживают переименования.
- Постоянство: зарегистрированные миры автоматически перезагружаются при старте сервера.
Обработаны крайние случаи
- Порталы в Nether внутри группы миров по умолчанию не трогают ваш инвентарь.
- Порталы, пересекающие группы миров, меняют состояние игрока так же, как это сделала бы команда
/ws(настраивается). - Смерть в мире без кровати возрождает вас в мире по умолчанию с вашим состоянием по умолчанию — ваши предметы остаются на месте смерти в другом мире.
- Если мир удалён, пока вы в нём офлайн, при входе вы безопасно переноситесь в оверворлд.
Настройка
Смотрите world/serverconfig/worldswitcher-server.toml, например separateInventories (по умолчанию true), wsPermissionLevel (0 = все могут использовать /ws), worldsFolder (папка импорта, по умолчанию worlds), autoLoadOnStartup, restoreLastPosition, handlePortalGroupChanges, perWorldGameRules, perWorldTimeAndWeather, perWorldDifficulty, announceSwitches и enableCommandHooks / hookDefaultRunAs. Рядом лежат два сгенерированных файла: worldswitcher-hooks.json для командных хуков и worldswitcher-playerdata.toml для решений по каждому ключу о том, какие данные игрока из модов привязаны к миру, а какие глобальны.
Заметки
- Всегда глобальны по своей природе: хардкор, блокировка сложности,
sendCommandFeedback,logAdminCommands,spawnChunkRadius. - Моды на карты (BlueMap и т. п.) увидят дополнительные измерения и могут потребовать настройки для каждого измерения.
- `/execute in worldswitcher: run ...` работает как обычно — удобно для отладки.
Об использовании ИИ
Этот проект демонстрирует потенциал сотрудничества человека и ИИ в разработке ПО. ИИ-ассистент помогал с реализацией кода, документацией, структурой проекта, настройкой CI/CD и исправлением багов. Хотя ИИ предоставлял техническую помощь, все творческие решения, идеи функций и направление проекта исходили от человека. Мы считаем, что такая прозрачность в использовании ИИ важна для сообщества открытого исходного кода.
Полная документация на GitHub.
Частые вопросы
Как установить World Switcher?
Установите NeoForge под свою версию Minecraft, скачайте World Switcher под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть World Switcher?
У World Switcher есть сборки для Minecraft 1.21–1.21.1.
Нужен ли World Switcher на сервере?
Ставится только на сервер; игрокам ставить не нужно