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.