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

Custom Biome

Пользовательские биомы со своими цветами, туманом, небом и климатом; раскрашивайте их или показывайте одному игроку.

Бесплатныеv0.9Мир и строительство

Обзор​

Custom Biome позволяет создавать собственные биомы из веб-панели TypeWriter: цвета травы, листвы, воды, неба и тумана, настройки облаков и солнца, температуру и осадки. Новый биом создаётся на основе ванильного базового биома, поэтому появление мобов, особенности генерации и другие свойства наследуются, а переопределяете вы только то, что хотите изменить.

Биом можно использовать двумя способами. Его можно нарисовать в мире: в радиусе блоков, в выделении WorldEdit или в захваченной области, а позже вернуть прежние биомы из снимка. Либо его можно показать только одному игроку или аудитории с помощью наложения для каждого игрока: мир остаётся нетронутым, и никто другой изменений не видит. Так, например, заражённый лес может появляться только во время квеста.

Возможности​

  • Определения биомов — цвета (трава, листва, сухая листва, вода, небо, туман, туман в воде, облака, свет неба, рассвет/закат), расстояния тумана и облаков, настройки солнца, луны и звёзд, температура и осадки.
  • Пресеты — общая палитра для нескольких биомов, где переопределяется только отличающееся.
  • Регистрация на лету — биомы по возможности вносятся в реестр сервера и записываются в генерируемый датапак, чтобы пережить перезапуски.
  • Рисование в мире — применение биома вокруг игрока или по области с необязательным снимком для отмены.
  • Наложения для каждого игрока — показ биома одному игроку или аудитории через действие, аудиторию или кинематографическую сцену.
  • События входа и выхода — запуск записей, когда игрок входит в биом или покидает его.
  • Открытия — запоминание того, какие биомы посетил каждый игрок, и использование этого в фактах и квестах.
  • Факты, переменные и плейсхолдеры — чтение текущего биома, его свойств и числа открытых биомов.
  • Команды оператора — список биомов, просмотр биома под игроком, рисование, обновление и захват области.
  • Готов к Folia — запись планируется в регионе, которому принадлежит каждый чанк.

Установка​

  1. Установите PacketEvents. С его помощью отправляются наложения и обновления чанков; без него наложения отключены.
  2. Установите расширение TypeWriter Quest на вкладке Extensions веб-панели (его использует цель).
  3. По желанию: установите WorldEdit или FastAsyncWorldEdit, чтобы рисовать по выделению, сделанному в игре.
  4. По желанию: установите PlaceholderAPI, чтобы использовать плейсхолдеры ниже.
  5. Положите JAR-файл Custom Biome в plugins/Typewriter/extensions/ и перезапустите сервер.

Определения биомов записываются в датапак typewriter_custom_biomes в папке datapacks мира.

примечание

Визуальные атрибуты (расстояния тумана, высота облаков, настройки солнца, луны и звёзд) в исходном коде помечены как относящиеся к Minecraft 1.21.11 и новее. В более старых версиях действуют только цвета и климат.

Быстрый старт​

Создадим фиолетовый лес и покажем его игрокам на шаге квеста:

  1. В веб-панели TypeWriter откройте страницу manifest и добавьте запись Custom Biome Definition.
  2. Задайте biomeId (строчные буквы, подчёркивания, например corrupted_forest) и оставьте namespace равным typewriter. Установите baseBiome в minecraft:forest.
  3. Заполните цвета, которые хотите изменить, в формате hex, например grassColor #6a3d9a и foliageColor #4b2a73. Пустые поля наследуются от базового биома.
  4. Опубликуйте, затем выполните в игре /tw biome list, чтобы убедиться, что биом активен. Если он отображается как ожидающий перезапуска, перезапустите сервер.
  5. На странице manifest добавьте Biome Overlay Audience, выберите определение в biome и поместите запись под аудиторию, соответствующую шагу вашего квеста. Игрок видит биом, пока находится в аудитории, а настоящий биом возвращается, когда он её покидает (restoreOnExit).
  6. Чтобы ограничить биом зоной, задайте cornerA и cornerB либо встаньте в игре с выделением WorldEdit и выполните /tw biome region <entry>, чтобы заполнить углы.

Чтобы изменить сам мир, используйте Apply Biome или Paint Biome Region в последовательности действий. Задайте рисованию snapshotId, если хотите, чтобы Restore Biome мог его отменить.

