DimSwap
Состояние игрока для каждого измерения в NeoForge 1.21.1 — инвентарь, эндер-сундук, опыт, эффекты зелий, слоты Curios. Игроки автоматически меняют состояние при переходе между настроенными группами измерений. Работает на стороне сервера, установка на клиент не требуется.
- Загрузчики
- NeoForge
- Скачиваний на Modrinth
- 324
- Подписчиков на Modrinth
- 2
- версия
- 1
- Обновлён
- 27 мая 202627 мая
- Опубликован
- в 2026
Коротко о моде
Нужен на сервере; в игре — по желанию
DimSwap
Изоляция состояния игрока по измерениям для NeoForge. Автоматически сохраняет и восстанавливает инвентарь, эндер-сундук, опыт, эффекты зелий, голод, режим игры, позицию и слоты Curios, когда игрок пересекает границу между настраиваемыми группами измерений. Создай творческий тестовый мир, который не может протечь в выживание — или хардкорную зону с собственной прогрессией, или измерение для мини-игр с собственным снаряжением — полностью на стороне сервера, без клиентских модов, без костылей с датапаками.
Зачем это нужно
В NeoForge нет поддерживаемого мода «инвентарь на измерение» для 1.21.1. В экосистемах Fabric/Paper такие есть (Multiverse-Inventories, инструменты рядом с EasyAuth), но на NeoForge ты либо поднимаешь второй серверный процесс, либо миришься с тем, что игроки в творческом режиме случайно закинут творческие предметы в мир выживания. DimSwap решает вторую проблему: он цепляется за EntityTravelToDimensionEvent, чтобы атомарно сохранить полное состояние игрока перед переходом, и за PlayerChangedDimensionEvent, чтобы атомарно восстановить состояние, назначенное группе пункта назначения. При первом посещении состояние очищается начисто, чтобы ничего не переносилось.
Возможности
- Ванильное состояние: основной инвентарь + броня + вторая рука, эндер-сундук, уровни опыта, активные эффекты зелий, еда, запас воздуха, тики горения, режим игры, позиция
- Слоты Curios (опциональная зависимость): джетпаки, рюкзаки, кольца — все слоты Curios сохраняются и восстанавливаются
- Настраиваемость: какие поля менять, как сгруппированы измерения, какие команды открывать
- Атомарность и защита: неудачное сохранение/восстановление защитно очищает состояние, чтобы предотвратить утечки; NBT на игрока хранит снимки изолированно
- Пользовательские алиасы: определи
/creativeи/survival(или любое другое имя) как одноразовые команды телепортации со сменой состояния - Админ-инструменты:
/dimswap status, `/dimswap reset,/dimswap reload`
Установка
- Положи
dimswap-X.Y.Z.jarв папкуmods/твоего сервера. - Опционально: также положи на клиент (нужно только если хочешь, чтобы команды автодополнялись на стороне клиента; геймплей работает только на сервере).
- Запусти сервер один раз, чтобы сгенерировался
config/dimswap.json. - Отредактируй конфиг, чтобы задать группы измерений (см. ниже).
- Перезагрузи через
/dimswap reloadили перезапусти сервер.
Зависимости
- Обязательно: NeoForge 21.1+, Minecraft 1.21.1
- Опционально: Curios 9.5+ — для сохранения/восстановления слотов Curios. Без Curios мод всё равно работает для ванильного состояния.
Конфигурация
config/dimswap.json:
{
"groups": {
"default": ["minecraft:overworld", "minecraft:the_nether", "minecraft:the_end"],
"creative": ["dimswap_creative:flat"]
},
"save": {
"enderChest": true,
"xp": true,
"effects": true,
"food": true,
"air": true,
"fire": true,
"health": false,
"gamemode": true,
"position": true,
"curios": true
},
"aliases": [
{"name": "creative", "dimension": "dimswap_creative:flat", "gamemode": "creative", "permissionLevel": 0},
{"name": "survival", "dimension": "minecraft:overworld", "gamemode": "survival", "permissionLevel": 0}
]
}groups
Словарь имя группы → список ID измерений. Измерения в одной группе делят состояние. Измерения в разных группах имеют изолированное состояние. Любое измерение, не указанное в списке, попадает в группу default.
save
Переключатели того, какие поля состояния игрока менять. health: false (по умолчанию) оставляет игрока с текущим здоровьем при переходе — переключи на true, если хочешь здоровье на каждое измерение в хардкорном стиле.
aliases
Определяют команды-сокращения. Каждый алиас становится командой верхнего уровня (например, /creative), которая телепортирует игрока в целевое измерение с целевым режимом игры. permissionLevel: 0 означает, что использовать может любой; 2 — только для операторов.
Примечание: алиасы регистрируются при запуске сервера. Добавление/удаление алиасов требует перезапуска сервера. Изменения в
groupsиsaveприменяются через/dimswap reload.Команды
Команда Права Описание `/dimswap go [gamemode]` op (2) Телепортироваться в измерение, опционально задать режим игры /dimswap reloadop (2) Перезагрузить конфиг с диска /dimswap status [player]op (2) Показать, для каких групп есть сохранённые снимки у игрока `/dimswap reset ` op (2) Стереть снимок игрока для группы `/` настраивается Запустить настроенный алиас (например, /creative,/survival)Оговорки и известные ограничения
- Игрок должен быть
ServerPlayer— сценарии только с клиентом или только со встроенным сервером не поддерживаются.- Езда на сущностях: когда игрок меняет измерение верхом, ванилла спешивает его перед переносом. DimSwap не сохраняет, «на чём он ехал».
- Добавленные модами вложения вне Curios: если сторонний мод хранит состояние игрока в своём Data Attachment или capability, DimSwap его не захватывает. PR приветствуются для добавления слоёв совместимости под конкретные моды.
- Память позиции восстанавливается только если сохранённое измерение совпадает с измерением назначения (проверка на всякий случай). Переход через портал между измерениями во время смены остаётся согласованным.
- Первое посещение группы всегда очищает состояние — нет понятия «стартовое снаряжение» для группы. Используй отдельный мод с наборами или ванильную таблицу лута для снаряжения при первом посещении.
Сборка из исходников
./gradlew build # Output: build/libs/dimswap-1.0.0.jarТребуется JDK 21.
Лицензия
MIT — см.
LICENSE.Благодарности
Создан по необходимости для небольшого сервера выживания с модом Create, которому нужен был творческий тестовый мир без загрязнения инвентаря. Архитектура намеренно простая: событие сохранения, событие восстановления и NBT-хранилище на игрока.
Частые вопросы
Как установить DimSwap?
Установите NeoForge под свою версию Minecraft, скачайте DimSwap под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть DimSwap?
У DimSwap есть сборки для Minecraft 1.21.1.
Нужен ли DimSwap на сервере?
Нужен на сервере; в игре — по желанию