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

Host Objects и публичные фасады

QuestScript предоставляет скрипту глобальные Host Objects. Главные из них:

  • world — игроки, измерения, события, Script Storage и Script-Owned Resources;
  • system — отложенные задачи, интервалы, jobs и текущий игровой тик.

Основной API использует публичные фасады World, Dimension, Block, Entity, Player и другие. Точный набор методов и значений описан в декларациях API.

Аргументы методов проходят одну и ту же языково-зависимую валидацию до обращения к Minecraft. JavaScript сохраняет Bedrock-форму с camelCase и plain options object, например dimension.getEntities({ minDistance: 4 }). Python использует snake_case, явные параметры и раскрывает поля одного верхнеуровневого options DTO в keyword-only аргументы, например dimension.get_entities(min_distance=4). Вложенные DTO, векторы, loadouts и пользовательские mappings остаются структурированными и не раскрываются рекурсивно.

Python различает пропущенный keyword и явно переданный None: None соответствует JavaScript null, а отсутствие поля включает объявленный default или ошибку required field. Возвращённые Host Object-векторы и фасады можно передавать в следующие параметры в обоих языках. Некорректная форма аргумента вызывает ошибку до изменения мира.

Статически объявленные свойства фасадов и DTO следуют тому же правилу: JavaScript читает event.brokenBlockPermutation.typeId, а Python — event.broken_block_permutation.type_id. При этом ключи обычных mappings, Script Storage, тегов и Script Exports остаются литеральными и не меняют регистр или стиль автоматически.

В текущей alpha-версии proxy-only Graal sandbox запрещает прямой Host/Polyglot access, поиск Java-классов, процессы, environment, sockets и unrestricted IO. Скрипт обращается к серверу только через QuestScript Host Objects и проверенные значения. При этом устаревший глобальный объект minecraft ещё доступен, capability grants для команд и мутаций пока не применяются, а полный аудит достижимости native-значений остаётся отдельной задачей. Поэтому загружайте только проверенные скрипты и учитывайте ограничения безопасности.

Полный перечень доступных типов и методов находится в API reference.