подсказка

Создайте Custom Biome Preset для семейства биомов с одинаковыми небом и туманом и выберите его в preset каждого определения. Значения, заданные в определении, приоритетнее пресета, а пресет приоритетнее базового биома.

Как это работает​

Рисование записывает биом в данные мира, поэтому влияет на всех игроков и переживает перезапуск. Наложение отправляется только клиенту игрока: ничего не сохраняется, а его удаление возвращает настоящий биом. Если несколько наложений покрывают один чанк, показывается применённое последним, а его удаление открывает предыдущее.

Факты, переменные и плейсхолдеры по умолчанию читают биом, который игрок видит (PLAYER_VIEW, наложения включены). Задайте для фактов и переменных source равным REAL_WORLD, чтобы читать то, что на самом деле находится в мире.

Конфигурация​

Данные времени выполнения хранятся в plugins/Typewriter/custombiome/:

ПапкаСодержимое
discovery/По одному JSON-файлу на игрока (<uuid>.json) со списком посещённых им биомов.
snapshots/Биомы, записанные Paint Biome Region, если задан snapshotId.

Команды​

Корневая команда — /tw biome, для неё нужно typewriter.biome. Каждой подкоманде также нужно собственное право.

КомандаОписание
/tw biomeПоказывает список команд.
/tw biome listВыводит пользовательские биомы и показывает, активен ли каждый, ожидает ли перезапуска или не зарегистрирован.
/tw biome info [player]Показывает биом, в котором стоит игрок: название, ID, является ли он пользовательским, температуру, осадки и базовый биом.
/tw biome apply <biome> [radius]Рисует биом вокруг вас или целевого игрока в радиусе в блоках.
/tw biome refresh [radius]Заново отправляет данные биомов (радиус от 1 до 16 чанков) для чанков, нарисованных этим расширением рядом с игроком.
/tw biome region <entry>Копирует ваше выделение WorldEdit в cornerA и cornerB записи области, после чего опубликуйте страницу.

Редактируемые тексты​

Всё, что команды /tw biome выводят в игре, — это сниппеты TypeWriter, поэтому их можно переформулировать, перевести или перекрасить без пересборки. Откройте plugins/Typewriter/snippets.yml, найдите ключ в content.custombiome, измените значение и выполните /tw reload. Расширение регистрирует все свои сниппеты с текстом по умолчанию при запуске, поэтому после первого запуска они появляются в файле.

Тексты написаны в MiniMessage. {name} в тексте заменяется значением, указанным в таблице; пропущенный плейсхолдер просто не показывается, а несуществующий остаётся как написан. Плейсхолдеры PlaceholderAPI (%...%) тоже читаются, если команду выполняет игрок. Только префикс ответа Typewriter в коротких ответах (Typewriter ») приходит из движка и не входит в эти сниппеты, а журнал консоли сервера остаётся на английском.

Сниппет (в content.custombiome.)По умолчаниюПлейсхолдеры
command.list.empty<yellow>No custom biomes registered.</yellow>нет
command.list.header<gradient:#00d4ff:#0099ff><b>Custom Biomes ({count})</b></gradient>, с пустой строкой перед ним{count}
command.list.strategy<dark_gray>Strategy: {strategy}</dark_gray>, с пустой строкой после него{strategy}
command.list.strategy_livelive registry injection (reflection)нет
command.list.strategy_unsupportedunsupported ({reason}){reason} (техническое, на английском)
command.list.icon_live, icon_waiting, icon_missing• зелёным, ⚠ жёлтым, ✖ краснымнет
command.list.status_live, status_waiting, status_missingтексты при наведении: Live in the registry, Written to the datapack — needs a restart, Not registeredнет
command.list.entryодна строка на биом, с текстом при наведении и копированием по клику{icon}, {status}, {name}, {key}, {temperature}, {downfall}
command.list.temperature, command.list.downfall T:{value} и D:{value} серым{value}
command.info.headerBiome Info for {player}{player}
command.info.name, id, temperature, downfall, base_biomeName:, ID:, Temperature:, Downfall:, Base Biome:, затем значение{value}
command.info.custom_yes, custom_noCustom: Yes и Custom: Noнет
command.help.titleCustom Biome Commandsнет
command.help.list, info, apply, refresh, regionпо одной строке справки на командунет
command.region.no_selectionNo WorldEdit selection (or WorldEdit is not installed).нет
command.region.page_not_foundCould not find the page holding '{entry}'.{entry}
command.region.write_failedCould not write the region: {failures}{failures} (техническое, на английском)
command.region.doneRegion of {entry} set to {min} → {max} in {world}.{entry}, {min}, {max} (в виде x, y, z), {world}
command.region.publish_hintPublish the page for it to take effect.нет
command.refresh.noneNo painted chunks near {player} to refresh.{player}
command.refresh.doneResent biome data for {chunks} painted chunk(s) to {player}.{chunks}, {player}
command.apply.unknownUnknown biome: {biome}{biome}
command.apply.unknown_hintUse /tw biome list to see available custom biomes.нет
command.apply.nothingNothing to paint at that location.нет
command.apply.donePainting {biome} over {cells} cell(s) across {chunks} chunk(s).{biome}, {cells}, {chunks}
placeholder.unknownunknownнет
примечание

