Temporary Dimension
Обзор
Temporary Dimension отправляет игрока в свежую копию шаблонного мира. Копия создаётся из шаблона Advanced SlimeWorld, когда игрок входит, существует только в памяти и выгружается, как только игрок ушёл, поэтому каждое посещение начинается с шаблона. Оно создано для подземелий, обучения, приватных комнат и декораций для кинематики, которые не должны быть общими или сохраняться.
Вы описываете измерение один раз записью Temporary Dimension Definition: шаблонные миры (один выбирается случайно), область, где появляются игроки, право на вход, заблокированные команды и то, что запускать при входе и выходе. Игроки входят в него командой, действием TypeWriter или админ-командой и возвращаются в то самое место, откуда ушли.
Оно работает на сборке BTC для TypeWriter и BTC Core (Paper/Folia), а также поддерживает серверы AdvancedSlimePaper. Создание, поиск точки появления и телепортация асинхронны и безопасны для Folia.
Возможности
- Экземпляры миров — каждый вход создаёт новый мир с названием
tempdim_<uuid>из шаблона и удаляет его, когда он пуст. - Несколько шаблонов — перечислите более одного шаблонного мира, и один будет выбран случайно.
- Безопасное случайное появление — случайные точки в области, затем поиск вокруг её центра, принимающий только воздух над твёрдым и неопасным блоком.
- Белый список блоков появления — ограничьте появление выбранными типами блоков.
- Чёрный список команд — блокируйте команды (и их формы
plugin:) пока игрок внутри. - Возврат в исходное место — игрок возвращается в то местоположение, с тем поворотом и в тот мир, откуда ушёл.
- Триггеры входа и выхода — запускайте любые записи TypeWriter и отправляйте сообщения MiniMessage при входе и выходе.
- Право для каждого измерения — право на каждое измерение, проверяемое командой и, по желанию, действием.
- Факты и плейсхолдеры — узнавайте, находится ли игрок в измерении, в каком именно и кто ещё в нём.
Установка
- Запустите сервер на BTC Core или на AdvancedSlimePaper; расширение ищет любой из них во время работы.
- Поместите JAR-файл Temporary Dimension в
plugins/Typewriter/extensions/и перезапустите сервер. - Подготовьте шаблонные миры как миры Slime:
- На BTC Core поместите их туда, откуда загрузчик Slime
fileчитает миры (по умолчаниюslime_worldsв папке сервера). - На AdvancedSlimePaper шаблон должен быть загруженным миром Slime с точным названием шаблона; он копируется из памяти.
- На BTC Core поместите их туда, откуда загрузчик Slime
- Выдайте игрокам право, которое вы зададите для измерения.
Начало работы
Создайте подземелье, в которое игроки смогут входить командой /typewriter tempdim dungeon1.
- Постройте своё подземелье как мир Slime с названием
dungeon1_templateи поместите его туда, где ваш сервер ожидает шаблоны (см. выше). - В веб-панели TypeWriter откройте страницу static и добавьте запись Temporary Dimension Definition.
- Задайте
commandNameравнымdungeon1,permissionравнымdimension.dungeon1и добавьтеdungeon1_templateвtemplateWorlds. - Задайте
spawnZoneдвумя противоположными углами (x1,y1,z1иx2,y2,z2) вокруг входа. Используйте координаты блоков шаблонного мира. - По желанию заполните
blacklistedCommands(например,home,spawn,tpa) и свяжите триггеры вonEnterиonExit. - Опубликуйте, выдайте тестовому игроку право и выполните
/typewriter tempdim dungeon1.
Чтобы вместо этого входить из квеста или от NPC, используйте Enter Temporary Dimension, а для выхода — Leave Temporary Dimension.
Команда измерения — это подкоманда /typewriter tempdim; расширение не регистрирует команду верхнего уровня. Короткую команду, например /dungeon1, можно предоставить записью TypeWriter custom_command на вашей странице, что делает регистрацию команд безопасной при перезагрузке.
Как это работает
Игрок может находиться только в одном временном измерении одновременно. Если создание не удалось (нет шаблона, шаблон не найден, нет безопасной точки появления в течение 10 секунд, сбой телепортации), игрок остаётся там, где был, получает сообщение об ошибке, а наполовину построенный мир удаляется. Если игрок отключается, он удаляется из экземпляра без телепортации, а мир закрывается, когда становится пустым. Каждый экземпляр закрывается, когда TypeWriter перезагружается или останавливается.
Команды
Все команды находятся под /typewriter.
| Команда | Описание |
|---|---|
/typewriter tempdim <commandName> | Войти в измерение, у которого совпадает commandName. Требуется permission измерения (пусто означает открыто для всех). |
/typewriter tempdim enter <dimension> | Войти в любое измерение, выбранное из списка записей, игнорируя его право. Требуется typewriter.temporarydimension.admin. |
/typewriter tempdim leave | Покинуть текущее измерение и вернуться в исходное место. Право не нужно. |
/typewriter tempdim list | Перечислить активные экземпляры с числом игроков и названием мира. Требуется typewriter.temporarydimension.admin. |
commandName принимает только буквы, цифры, _, - и : и не может быть enter, leave или list. Команды строятся при загрузке записей, поэтому опубликуйте после его изменения.
Права
| Право | Что даёт |
|---|---|
typewriter.temporarydimension.admin | /typewriter tempdim enter и /typewriter tempdim list. |
поле permission определения | /typewriter tempdim <commandName> и, если включён checkPermission, действие входа. |
Плейсхолдеры
Расширение MiniPlaceholders tempdim, используется как теги MiniMessage. Они возвращают пустое значение или 0/false, когда игрок не находится в измерении.
| Плейсхолдер | Возвращает |
|---|---|
<tempdim_in_dimension> | true или false. |
<tempdim_in_dimension_bool> | 1 или 0, для числовых сравнений. |
<tempdim_current> | Название записи текущего измерения. |
<tempdim_current_id> | Идентификатор записи текущего измерения. |
<tempdim_current_world> | Название мира экземпляра (tempdim_...). |
<tempdim_players> | Число игроков в экземпляре. |
<tempdim_players_list> | Имена игроков в экземпляре через запятую. |
В сообщениях определения <dimension> заменяется названием записи, а <command> в сообщении о заблокированной команде — заблокированной командой.
Записи
Записей: 5, сгенерированы из исходного кода расширения.
Действия2
- Enter Temporary Dimension ActionEnter a temporary dimension
- Leave Temporary Dimension ActionLeave current temporary dimension
Факты2
- In Specific Dimension FactCheck if player is in a specific dimension
- In Temporary Dimension FactCheck if player is in a temporary dimension
Манифесты1
- Temporary DimensionTemporary Dimension Definition
Устранение неполадок
Unable to prepare the temporary dimension. Шаблон не удалось клонировать. Сверьте название шаблона в templateWorlds с названием мира Slime, проверьте, что мир находится в slime_worlds (BTC Core) или загружен (AdvancedSlimePaper), и прочитайте предупреждение в логе, чтобы узнать причину. На серверах, которые не являются ни BTC Core, ни AdvancedSlimePaper, в логе написано unsupported server platform for SlimeWorld.
Ничего не происходит, а в логе написано no template configured. templateWorlds пуст или содержит только пустые названия.
No safe spawn was found in the temporary dimension. Ни одна из проверенных точек не имела двух свободных блоков воздуха над твёрдым блоком, который не является лавой, огнём, кактусом или магмой. Увеличьте spawnZone, убедитесь, что она охватывает твёрдую землю шаблона (включая Y), и проверьте, что spawnBlockWhitelist содержит блок пола.
You are already in a temporary dimension. Игрок может находиться только в одном экземпляре. Сначала используйте команду или действие выхода.
Команда всё ещё работает внутри измерения. Записывайте название команды без слэша в blacklistedCommands. Сопоставление идёт по первому слову, без учёта регистра, и также блокирует формы name:command, но не псевдонимы, зарегистрированные под другим названием.
Команды измерения нет после редактирования. Команды измерений генерируются из записей: опубликуйте страницу и проверьте, что commandName использует только допустимые символы и не конфликтует с другим измерением.