Три сниппета наведения для /tw biome list находятся внутри аргумента MiniMessage в одинарных кавычках, поэтому в них нельзя использовать одинарную кавычку.

placeholder.unknown — это то, что %typewriter_temperature%, %typewriter_downfall% и переменная Biome Property возвращают для биома, не являющегося пользовательским. true и false, возвращаемые %typewriter_is_custom%, остаются фиксированными, потому что условия сравнивают с ними.

Права​

ПравоДаёт доступ к
typewriter.biomeДоступ к дереву команд /tw biome.
typewriter.biome.list/tw biome list
typewriter.biome.info/tw biome info
typewriter.biome.apply/tw biome apply
typewriter.biome.refresh/tw biome refresh
typewriter.biome.region/tw biome region

Плейсхолдеры​

Плейсхолдеры PlaceholderAPI, обслуживаемые расширением typewriter. Плейсхолдеры игрока читают биом, который игроку показывается.

ПлейсхолдерВозвращает
%typewriter_current% или %typewriter_id%Ключ биома под игроком, например minecraft:plains.
%typewriter_name%Читаемое название биома.
%typewriter_key%Только часть ключа.
%typewriter_namespace%Только часть пространства имён.
%typewriter_is_custom%true или false.
%typewriter_temperature%Температура пользовательского биома, иначе unknown.
%typewriter_downfall%Осадки пользовательского биома, иначе unknown.
%typewriter_base%Базовый биом пользовательского биома или сам ключ биома.
%typewriter_count%Число зарегистрированных пользовательских биомов.
%typewriter_list%Отображаемые названия пользовательских биомов через запятую.
%typewriter_discovered_count%Число биомов, которые посетил игрок.
%typewriter_discovered_list%Ключи биомов, которые посетил игрок.
примечание

Расширение отвечает на указанные выше простые имена (%typewriter_current%, %typewriter_count% и так далее). В комментарии в его исходном коде упоминается префикс custombiome_, но код совпадает только с простыми именами.

Записи​

Записей: 20, сгенерированы из исходного кода расширения.

Действия5
События2
Цели1
Факты4
Аудитории2
Кинематики1
Переменные3
Манифесты2

Устранение неполадок​

/tw biome list показывает значок предупреждения и «needs a restart». Серверу не удалось добавить биом в живой реестр, поэтому он существует только в сгенерированном датапаке. Перезапустите сервер. Причина один раз записывается в консоль.

Мой биом не находится действием или событием. Идентификаторы биомов имеют вид namespace:id, например typewriter:corrupted_forest. Точный ключ смотрите в /tw biome list. Неизвестный идентификатор записывается в лог как предупреждение (unknown biome '…'), и действие ничего не делает.

Игрок никогда не видит наложение. Для наложений нужен PacketEvents: иначе консоль выводит PacketEvents unavailable: per-player biome overlays are disabled. Также проверьте, что игрок находится в аудитории, что биом настроен (пользовательское определение или vanillaBiome) и, для области, что оба угла находятся в загруженном мире.

Paint Biome Region ничего не делает. Если region равно WORLDEDIT_SELECTION, у вызвавшего игрока должно быть выделение WorldEdit, а сам WorldEdit должен быть установлен; консоль выводит has no WorldEdit selection. В остальных случаях используйте RADIUS_AROUND_PLAYER.

Restore Biome сообщает, что снимка не существует. Снимки записываются, только если у действия рисования есть snapshotId, и восстановление должно использовать то же имя. Если включено consume, снимок удаляется после восстановления.