{ "typeDefs": [{"name":"@minecraft/server","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @packageDocumentation",
" * Contains many types related to manipulating a Minecraft",
" * world, including entities, blocks, dimensions, and more.",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server',",
" *   'version': '2.0.0'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"// @ts-ignore Optional types-only package, will decay to any if @minecraft/vanilla-data isn't installed",
"import type * as minecraftvanilladata from '@minecraft/vanilla-data';",
"/**",
" * The types of block components that are accessible via",
" * function Block.getComponent.",
" */",
"export enum BlockComponentTypes {",
"    FluidContainer = 'minecraft:fluid_container',",
"    /**",
"     * @remarks",
"     * Represents the inventory of a block in the world. Used with",
"     * blocks like chests.",
"     *",
"     */",
"    Inventory = 'minecraft:inventory',",
"    /**",
"     * @remarks",
"     * When present, this block has piston-like behavior. Contains",
"     * additional properties for discovering block piston state.",
"     *",
"     */",
"    Piston = 'minecraft:piston',",
"    /**",
"     * @remarks",
"     * Represents a block that can play a record.",
"     *",
"     */",
"    RecordPlayer = 'minecraft:record_player',",
"    /**",
"     * @remarks",
"     * Represents a block that can display text on it.",
"     *",
"     */",
"    Sign = 'minecraft:sign',",
"}",
"/**",
" * An enumeration describing the state of a block piston.",
" */",
"export enum BlockPistonState {",
"    /**",
"     * @remarks",
"     * Whether the piston is fully expanded.",
"     *",
"     */",
"    Expanded = 'Expanded',",
"    /**",
"     * @remarks",
"     * Whether the piston is in the process of expanding.",
"     *",
"     */",
"    Expanding = 'Expanding',",
"    /**",
"     * @remarks",
"     * Whether the piston is fully retracted.",
"     *",
"     */",
"    Retracted = 'Retracted',",
"    /**",
"     * @remarks",
"     * Whether the piston is in the process of retracting.",
"     *",
"     */",
"    Retracting = 'Retracting',",
"}",
"/**",
" * Description of the resulting intersection test on two",
" * BlockVolume objects",
" */",
"export enum BlockVolumeIntersection {",
"    /**",
"     * @remarks",
"     * Volume B has no intersection points with Volume A",
"     *",
"     */",
"    Disjoint = 0,",
"    /**",
"     * @remarks",
"     * Volume B resides completely inside Volume A",
"     *",
"     */",
"    Contains = 1,",
"    /**",
"     * @remarks",
"     * Volume B partially intersects Volume A",
"     *",
"     */",
"    Intersects = 2,",
"}",
"/**",
" * The state of a button on a keyboard, controller, or touch",
" * interface.",
" */",
"export enum ButtonState {",
"    Pressed = 'Pressed',",
"    Released = 'Released',",
"}",
"export enum CustomComponentNameErrorReason {",
"    NoNamespace = 1,",
"    DisallowedNamespace = 2,",
"}",
"/**",
" * An enumeration for the various difficulty levels of",
" * Minecraft.",
" */",
"export enum Difficulty {",
"    /**",
"     * @remarks",
"     * Easy difficulty level.",
"     *",
"     */",
"    Easy = 'Easy',",
"    /**",
"     * @remarks",
"     * Hard difficulty level.",
"     *",
"     */",
"    Hard = 'Hard',",
"    /**",
"     * @remarks",
"     * Normal difficulty level.",
"     *",
"     */",
"    Normal = 'Normal',",
"    /**",
"     * @remarks",
"     * Peaceful difficulty level.",
"     *",
"     */",
"    Peaceful = 'Peaceful',",
"}",
"/**",
" * A general purpose relative direction enumeration.",
" */",
"export enum Direction {",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} beneath (y - 1) of this item.",
"     *",
"     */",
"    Down = 'Down',",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the east (x + 1) of this item.",
"     *",
"     */",
"    East = 'East',",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the east (z + 1) of this item.",
"     *",
"     */",
"    North = 'North',",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the south (z - 1) of this item.",
"     *",
"     */",
"    South = 'South',",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} above (y + 1) of this item.",
"     *",
"     */",
"    Up = 'Up',",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the west (x - 1) of this item.",
"     *",
"     */",
"    West = 'West',",
"}",
"/**",
" * Specifies a mechanism for displaying scores on a scoreboard.",
" */",
"export enum DisplaySlotId {",
"    /**",
"     * @remarks",
"     * Displays the score below the player's name.",
"     *",
"     */",
"    BelowName = 'BelowName',",
"    /**",
"     * @remarks",
"     * Displays the score as a list on the pause screen.",
"     *",
"     */",
"    List = 'List',",
"    /**",
"     * @remarks",
"     * Displays the score on the side of the player's screen.",
"     *",
"     */",
"    Sidebar = 'Sidebar',",
"}",
"/**",
" * Specifies different colors for use as dye.",
" */",
"export enum DyeColor {",
"    /**",
"     * @remarks",
"     * Black dye color.",
"     *",
"     */",
"    Black = 'Black',",
"    /**",
"     * @remarks",
"     * Blue dye color.",
"     *",
"     */",
"    Blue = 'Blue',",
"    /**",
"     * @remarks",
"     * Brown dye color.",
"     *",
"     */",
"    Brown = 'Brown',",
"    /**",
"     * @remarks",
"     * Cyan dye color.",
"     *",
"     */",
"    Cyan = 'Cyan',",
"    /**",
"     * @remarks",
"     * Gray dye color.",
"     *",
"     */",
"    Gray = 'Gray',",
"    /**",
"     * @remarks",
"     * Green dye color.",
"     *",
"     */",
"    Green = 'Green',",
"    /**",
"     * @remarks",
"     * Light blue dye color.",
"     *",
"     */",
"    LightBlue = 'LightBlue',",
"    /**",
"     * @remarks",
"     * Lime dye color.",
"     *",
"     */",
"    Lime = 'Lime',",
"    /**",
"     * @remarks",
"     * Magenta dye color.",
"     *",
"     */",
"    Magenta = 'Magenta',",
"    /**",
"     * @remarks",
"     * Orange dye color.",
"     *",
"     */",
"    Orange = 'Orange',",
"    /**",
"     * @remarks",
"     * Pink dye color.",
"     *",
"     */",
"    Pink = 'Pink',",
"    /**",
"     * @remarks",
"     * Purple dye color.",
"     *",
"     */",
"    Purple = 'Purple',",
"    /**",
"     * @remarks",
"     * Red dye color.",
"     *",
"     */",
"    Red = 'Red',",
"    /**",
"     * @remarks",
"     * Silver dye color.",
"     *",
"     */",
"    Silver = 'Silver',",
"    /**",
"     * @remarks",
"     * White dye color.",
"     *",
"     */",
"    White = 'White',",
"    /**",
"     * @remarks",
"     * Yellow dye color.",
"     *",
"     */",
"    Yellow = 'Yellow',",
"}",
"export enum EasingType {",
"    InBack = 'InBack',",
"    InBounce = 'InBounce',",
"    InCirc = 'InCirc',",
"    InCubic = 'InCubic',",
"    InElastic = 'InElastic',",
"    InExpo = 'InExpo',",
"    InOutBack = 'InOutBack',",
"    InOutBounce = 'InOutBounce',",
"    InOutCirc = 'InOutCirc',",
"    InOutCubic = 'InOutCubic',",
"    InOutElastic = 'InOutElastic',",
"    InOutExpo = 'InOutExpo',",
"    InOutQuad = 'InOutQuad',",
"    InOutQuart = 'InOutQuart',",
"    InOutQuint = 'InOutQuint',",
"    InOutSine = 'InOutSine',",
"    InQuad = 'InQuad',",
"    InQuart = 'InQuart',",
"    InQuint = 'InQuint',",
"    InSine = 'InSine',",
"    Linear = 'Linear',",
"    OutBack = 'OutBack',",
"    OutBounce = 'OutBounce',",
"    OutCirc = 'OutCirc',",
"    OutCubic = 'OutCubic',",
"    OutElastic = 'OutElastic',",
"    OutExpo = 'OutExpo',",
"    OutQuad = 'OutQuad',",
"    OutQuart = 'OutQuart',",
"    OutQuint = 'OutQuint',",
"    OutSine = 'OutSine',",
"    Spring = 'Spring',",
"}",
"export enum EnchantmentSlot {",
"    ArmorFeet = 'ArmorFeet',",
"    ArmorHead = 'ArmorHead',",
"    ArmorLegs = 'ArmorLegs',",
"    ArmorTorso = 'ArmorTorso',",
"    Axe = 'Axe',",
"    Bow = 'Bow',",
"    CarrotStick = 'CarrotStick',",
"    CosmeticHead = 'CosmeticHead',",
"    Crossbow = 'Crossbow',",
"    Elytra = 'Elytra',",
"    FishingRod = 'FishingRod',",
"    Flintsteel = 'Flintsteel',",
"    Hoe = 'Hoe',",
"    Pickaxe = 'Pickaxe',",
"    Shears = 'Shears',",
"    Shield = 'Shield',",
"    Shovel = 'Shovel',",
"    Spear = 'Spear',",
"    Sword = 'Sword',",
"}",
"/**",
" * The types of entity components that are accessible via",
" * function Entity.getComponent.",
" */",
"export enum EntityComponentTypes {",
"    /**",
"     * @remarks",
"     * When added, this component makes the entity spawn with a",
"     * rider of the specified entityType.",
"     *",
"     */",
"    AddRider = 'minecraft:addrider',",
"    /**",
"     * @remarks",
"     * Adds a timer for the entity to grow up. It can be",
"     * accelerated by giving the entity the items it likes as",
"     * defined by feedItems.",
"     *",
"     */",
"    Ageable = 'minecraft:ageable',",
"    /**",
"     * @remarks",
"     * Defines what blocks this entity can breathe in and gives",
"     * them the ability to suffocate.",
"     *",
"     */",
"    Breathable = 'minecraft:breathable',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that the entity can",
"     * climb up ladders.",
"     *",
"     */",
"    CanClimb = 'minecraft:can_climb',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that the entity can",
"     * fly, and the pathfinder won't be restricted to paths where a",
"     * solid block is required underneath it.",
"     *",
"     */",
"    CanFly = 'minecraft:can_fly',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that the entity can",
"     * power jump like the horse does within Minecraft.",
"     *",
"     */",
"    CanPowerJump = 'minecraft:can_power_jump',",
"    /**",
"     * @remarks",
"     * Defines the entity's color. Only works on certain entities",
"     * that have predefined color values (e.g., sheep, llama,",
"     * shulker).",
"     *",
"     */",
"    Color = 'minecraft:color',",
"    /**",
"     * @remarks",
"     * Defines the entity's secondary color. Only works on certain",
"     * entities that have predefined secondary color values (e.g.,",
"     * tropical fish).",
"     *",
"     */",
"    Color2 = 'minecraft:color2',",
"    CursorInventory = 'minecraft:cursor_inventory',",
"    /**",
"     * @remarks",
"     * Provides access to a mob's equipment slots. This component",
"     * exists for all mob entities.",
"     *",
"     */",
"    Equippable = 'minecraft:equippable',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity",
"     * doesn't take damage from fire.",
"     *",
"     */",
"    FireImmune = 'minecraft:fire_immune',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity can",
"     * float in liquid blocks.",
"     *",
"     */",
"    FloatsInLiquid = 'minecraft:floats_in_liquid',",
"    /**",
"     * @remarks",
"     * Represents the flying speed of an entity.",
"     *",
"     */",
"    FlyingSpeed = 'minecraft:flying_speed',",
"    /**",
"     * @remarks",
"     * Defines how much friction affects this entity.",
"     *",
"     */",
"    FrictionModifier = 'minecraft:friction_modifier',",
"    /**",
"     * @remarks",
"     * Defines the interactions with this entity for healing it.",
"     *",
"     */",
"    Healable = 'minecraft:healable',",
"    /**",
"     * @remarks",
"     * Defines the health properties of an entity.",
"     *",
"     */",
"    Health = 'minecraft:health',",
"    /**",
"     * @remarks",
"     * Defines this entity's inventory properties.",
"     *",
"     */",
"    Inventory = 'minecraft:inventory',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is a",
"     * baby.",
"     *",
"     */",
"    IsBaby = 'minecraft:is_baby',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * charged.",
"     *",
"     */",
"    IsCharged = 'minecraft:is_charged',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently carrying a chest.",
"     *",
"     */",
"    IsChested = 'minecraft:is_chested',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that dyes can be used",
"     * on this entity to change its color.",
"     *",
"     */",
"    IsDyeable = 'minecraft:is_dyeable',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity can",
"     * hide from hostile mobs while invisible.",
"     *",
"     */",
"    IsHiddenWhenInvisible = 'minecraft:is_hidden_when_invisible',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity this",
"     * currently on fire.",
"     *",
"     */",
"    IsIgnited = 'minecraft:is_ignited',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is an",
"     * illager captain.",
"     *",
"     */",
"    IsIllagerCaptain = 'minecraft:is_illager_captain',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently saddled.",
"     *",
"     */",
"    IsSaddled = 'minecraft:is_saddled',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently shaking.",
"     *",
"     */",
"    IsShaking = 'minecraft:is_shaking',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently sheared.",
"     *",
"     */",
"    IsSheared = 'minecraft:is_sheared',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity can be",
"     * stacked.",
"     *",
"     */",
"    IsStackable = 'minecraft:is_stackable',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently stunned.",
"     *",
"     */",
"    IsStunned = 'minecraft:is_stunned',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity is",
"     * currently tamed.",
"     *",
"     */",
"    IsTamed = 'minecraft:is_tamed',",
"    /**",
"     * @remarks",
"     * If added onto the entity, this indicates that the entity",
"     * represents a free-floating item in the world. Lets you",
"     * retrieve the actual item stack contents via the itemStack",
"     * property.",
"     *",
"     */",
"    Item = 'minecraft:item',",
"    /**",
"     * @remarks",
"     * Defines the base movement speed in lava of this entity.",
"     *",
"     */",
"    LavaMovement = 'minecraft:lava_movement',",
"    /**",
"     * @remarks",
"     * Allows this entity to be leashed and defines the conditions",
"     * and events for this entity when is leashed.",
"     *",
"     */",
"    Leashable = 'minecraft:leashable',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity",
"     * contains an additional variant value. Can be used to further",
"     * differentiate variants.",
"     *",
"     */",
"    MarkVariant = 'minecraft:mark_variant',",
"    /**",
"     * @remarks",
"     * Defines the general movement speed of this entity.",
"     *",
"     */",
"    Movement = 'minecraft:movement',",
"    /**",
"     * @remarks",
"     * When added, this movement control allows the mob to swim in",
"     * water and walk on land.",
"     *",
"     */",
"    MovementAmphibious = 'minecraft:movement.amphibious',",
"    /**",
"     * @remarks",
"     * When added, this component allows the movement of an entity.",
"     *",
"     */",
"    MovementBasic = 'minecraft:movement.basic',",
"    /**",
"     * @remarks",
"     * When added, this move control causes the mob to fly.",
"     *",
"     */",
"    MovementFly = 'minecraft:movement.fly',",
"    /**",
"     * @remarks",
"     * When added, this move control allows a mob to fly, swim,",
"     * climb, etc.",
"     *",
"     */",
"    MovementGeneric = 'minecraft:movement.generic',",
"    /**",
"     * @remarks",
"     * When added, this movement control allows the mob to glide.",
"     *",
"     */",
"    MovementGlide = 'minecraft:movement.glide',",
"    /**",
"     * @remarks",
"     * When added, this move control causes the mob to hover.",
"     *",
"     */",
"    MovementHover = 'minecraft:movement.hover',",
"    /**",
"     * @remarks",
"     * Move control that causes the mob to jump as it moves with a",
"     * specified delay between jumps.",
"     *",
"     */",
"    MovementJump = 'minecraft:movement.jump',",
"    /**",
"     * @remarks",
"     * When added, this move control causes the mob to hop as it",
"     * moves.",
"     *",
"     */",
"    MovementSkip = 'minecraft:movement.skip',",
"    /**",
"     * @remarks",
"     * When added, this move control causes the mob to sway side to",
"     * side giving the impression it is swimming.",
"     *",
"     */",
"    MovementSway = 'minecraft:movement.sway',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths that include vertical",
"     * walls (for example, like Minecraft spiders do.)",
"     *",
"     */",
"    NavigationClimb = 'minecraft:navigation.climb',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths by flying around the",
"     * air like the regular Ghast.",
"     *",
"     */",
"    NavigationFloat = 'minecraft:navigation.float',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths in the air (for",
"     * example, like Minecraft parrots do.)",
"     *",
"     */",
"    NavigationFly = 'minecraft:navigation.fly',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths by walking, swimming,",
"     * flying and/or climbing around and jumping up and down a",
"     * block.",
"     *",
"     */",
"    NavigationGeneric = 'minecraft:navigation.generic',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths in the air (for",
"     * example, like the Minecraft Bees do.) Keeps them from",
"     * falling out of the skies and doing predictive movement.",
"     *",
"     */",
"    NavigationHover = 'minecraft:navigation.hover',",
"    /**",
"     * @remarks",
"     * Allows this entity to generate paths by walking around and",
"     * jumping up and down a block like regular mobs.",
"     *",
"     */",
"    NavigationWalk = 'minecraft:navigation.walk',",
"    /**",
"     * @remarks",
"     * When present on an entity, this entity is on fire.",
"     *",
"     */",
"    OnFire = 'minecraft:onfire',",
"    /**",
"     * @remarks",
"     * The projectile component controls the properties of a",
"     * projectile entity and allows it to be shot in a given",
"     * direction. This component is present when the entity has the",
"     * minecraft:projectile component.",
"     *",
"     */",
"    Projectile = 'minecraft:projectile',",
"    /**",
"     * @remarks",
"     * Sets the distance through which the entity can push through.",
"     *",
"     */",
"    PushThrough = 'minecraft:push_through',",
"    /**",
"     * @remarks",
"     * When added, this component adds the capability that an",
"     * entity can be ridden by another entity.",
"     *",
"     */",
"    Rideable = 'minecraft:rideable',",
"    /**",
"     * @remarks",
"     * This component is added to any entity when it is riding",
"     * another entity.",
"     *",
"     */",
"    Riding = 'minecraft:riding',",
"    /**",
"     * @remarks",
"     * Sets the entity's visual size.",
"     *",
"     */",
"    Scale = 'minecraft:scale',",
"    /**",
"     * @remarks",
"     * Skin Id value. Can be used to differentiate skins, such as",
"     * base skins for villagers.",
"     *",
"     */",
"    SkinId = 'minecraft:skin_id',",
"    /**",
"     * @remarks",
"     * Defines the entity's strength to carry items.",
"     *",
"     */",
"    Strength = 'minecraft:strength',",
"    /**",
"     * @remarks",
"     * Defines the rules for an entity to be tamed by the player.",
"     *",
"     */",
"    Tameable = 'minecraft:tameable',",
"    /**",
"     * @remarks",
"     * Contains options for taming a rideable entity based on the",
"     * entity that mounts it.",
"     *",
"     */",
"    TameMount = 'minecraft:tamemount',",
"    /**",
"     * @remarks",
"     * Used to determine the type families the entity belongs to.",
"     *",
"     */",
"    TypeFamily = 'minecraft:type_family',",
"    /**",
"     * @remarks",
"     * Defines the general movement speed underwater of this",
"     * entity.",
"     *",
"     */",
"    UnderwaterMovement = 'minecraft:underwater_movement',",
"    /**",
"     * @remarks",
"     * Used to differentiate the component group of a variant of an",
"     * entity from others. (e.g. ocelot, villager).",
"     *",
"     */",
"    Variant = 'minecraft:variant',",
"    /**",
"     * @remarks",
"     * When added, this component signifies that this entity wants",
"     * to become a jockey.",
"     *",
"     */",
"    WantsJockey = 'minecraft:wants_jockey',",
"}",
"/**",
" * Describes the source of damage from an Entity.",
" */",
"export enum EntityDamageCause {",
"    /**",
"     * @remarks",
"     * Damage caused by a falling anvil.",
"     *",
"     */",
"    anvil = 'anvil',",
"    /**",
"     * @remarks",
"     * Damage caused from a non-Entity explosion. For example, an",
"     * exploding bed.",
"     *",
"     */",
"    blockExplosion = 'blockExplosion',",
"    /**",
"     * @remarks",
"     * Damage caused by Campfires.",
"     *",
"     */",
"    campfire = 'campfire',",
"    /**",
"     * @remarks",
"     * Unused.",
"     *",
"     */",
"    charging = 'charging',",
"    /**",
"     * @remarks",
"     * Damage caused by physically touching an Entity or Block. For",
"     * example, touching a Sweet Berry bush or Pufferfish.",
"     *",
"     */",
"    contact = 'contact',",
"    /**",
"     * @remarks",
"     * Damage caused by an Entity being out of air and inside a",
"     * liquid block.",
"     *",
"     */",
"    drowning = 'drowning',",
"    /**",
"     * @remarks",
"     * Damage caused by an Entity attack.",
"     *",
"     */",
"    entityAttack = 'entityAttack',",
"    /**",
"     * @remarks",
"     * Damage caused by an Entity explosion. For example, a Creeper",
"     * or Wither.",
"     *",
"     */",
"    entityExplosion = 'entityExplosion',",
"    /**",
"     * @remarks",
"     * Damage caused by falling onto the ground.",
"     *",
"     */",
"    fall = 'fall',",
"    /**",
"     * @remarks",
"     * Damage caused by falling blocks. Note: Anvils and",
"     * Stalactites have their own damage causes.",
"     *",
"     */",
"    fallingBlock = 'fallingBlock',",
"    /**",
"     * @remarks",
"     * Damage caused by catching on fire.",
"     *",
"     */",
"    fire = 'fire',",
"    /**",
"     * @remarks",
"     * Damage caused by burning over time.",
"     *",
"     */",
"    fireTick = 'fireTick',",
"    /**",
"     * @remarks",
"     * Damage caused by fireworks.",
"     *",
"     */",
"    fireworks = 'fireworks',",
"    /**",
"     * @remarks",
"     * Damage caused by flying into a wall at high speed while",
"     * gliding with Elytra.",
"     *",
"     */",
"    flyIntoWall = 'flyIntoWall',",
"    /**",
"     * @remarks",
"     * Damage caused by staying inside a Powder Snow block.",
"     *",
"     */",
"    freezing = 'freezing',",
"    /**",
"     * @remarks",
"     * Damage caused by touching a Lava block.",
"     *",
"     */",
"    lava = 'lava',",
"    /**",
"     * @remarks",
"     * Damage caused by being struck by lightning.",
"     *",
"     */",
"    lightning = 'lightning',",
"    maceSmash = 'maceSmash',",
"    /**",
"     * @remarks",
"     * Damage caused by magical attacks. For example, Evoker Fang",
"     * or Conduit Block.",
"     *",
"     */",
"    magic = 'magic',",
"    /**",
"     * @remarks",
"     * Damage caused by touching a Magma block.",
"     *",
"     */",
"    magma = 'magma',",
"    /**",
"     * @remarks",
"     * Damage caused by no source. For example, from a command or",
"     * script.",
"     *",
"     */",
"    none = 'none',",
"    /**",
"     * @remarks",
"     * Damage caused by an indirect source. For example, setting a",
"     * mob's health to 0 in a behavior pack.",
"     *",
"     */",
"    override = 'override',",
"    /**",
"     * @remarks",
"     * Damage caused by a Piston.",
"     *",
"     */",
"    piston = 'piston',",
"    /**",
"     * @remarks",
"     * Damage caused by a projectile.",
"     *",
"     */",
"    projectile = 'projectile',",
"    /**",
"     * @remarks",
"     * Damage caused by Goat ramming.",
"     *",
"     */",
"    ramAttack = 'ramAttack',",
"    /**",
"     * @remarks",
"     * Damage caused by the /kill command.",
"     *",
"     */",
"    selfDestruct = 'selfDestruct',",
"    /**",
"     * @remarks",
"     * Damage caused by the Warden's Sonic Boom attack.",
"     *",
"     */",
"    sonicBoom = 'sonicBoom',",
"    /**",
"     * @remarks",
"     * Damage caused by a Soul Campfire.",
"     *",
"     */",
"    soulCampfire = 'soulCampfire',",
"    /**",
"     * @remarks",
"     * Damage caused by a falling Stalactite block.",
"     *",
"     */",
"    stalactite = 'stalactite',",
"    /**",
"     * @remarks",
"     * Damage caused by touching a Stalagmite block.",
"     *",
"     */",
"    stalagmite = 'stalagmite',",
"    /**",
"     * @remarks",
"     * Damage caused over time by having an empty hunger bar.",
"     *",
"     */",
"    starve = 'starve',",
"    /**",
"     * @remarks",
"     * Damage caused by an Entity being out of air and inside a",
"     * non-liquid block.",
"     *",
"     */",
"    suffocation = 'suffocation',",
"    /**",
"     * @remarks",
"     * Damage caused by an Entity being in an inhabitable climate.",
"     * For example, a Snow Golem in a biome with a temperature",
"     * greater than 1.",
"     *",
"     */",
"    temperature = 'temperature',",
"    /**",
"     * @remarks",
"     * Damage caused by the Thorns armor enchantment and by the",
"     * Guardian thorns effect.",
"     *",
"     */",
"    thorns = 'thorns',",
"    /**",
"     * @remarks",
"     * Damage caused over time by falling into the void.",
"     *",
"     */",
"    'void' = 'void',",
"    /**",
"     * @remarks",
"     * Damage caused by the Wither effect. For example, from",
"     * touching a Wither Rose.",
"     *",
"     */",
"    wither = 'wither',",
"}",
"/**",
" * An enumeration describing initialization cause of an entity.",
" */",
"export enum EntityInitializationCause {",
"    /**",
"     * @remarks",
"     * Case when an entity is created as child of other entity or",
"     * entities, e.g., cows making a cow or slimes making smaller",
"     * slimes after dying.",
"     *",
"     */",
"    Born = 'Born',",
"    /**",
"     * @remarks",
"     * Case when an entity is created by an event, e.g., a",
"     * Wandering trader spawning llamas.",
"     *",
"     */",
"    Event = 'Event',",
"    /**",
"     * @remarks",
"     * Case when an entity is loaded into the world.",
"     *",
"     */",
"    Loaded = 'Loaded',",
"    /**",
"     * @remarks",
"     * Case when an entity is naturally spawned in the world.",
"     *",
"     */",
"    Spawned = 'Spawned',",
"    /**",
"     * @remarks",
"     * Case when an entity is transformed into another entity.",
"     *",
"     */",
"    Transformed = 'Transformed',",
"}",
"/**",
" * The equipment slot of the mob. This includes armor, offhand",
" * and mainhand slots.",
" */",
"export enum EquipmentSlot {",
"    /**",
"     * @remarks",
"     * The chest slot. This slot is used to hold items such as",
"     * Chestplate or Elytra.",
"     *",
"     */",
"    Chest = 'Chest',",
"    /**",
"     * @remarks",
"     * The feet slot. This slot is used to hold items such as",
"     * Boots.",
"     *",
"     */",
"    Feet = 'Feet',",
"    /**",
"     * @remarks",
"     * The head slot. This slot is used to hold items such as",
"     * Helmets or Carved Pumpkins.",
"     *",
"     */",
"    Head = 'Head',",
"    /**",
"     * @remarks",
"     * The legs slot. This slot is used to hold items such as",
"     * Leggings.",
"     *",
"     */",
"    Legs = 'Legs',",
"    /**",
"     * @remarks",
"     * The mainhand slot. For players, the mainhand slot refers to",
"     * the currently active hotbar slot.",
"     *",
"     */",
"    Mainhand = 'Mainhand',",
"    /**",
"     * @remarks",
"     * The offhand slot. This slot is used to hold items such as",
"     * shields and maps.",
"     *",
"     */",
"    Offhand = 'Offhand',",
"}",
"/**",
" * Represents the type of fluid for use within a fluid",
" * containing block, like a cauldron.",
" */",
"export enum FluidType {",
"    /**",
"     * @remarks",
"     * Represents lava as a type of fluid.",
"     *",
"     */",
"    Lava = 'Lava',",
"    /**",
"     * @remarks",
"     * Represents a potion as a type of fluid.",
"     *",
"     */",
"    Potion = 'Potion',",
"    /**",
"     * @remarks",
"     * Represents powder snow as a type of fluid.",
"     *",
"     */",
"    PowderSnow = 'PowderSnow',",
"    /**",
"     * @remarks",
"     * Represents water as a type of fluida.",
"     *",
"     */",
"    Water = 'Water',",
"}",
"/**",
" * Represents a game mode for the current world experience.",
" */",
"export enum GameMode {",
"    /**",
"     * @remarks",
"     * World is in a more locked-down experience, where blocks may",
"     * not be manipulated.",
"     *",
"     */",
"    Adventure = 'Adventure',",
"    /**",
"     * @remarks",
"     * World is in a full creative mode. In creative mode, the",
"     * player has all the resources available in the item selection",
"     * tabs and the survival selection tab. They can also destroy",
"     * blocks instantly including those which would normally be",
"     * indestructible. Command and structure blocks can also be",
"     * used in creative mode. Items also do not lose durability or",
"     * disappear.",
"     *",
"     */",
"    Creative = 'Creative',",
"    /**",
"     * @remarks",
"     * World is in spectator mode. In spectator mode, spectators",
"     * are always flying and cannot become grounded. Spectators can",
"     * pass through solid blocks and entities without any",
"     * collisions, and cannot use items or interact with blocks or",
"     * mobs. Spectators cannot be seen by mobs or other players,",
"     * except for other spectators; spectators appear as a",
"     * transparent floating head.",
"     *",
"     */",
"    Spectator = 'Spectator',",
"    /**",
"     * @remarks",
"     * World is in a survival mode, where players can take damage",
"     * and entities may not be peaceful. Survival mode is where the",
"     * player must collect resources, build structures while",
"     * surviving in their generated world. Activities can, over",
"     * time, chip away at player health and hunger bar.",
"     *",
"     */",
"    Survival = 'Survival',",
"}",
"/**",
" * Game rules. These values can also be controlled via the",
" * /gamerule command.",
" */",
"export enum GameRule {",
"    /**",
"     * @remarks",
"     * Whether command blocks should notify admins when they",
"     * perform commands.",
"     *",
"     */",
"    CommandBlockOutput = 'commandBlockOutput',",
"    /**",
"     * @remarks",
"     * Controls whether command blocks can execute commands.",
"     *",
"     */",
"    CommandBlocksEnabled = 'commandBlocksEnabled',",
"    /**",
"     * @remarks",
"     * Controls whether the day and night cycles progress.",
"     *",
"     */",
"    DoDayLightCycle = 'doDayLightCycle',",
"    /**",
"     * @remarks",
"     * Controls whether non-mob entities do drops. ie. Item Frame",
"     *",
"     */",
"    DoEntityDrops = 'doEntityDrops',",
"    /**",
"     * @remarks",
"     * Controls whether fire spreads.",
"     *",
"     */",
"    DoFireTick = 'doFireTick',",
"    /**",
"     * @remarks",
"     * Controls whether players immediately respawn or are shown",
"     * the death screen.",
"     *",
"     */",
"    DoImmediateRespawn = 'doImmediateRespawn',",
"    /**",
"     * @remarks",
"     * Controls whether players deal with the effects of not",
"     * sleeping (such as Phantom spawning).",
"     *",
"     */",
"    DoInsomnia = 'doInsomnia',",
"    /**",
"     * @remarks",
"     * Determines whether players should be able to craft only",
"     * those recipes that they've unlocked first - when",
"     * dolimitedcrafting is set to true.",
"     *",
"     */",
"    DoLimitedCrafting = 'doLimitedCrafting',",
"    /**",
"     * @remarks",
"     * Controls whether mobs drop loot.",
"     *",
"     */",
"    DoMobLoot = 'doMobLoot',",
"    /**",
"     * @remarks",
"     * Controls whether mobs spawn naturally in the world.",
"     *",
"     */",
"    DoMobSpawning = 'doMobSpawning',",
"    /**",
"     * @remarks",
"     * Controls whether blocks drop items when destroyed.",
"     *",
"     */",
"    DoTileDrops = 'doTileDrops',",
"    /**",
"     * @remarks",
"     * Controls whether the weather can change naturally.",
"     *",
"     */",
"    DoWeatherCycle = 'doWeatherCycle',",
"    /**",
"     * @remarks",
"     * Controls whether entities take damage from drowning.",
"     *",
"     */",
"    DrowningDamage = 'drowningDamage',",
"    /**",
"     * @remarks",
"     * Controls whether entities take damage from falling.",
"     *",
"     */",
"    FallDamage = 'fallDamage',",
"    /**",
"     * @remarks",
"     * Controls whether entities take damage from fire.",
"     *",
"     */",
"    FireDamage = 'fireDamage',",
"    /**",
"     * @remarks",
"     * Controls whether there is damage from freezing.",
"     *",
"     */",
"    FreezeDamage = 'freezeDamage',",
"    /**",
"     * @remarks",
"     * The maximum number of commands that can be executed",
"     * simultaneously by the /function command.",
"     *",
"     */",
"    FunctionCommandLimit = 'functionCommandLimit',",
"    /**",
"     * @remarks",
"     * Controls whether players keep their inventories when they",
"     * die.",
"     *",
"     */",
"    KeepInventory = 'keepInventory',",
"    /**",
"     * @remarks",
"     * The maximum number of chained commands that can execute per",
"     * tick.",
"     *",
"     */",
"    MaxCommandChainLength = 'maxCommandChainLength',",
"    /**",
"     * @remarks",
"     * Controls whether mob griefing can happen in the world.",
"     * Example: A Creeper explosion destroying blocks.",
"     *",
"     */",
"    MobGriefing = 'mobGriefing',",
"    /**",
"     * @remarks",
"     * Controls whether players can regenerate health.",
"     *",
"     */",
"    NaturalRegeneration = 'naturalRegeneration',",
"    /**",
"     * @remarks",
"     * The percentage of players required to be sleeping in order",
"     * to advance to the next day.",
"     *",
"     */",
"    PlayersSleepingPercentage = 'playersSleepingPercentage',",
"    /**",
"     * @remarks",
"     * Controls whether projectiles (entities with a projectile",
"     * component, like Arrows, thrown Tridents or Fireworks) can",
"     * destroy certain blocks that support this interaction (such",
"     * as Chorus Fruit, Dripstone or Decorated Pots). Restrictions",
"     * on which projectiles can destroy certain blocks apply.",
"     *",
"     */",
"    ProjectilesCanBreakBlocks = 'projectilesCanBreakBlocks',",
"    /**",
"     * @remarks",
"     * Controls whether players can damage each other.",
"     *",
"     */",
"    Pvp = 'pvp',",
"    /**",
"     * @remarks",
"     * Controls how frequently random ticks occur. A value of 0 or",
"     * less will disable random ticks. The default value is 1.",
"     *",
"     */",
"    RandomTickSpeed = 'randomTickSpeed',",
"    /**",
"     * @remarks",
"     * Controls whether built-in (vanilla) recipes automatically",
"     * unlock as the player progresses through the game (one",
"     * alternative to this is to use the /recipe command based on",
"     * custom gameplay logic.)",
"     *",
"     */",
"    RecipesUnlock = 'recipesUnlock',",
"    /**",
"     * @remarks",
"     * Controls whether respawn blocks (e.g. Bed, Respawn Anchor)",
"     * explode in other dimensions.",
"     *",
"     */",
"    RespawnBlocksExplode = 'respawnBlocksExplode',",
"    /**",
"     * @remarks",
"     * Controls whether command output is displayed to players.",
"     * Also controls whether Command Block output is stored by",
"     * default.",
"     *",
"     */",
"    SendCommandFeedback = 'sendCommandFeedback',",
"    /**",
"     * @remarks",
"     * Controls whether Border Block effects are shown.",
"     *",
"     */",
"    ShowBorderEffect = 'showBorderEffect',",
"    /**",
"     * @remarks",
"     * Controls whether player coordinates are displayed.",
"     *",
"     */",
"    ShowCoordinates = 'showCoordinates',",
"    /**",
"     * @remarks",
"     * Controls whether the days a player has played is displayed.",
"     *",
"     */",
"    ShowDaysPlayed = 'showDaysPlayed',",
"    /**",
"     * @remarks",
"     * Controls whether death messages are displayed in chat.",
"     *",
"     */",
"    ShowDeathMessages = 'showDeathMessages',",
"    /**",
"     * @remarks",
"     * Controls whether standard player notifications for recipes",
"     * will show. When set to false, 'player unlocked recipes' are",
"     * no longer sent as player notifications.",
"     *",
"     */",
"    ShowRecipeMessages = 'showRecipeMessages',",
"    /**",
"     * @remarks",
"     * Controls whether item tags are shown. E.g. 'Can Place On',",
"     * 'Can Destroy', item lock icons, etc.",
"     *",
"     */",
"    ShowTags = 'showTags',",
"    /**",
"     * @remarks",
"     * The block radius from world spawn that a player is allowed",
"     * to spawn in. Does not affect Adventure mode. The default",
"     * value is 10 blocks.",
"     *",
"     */",
"    SpawnRadius = 'spawnRadius',",
"    /**",
"     * @remarks",
"     * Affects whether TNT blocks can be lit.",
"     *",
"     */",
"    TntExplodes = 'tntExplodes',",
"    /**",
"     * @remarks",
"     * Controls whether blocks randomly drop loot or all blocks",
"     * drop loot when destroyed by an explosion. Defaults to false.",
"     *",
"     */",
"    TntExplosionDropDecay = 'tntExplosionDropDecay',",
"}",
"/**",
" * Describes the graphics mode of a client. Used by {@link",
" * Player.graphicsMode}",
" */",
"export enum GraphicsMode {",
"    /**",
"     * @remarks",
"     * A graphics mode that refers to the Deferred Technical",
"     * Preview graphics mode setting.",
"     *",
"     */",
"    Deferred = 'Deferred',",
"    /**",
"     * @remarks",
"     * A graphics mode that refers to the Fancy graphics mode",
"     * setting. Most special graphics effects are turned on in this",
"     * setting.",
"     *",
"     */",
"    Fancy = 'Fancy',",
"    /**",
"     * @remarks",
"     * A graphics mode that refers to the Ray Traced graphics mode",
"     * setting. This setting enables ray tracing.",
"     *",
"     */",
"    RayTraced = 'RayTraced',",
"    /**",
"     * @remarks",
"     * A graphics mode that refers to the Simple graphics mode",
"     * setting. Most graphics effects are turned off in this",
"     * setting.",
"     *",
"     */",
"    Simple = 'Simple',",
"}",
"export enum HudElement {",
"    PaperDoll = 0,",
"    Armor = 1,",
"    ToolTips = 2,",
"    TouchControls = 3,",
"    Crosshair = 4,",
"    Hotbar = 5,",
"    Health = 6,",
"    ProgressBar = 7,",
"    Hunger = 8,",
"    AirBubbles = 9,",
"    HorseHealth = 10,",
"    StatusEffects = 11,",
"    ItemText = 12,",
"}",
"/**",
" * Enumeration that specifies how to treat the visibility of a",
" * HUD element.",
" */",
"export enum HudVisibility {",
"    /**",
"     * @remarks",
"     * Specifies that this HUD element should be hidden.",
"     *",
"     */",
"    Hide = 0,",
"    /**",
"     * @remarks",
"     * Specifies that this HUD element should be reset to its",
"     * default state (while most HUD elements are visible, some HUD",
"     * elements can be hidden by the player via settings.)",
"     *",
"     */",
"    Reset = 1,",
"}",
"/**",
" * All the different input buttons that are supported. Use with",
" * {@link InputInfo.getButtonState} via {@link",
" * Player.inputInfo} or {@link PlayerButtonInputAfterEvent} via",
" * {@link WorldAfterEvents.playerButtonInput}",
" */",
"export enum InputButton {",
"    /**",
"     * @remarks",
"     * This is mapped to the 'Jump' button on controllers,",
"     * keyboards, and touch interfaces.",
"     *",
"     */",
"    Jump = 'Jump',",
"    /**",
"     * @remarks",
"     * This is mapped to the 'Sneak' button on controllers,",
"     * keyboards, and touch interfaces. By default, this is shift",
"     * on a keyboard or B on an Xbox controller. On touch",
"     * interfaces this will only be pressed for 1 tick or less and",
"     * then it will be released immediately even if the player",
"     * holds their finger down. Dismounting a horse or exiting a",
"     * boat will not send a Sneak button change event.",
"     *",
"     */",
"    Sneak = 'Sneak',",
"}",
"/**",
" * Describes the type of input of a device.",
" */",
"export enum InputMode {",
"    /**",
"     * @remarks",
"     * Gamepad input.",
"     *",
"     */",
"    Gamepad = 'Gamepad',",
"    /**",
"     * @remarks",
"     * Keyboard and mouse input.",
"     *",
"     */",
"    KeyboardAndMouse = 'KeyboardAndMouse',",
"    /**",
"     * @remarks",
"     * Motion controller input.",
"     *",
"     */",
"    MotionController = 'MotionController',",
"    /**",
"     * @remarks",
"     * Touch input.",
"     *",
"     */",
"    Touch = 'Touch',",
"}",
"/**",
" * Input permission categories. Used by {@link",
" * PlayerInputPermissionCategoryChangeAfterEvent} to specify",
" * which category was changed and {@link",
" * PlayerInputPermissions} to get or set permissions.",
" */",
"export enum InputPermissionCategory {",
"    /**",
"     * @remarks",
"     * Player input relating to camera movement.",
"     *",
"     */",
"    Camera = 1,",
"    /**",
"     * @remarks",
"     * Player input relating to all player movement. Disabling this",
"     * is equivalent to disabling jump, sneak, lateral movement,",
"     * mount, and dismount.",
"     *",
"     */",
"    Movement = 2,",
"    /**",
"     * @remarks",
"     * Player input for moving laterally in the world. This would",
"     * be WASD on a keyboard or the movement joystick on gamepad or",
"     * touch.",
"     *",
"     */",
"    LateralMovement = 4,",
"    /**",
"     * @remarks",
"     * Player input relating to sneak. This also affects flying",
"     * down.",
"     *",
"     */",
"    Sneak = 5,",
"    /**",
"     * @remarks",
"     * Player input relating to jumping. This also affects flying",
"     * up.",
"     *",
"     */",
"    Jump = 6,",
"    /**",
"     * @remarks",
"     * Player input relating to mounting vehicles.",
"     *",
"     */",
"    Mount = 7,",
"    /**",
"     * @remarks",
"     * Player input relating to dismounting. When disabled, the",
"     * player can still dismount vehicles by other means, for",
"     * example on horses players can still jump off and in boats",
"     * players can go into another boat.",
"     *",
"     */",
"    Dismount = 8,",
"    /**",
"     * @remarks",
"     * Player input relating to moving the player forward.",
"     *",
"     */",
"    MoveForward = 9,",
"    /**",
"     * @remarks",
"     * Player input relating to moving the player backward.",
"     *",
"     */",
"    MoveBackward = 10,",
"    /**",
"     * @remarks",
"     * Player input relating to moving the player left.",
"     *",
"     */",
"    MoveLeft = 11,",
"    /**",
"     * @remarks",
"     * Player input relating to moving the player right.",
"     *",
"     */",
"    MoveRight = 12,",
"}",
"/**",
" * The types of item components that are accessible via",
" * function ItemStack.getComponent.",
" */",
"export enum ItemComponentTypes {",
"    Compostable = 'minecraft:compostable',",
"    /**",
"     * @remarks",
"     * The minecraft:cooldown component.",
"     *",
"     */",
"    Cooldown = 'minecraft:cooldown',",
"    /**",
"     * @remarks",
"     * The minecraft:durability component.",
"     *",
"     */",
"    Durability = 'minecraft:durability',",
"    /**",
"     * @remarks",
"     * The minecraft:enchantable component.",
"     *",
"     */",
"    Enchantable = 'minecraft:enchantable',",
"    /**",
"     * @remarks",
"     * The minecraft:food component.",
"     *",
"     */",
"    Food = 'minecraft:food',",
"}",
"/**",
" * Describes how an an item can be moved within a container.",
" */",
"export enum ItemLockMode {",
"    /**",
"     * @remarks",
"     * The item cannot be dropped or crafted with.",
"     *",
"     */",
"    inventory = 'inventory',",
"    /**",
"     * @remarks",
"     * The item has no container restrictions.",
"     *",
"     */",
"    none = 'none',",
"    /**",
"     * @remarks",
"     * The item cannot be moved from its slot, dropped or crafted",
"     * with.",
"     *",
"     */",
"    slot = 'slot',",
"}",
"/**",
" * Represents the type of liquid that can be placed on a block",
" * or flow dynamically in the world.",
" */",
"export enum LiquidType {",
"    /**",
"     * @remarks",
"     * Represents water as a type of liquid.",
"     *",
"     */",
"    Water = 'Water',",
"}",
"/**",
" * Describes the memory of a device.",
" */",
"export enum MemoryTier {",
"    /**",
"     * @remarks",
"     * Max memory for Super Low Tier is 1.5GBs.",
"     *",
"     */",
"    SuperLow = 0,",
"    /**",
"     * @remarks",
"     *  Max memory for Low Tier is 2GBs.",
"     *",
"     */",
"    Low = 1,",
"    /**",
"     * @remarks",
"     * Max memory for Mid Tier is 4GBs.",
"     *",
"     */",
"    Mid = 2,",
"    /**",
"     * @remarks",
"     * Max memory for High Tier is 8GBs.",
"     *",
"     */",
"    High = 3,",
"    /**",
"     * @remarks",
"     * Memory for Super High Tier is above 8GBs.",
"     *",
"     */",
"    SuperHigh = 4,",
"}",
"/**",
" * Enum containing the different phases of the moon based on",
" * the current day.,Obtain the current MoonPhase using",
" * world.getMoonPhase.",
" *",
" * The fullness of the moon controls various mob behaviors such",
" * as the number of slimes that spawn in Swamp biomes, the",
" * chance skeletons and zombies have to spawn with armor, as",
" * well as the chance for spiders to spawn with certain status",
" * effects.",
" */",
"export enum MoonPhase {",
"    /**",
"     * @remarks",
"     * The brightest moon phase. During this phase, cats have a 50%",
"     * chance of spawning as black cats.",
"     *",
"     */",
"    FullMoon = 0,",
"    /**",
"     * @remarks",
"     * The phase following the Full Moon.",
"     *",
"     */",
"    WaningGibbous = 1,",
"    /**",
"     * @remarks",
"     * The phase following the Waxing Crescent.",
"     *",
"     */",
"    FirstQuarter = 2,",
"    /**",
"     * @remarks",
"     * The phase following the Last Quarter.",
"     *",
"     */",
"    WaningCrescent = 3,",
"    /**",
"     * @remarks",
"     * The darkest moon phase.",
"     *",
"     */",
"    NewMoon = 4,",
"    /**",
"     * @remarks",
"     * The phase following the New Moon.",
"     *",
"     */",
"    WaxingCrescent = 5,",
"    /**",
"     * @remarks",
"     * The phase following the Waning Gibbous.",
"     *",
"     */",
"    LastQuarter = 6,",
"    /**",
"     * @remarks",
"     * The phase following the First Quarter.",
"     *",
"     */",
"    WaxingGibbous = 7,",
"}",
"/**",
" * An enumeration describing the reason for the namespace name",
" * error being thrown",
" */",
"export enum NamespaceNameErrorReason {",
"    /**",
"     * @remarks",
"     * A restricted namespace was used as the namespace",
"     *",
"     */",
"    DisallowedNamespace = 'DisallowedNamespace',",
"    /**",
"     * @remarks",
"     * The name was missing a namespace when one is required",
"     *",
"     */",
"    NoNamespace = 'NoNamespace',",
"}",
"/**",
" * Used for specifying a sort order for how to display an",
" * objective and its list of participants.",
" */",
"export enum ObjectiveSortOrder {",
"    /**",
"     * @remarks",
"     * Objective participant list is displayed in ascending (e.g.,",
"     * A-Z) order.",
"     *",
"     */",
"    Ascending = 0,",
"    /**",
"     * @remarks",
"     * Objective participant list is displayed in descending (e.g.,",
"     * Z-A) order.",
"     *",
"     */",
"    Descending = 1,",
"}",
"/**",
" * Enum containing colors to be used with EntityColorComponent",
" * and EntityColor2Component",
" */",
"export enum PaletteColor {",
"    /**",
"     * @remarks",
"     * Hex color #f0f0f0",
"     *",
"     */",
"    White = 0,",
"    /**",
"     * @remarks",
"     * Hex color #F9801D",
"     *",
"     */",
"    Orange = 1,",
"    /**",
"     * @remarks",
"     * Hex color #C74EBD",
"     *",
"     */",
"    Magenta = 2,",
"    /**",
"     * @remarks",
"     * Hex color #3AB3DA",
"     *",
"     */",
"    LightBlue = 3,",
"    /**",
"     * @remarks",
"     * Hex color #FED83D",
"     *",
"     */",
"    Yellow = 4,",
"    /**",
"     * @remarks",
"     * Hex color #80C71F",
"     *",
"     */",
"    Lime = 5,",
"    /**",
"     * @remarks",
"     * Hex color #F38BAA",
"     *",
"     */",
"    Pink = 6,",
"    /**",
"     * @remarks",
"     * Hex color #474F52",
"     *",
"     */",
"    Gray = 7,",
"    /**",
"     * @remarks",
"     * Hex color #9D9D97",
"     *",
"     */",
"    Silver = 8,",
"    /**",
"     * @remarks",
"     * Hex color #169C9C",
"     *",
"     */",
"    Cyan = 9,",
"    /**",
"     * @remarks",
"     * Hex color #8932B8",
"     *",
"     */",
"    Purple = 10,",
"    /**",
"     * @remarks",
"     * Hex color #3C44AA",
"     *",
"     */",
"    Blue = 11,",
"    /**",
"     * @remarks",
"     * Hex color #835432",
"     *",
"     */",
"    Brown = 12,",
"    /**",
"     * @remarks",
"     * Hex color #5E7C16",
"     *",
"     */",
"    Green = 13,",
"    /**",
"     * @remarks",
"     * Hex color #B02E26",
"     *",
"     */",
"    Red = 14,",
"    /**",
"     * @remarks",
"     * Hex color #1D1D21",
"     *",
"     */",
"    Black = 15,",
"}",
"/**",
" * Describes what kind of platform is a device.",
" */",
"export enum PlatformType {",
"    /**",
"     * @remarks",
"     * Specialized gaming device.",
"     *",
"     */",
"    Console = 'Console',",
"    /**",
"     * @remarks",
"     * Personal Computer (PC).",
"     *",
"     */",
"    Desktop = 'Desktop',",
"    /**",
"     * @remarks",
"     *  Handheld device such smartphone or tablet.",
"     *",
"     */",
"    Mobile = 'Mobile',",
"}",
"/**",
" * Contains objectives and participants for the scoreboard.",
" */",
"export enum ScoreboardIdentityType {",
"    /**",
"     * @remarks",
"     * This scoreboard participant is tied to an entity.",
"     *",
"     */",
"    Entity = 'Entity',",
"    /**",
"     * @remarks",
"     * This scoreboard participant is tied to a pseudo player",
"     * entity - typically this is used to store scores as data or",
"     * as abstract progress.",
"     *",
"     */",
"    FakePlayer = 'FakePlayer',",
"    /**",
"     * @remarks",
"     * This scoreboard participant is tied to a player.",
"     *",
"     */",
"    Player = 'Player',",
"}",
"/**",
" * Describes where the script event originated from.",
" */",
"export enum ScriptEventSource {",
"    /**",
"     * @remarks",
"     * The script event originated from a Block such as a Command",
"     * Block.",
"     *",
"     */",
"    Block = 'Block',",
"    /**",
"     * @remarks",
"     * The script event originated from an Entity such as a Player,",
"     * Command Block Minecart or Animation Controller.",
"     *",
"     */",
"    Entity = 'Entity',",
"    /**",
"     * @remarks",
"     * The script event originated from an NPC dialogue.",
"     *",
"     */",
"    NPCDialogue = 'NPCDialogue',",
"    /**",
"     * @remarks",
"     * The script event originated from the server, such as from a",
"     * runCommand API call or a dedicated server console.",
"     *",
"     */",
"    Server = 'Server',",
"}",
"/**",
" * Represents a side of a sign.",
" */",
"export enum SignSide {",
"    /**",
"     * @remarks",
"     * The back of the sign.",
"     *",
"     */",
"    Back = 'Back',",
"    /**",
"     * @remarks",
"     * The front of the sign.",
"     *",
"     */",
"    Front = 'Front',",
"}",
"/**",
" * Specifies how structure blocks should be animated when a",
" * structure is placed.",
" */",
"export enum StructureAnimationMode {",
"    /**",
"     * @remarks",
"     * Blocks will be randomly placed one at at time. Use",
"     * @minecraft/server.StructurePlaceOptions.animationSeconds to",
"     * control how long it takes for all blocks to be placed.",
"     *",
"     */",
"    Blocks = 'Blocks',",
"    /**",
"     * @remarks",
"     * Blocks will be placed one layer at a time from bottom to",
"     * top. Use",
"     * @minecraft/server.StructurePlaceOptions.animationSeconds to",
"     * control how long it takes for all blocks to be placed.",
"     *",
"     */",
"    Layers = 'Layers',",
"    /**",
"     * @remarks",
"     * All blocks will be placed immediately.",
"     *",
"     */",
"    None = 'None',",
"}",
"/**",
" * Specifies how a structure should be mirrored when placed.",
" */",
"export enum StructureMirrorAxis {",
"    /**",
"     * @remarks",
"     * No mirroring.",
"     *",
"     */",
"    None = 'None',",
"    /**",
"     * @remarks",
"     * Structure is mirrored across the X axis.",
"     *",
"     */",
"    X = 'X',",
"    /**",
"     * @remarks",
"     * Structure is mirrored across both the X and Z axes.",
"     *",
"     */",
"    XZ = 'XZ',",
"    /**",
"     * @remarks",
"     * Structure is mirrored across the Z axis.",
"     *",
"     */",
"    Z = 'Z',",
"}",
"/**",
" * Enum describing a structure's placement rotation.",
" */",
"export enum StructureRotation {",
"    /**",
"     * @remarks",
"     * No rotation.",
"     *",
"     */",
"    None = 'None',",
"    /**",
"     * @remarks",
"     * 180 degree rotation.",
"     *",
"     */",
"    Rotate180 = 'Rotate180',",
"    /**",
"     * @remarks",
"     * 270 degree rotation.",
"     *",
"     */",
"    Rotate270 = 'Rotate270',",
"    /**",
"     * @remarks",
"     * 90 degree rotation.",
"     *",
"     */",
"    Rotate90 = 'Rotate90',",
"}",
"/**",
" * Specifies how a structure should be saved.",
" */",
"export enum StructureSaveMode {",
"    /**",
"     * @remarks",
"     * The structure will be temporarily saved to memory. The",
"     * structure will persist until the world is shut down.",
"     *",
"     */",
"    Memory = 'Memory',",
"    /**",
"     * @remarks",
"     * The structure will be saved to the world file and persist",
"     * between world loads. A saved structure can be removed from",
"     * the world via @minecraft/server.StructureManager.delete.",
"     *",
"     */",
"    World = 'World',",
"}",
"/**",
" * Provides numeric values for common periods in the Minecraft",
" * day.",
" */",
"export enum TimeOfDay {",
"    /**",
"     * @remarks",
"     * Sets the time to the start of the day, which is time of the",
"     * day 1,000 (or the equivalent of 7am) in Minecraft.",
"     *",
"     */",
"    Day = 1000,",
"    /**",
"     * @remarks",
"     * Sets the time to noon, which is time of the day 6,000 in",
"     * Minecraft.",
"     *",
"     */",
"    Noon = 6000,",
"    /**",
"     * @remarks",
"     * Sets the time to sunset, which is time of the day 12,000 (or",
"     * the equivalent of 6pm) in Minecraft.",
"     *",
"     */",
"    Sunset = 12000,",
"    /**",
"     * @remarks",
"     * Sets the time to night, which is time of the day 13,000 (or",
"     * the equivalent of 7:00pm) in Minecraft.",
"     *",
"     */",
"    Night = 13000,",
"    /**",
"     * @remarks",
"     * Sets the time to midnight, which is time of the day 18,000",
"     * (or the equivalent of 12:00am) in Minecraft.",
"     *",
"     */",
"    Midnight = 18000,",
"    /**",
"     * @remarks",
"     * Sets the time to sunrise, which is time of the day 23,000",
"     * (or the equivalent of 5am) in Minecraft.",
"     *",
"     */",
"    Sunrise = 23000,",
"}",
"/**",
" * Tint logic applied to a block or part of a block. The color",
" * may vary when a world position is part of the context, as",
" * biomes often have an influence on the resulting tint.",
" */",
"export enum TintMethod {",
"    /**",
"     * @remarks",
"     * Specifies a birch foliage tint method.",
"     *",
"     */",
"    BirchFoliage = 'BirchFoliage',",
"    /**",
"     * @remarks",
"     * Specifies a default foliage tint method.",
"     *",
"     */",
"    DefaultFoliage = 'DefaultFoliage',",
"    /**",
"     * @remarks",
"     * Specifies a dry foliage tint method.",
"     *",
"     */",
"    DryFoliage = 'DryFoliage',",
"    /**",
"     * @remarks",
"     * Specifies an evergreen foliage tint method.",
"     *",
"     */",
"    EvergreenFoliage = 'EvergreenFoliage',",
"    /**",
"     * @remarks",
"     * Specifies a grass tint method.",
"     *",
"     */",
"    Grass = 'Grass',",
"    /**",
"     * @remarks",
"     * Specifies no tint method, resulting in a white tint.",
"     *",
"     */",
"    None = 'None',",
"    /**",
"     * @remarks",
"     * Specifies a water tint method.",
"     *",
"     */",
"    Water = 'Water',",
"}",
"/**",
" * Used to specify the type of weather condition within the",
" * world.",
" */",
"export enum WeatherType {",
"    /**",
"     * @remarks",
"     * Specifies a clear weather condition.",
"     *",
"     */",
"    Clear = 'Clear',",
"    /**",
"     * @remarks",
"     * Specifies a rain weather condition.",
"     *",
"     */",
"    Rain = 'Rain',",
"    /**",
"     * @remarks",
"     * Specifies a rain and thunder weather condition.",
"     *",
"     */",
"    Thunder = 'Thunder',",
"}",
"export type BlockComponentReturnType<T extends string> = T extends keyof BlockComponentTypeMap",
"    ? BlockComponentTypeMap[T]",
"    : BlockCustomComponentInstance;",
"export type BlockComponentTypeMap = {",
"    fluid_container: BlockFluidContainerComponent;",
"    inventory: BlockInventoryComponent;",
"    map_color: BlockMapColorComponent;",
"    'minecraft:fluid_container': BlockFluidContainerComponent;",
"    'minecraft:inventory': BlockInventoryComponent;",
"    'minecraft:map_color': BlockMapColorComponent;",
"    'minecraft:piston': BlockPistonComponent;",
"    'minecraft:record_player': BlockRecordPlayerComponent;",
"    'minecraft:sign': BlockSignComponent;",
"    piston: BlockPistonComponent;",
"    record_player: BlockRecordPlayerComponent;",
"    sign: BlockSignComponent;",
"};",
"/**",
" * Type alias used by the {@link BlockPermutation} matches and",
" * resolve functions to narrow block state argument types to",
" * those mapped by {@link",
" * @minecraft/vanilla-data.BlockStateMapping}.",
" */",
"export type BlockStateArg<T> = T extends `${minecraftvanilladata.MinecraftBlockTypes}`",
"    ? T extends keyof minecraftvanilladata.BlockStateMapping",
"        ? minecraftvanilladata.BlockStateMapping[T]",
"        : never",
"    : Record<string, boolean | number | string>;",
"export type EntityComponentReturnType<T extends string> = T extends keyof EntityComponentTypeMap",
"    ? EntityComponentTypeMap[T]",
"    : EntityComponent;",
"export type EntityComponentTypeMap = {",
"    addrider: EntityAddRiderComponent;",
"    ageable: EntityAgeableComponent;",
"    breathable: EntityBreathableComponent;",
"    can_climb: EntityCanClimbComponent;",
"    can_fly: EntityCanFlyComponent;",
"    can_power_jump: EntityCanPowerJumpComponent;",
"    color: EntityColorComponent;",
"    color2: EntityColor2Component;",
"    cursor_inventory: PlayerCursorInventoryComponent;",
"    equippable: EntityEquippableComponent;",
"    fire_immune: EntityFireImmuneComponent;",
"    floats_in_liquid: EntityFloatsInLiquidComponent;",
"    flying_speed: EntityFlyingSpeedComponent;",
"    friction_modifier: EntityFrictionModifierComponent;",
"    healable: EntityHealableComponent;",
"    health: EntityHealthComponent;",
"    inventory: EntityInventoryComponent;",
"    is_baby: EntityIsBabyComponent;",
"    is_charged: EntityIsChargedComponent;",
"    is_chested: EntityIsChestedComponent;",
"    is_dyeable: EntityIsDyeableComponent;",
"    is_hidden_when_invisible: EntityIsHiddenWhenInvisibleComponent;",
"    is_ignited: EntityIsIgnitedComponent;",
"    is_illager_captain: EntityIsIllagerCaptainComponent;",
"    is_saddled: EntityIsSaddledComponent;",
"    is_shaking: EntityIsShakingComponent;",
"    is_sheared: EntityIsShearedComponent;",
"    is_stackable: EntityIsStackableComponent;",
"    is_stunned: EntityIsStunnedComponent;",
"    is_tamed: EntityIsTamedComponent;",
"    item: EntityItemComponent;",
"    lava_movement: EntityLavaMovementComponent;",
"    leashable: EntityLeashableComponent;",
"    mark_variant: EntityMarkVariantComponent;",
"    'minecraft:addrider': EntityAddRiderComponent;",
"    'minecraft:ageable': EntityAgeableComponent;",
"    'minecraft:breathable': EntityBreathableComponent;",
"    'minecraft:can_climb': EntityCanClimbComponent;",
"    'minecraft:can_fly': EntityCanFlyComponent;",
"    'minecraft:can_power_jump': EntityCanPowerJumpComponent;",
"    'minecraft:color': EntityColorComponent;",
"    'minecraft:color2': EntityColor2Component;",
"    'minecraft:cursor_inventory': PlayerCursorInventoryComponent;",
"    'minecraft:equippable': EntityEquippableComponent;",
"    'minecraft:fire_immune': EntityFireImmuneComponent;",
"    'minecraft:floats_in_liquid': EntityFloatsInLiquidComponent;",
"    'minecraft:flying_speed': EntityFlyingSpeedComponent;",
"    'minecraft:friction_modifier': EntityFrictionModifierComponent;",
"    'minecraft:healable': EntityHealableComponent;",
"    'minecraft:health': EntityHealthComponent;",
"    'minecraft:inventory': EntityInventoryComponent;",
"    'minecraft:is_baby': EntityIsBabyComponent;",
"    'minecraft:is_charged': EntityIsChargedComponent;",
"    'minecraft:is_chested': EntityIsChestedComponent;",
"    'minecraft:is_dyeable': EntityIsDyeableComponent;",
"    'minecraft:is_hidden_when_invisible': EntityIsHiddenWhenInvisibleComponent;",
"    'minecraft:is_ignited': EntityIsIgnitedComponent;",
"    'minecraft:is_illager_captain': EntityIsIllagerCaptainComponent;",
"    'minecraft:is_saddled': EntityIsSaddledComponent;",
"    'minecraft:is_shaking': EntityIsShakingComponent;",
"    'minecraft:is_sheared': EntityIsShearedComponent;",
"    'minecraft:is_stackable': EntityIsStackableComponent;",
"    'minecraft:is_stunned': EntityIsStunnedComponent;",
"    'minecraft:is_tamed': EntityIsTamedComponent;",
"    'minecraft:item': EntityItemComponent;",
"    'minecraft:lava_movement': EntityLavaMovementComponent;",
"    'minecraft:leashable': EntityLeashableComponent;",
"    'minecraft:mark_variant': EntityMarkVariantComponent;",
"    'minecraft:movement': EntityMovementComponent;",
"    'minecraft:movement.amphibious': EntityMovementAmphibiousComponent;",
"    'minecraft:movement.basic': EntityMovementBasicComponent;",
"    'minecraft:movement.fly': EntityMovementFlyComponent;",
"    'minecraft:movement.generic': EntityMovementGenericComponent;",
"    'minecraft:movement.glide': EntityMovementGlideComponent;",
"    'minecraft:movement.hover': EntityMovementHoverComponent;",
"    'minecraft:movement.jump': EntityMovementJumpComponent;",
"    'minecraft:movement.skip': EntityMovementSkipComponent;",
"    'minecraft:movement.sway': EntityMovementSwayComponent;",
"    'minecraft:navigation.climb': EntityNavigationClimbComponent;",
"    'minecraft:navigation.float': EntityNavigationFloatComponent;",
"    'minecraft:navigation.fly': EntityNavigationFlyComponent;",
"    'minecraft:navigation.generic': EntityNavigationGenericComponent;",
"    'minecraft:navigation.hover': EntityNavigationHoverComponent;",
"    'minecraft:navigation.walk': EntityNavigationWalkComponent;",
"    'minecraft:onfire': EntityOnFireComponent;",
"    'minecraft:projectile': EntityProjectileComponent;",
"    'minecraft:push_through': EntityPushThroughComponent;",
"    'minecraft:rideable': EntityRideableComponent;",
"    'minecraft:riding': EntityRidingComponent;",
"    'minecraft:scale': EntityScaleComponent;",
"    'minecraft:skin_id': EntitySkinIdComponent;",
"    'minecraft:strength': EntityStrengthComponent;",
"    'minecraft:tameable': EntityTameableComponent;",
"    'minecraft:tamemount': EntityTameMountComponent;",
"    'minecraft:type_family': EntityTypeFamilyComponent;",
"    'minecraft:underwater_movement': EntityUnderwaterMovementComponent;",
"    'minecraft:variant': EntityVariantComponent;",
"    'minecraft:wants_jockey': EntityWantsJockeyComponent;",
"    movement: EntityMovementComponent;",
"    'movement.amphibious': EntityMovementAmphibiousComponent;",
"    'movement.basic': EntityMovementBasicComponent;",
"    'movement.fly': EntityMovementFlyComponent;",
"    'movement.generic': EntityMovementGenericComponent;",
"    'movement.glide': EntityMovementGlideComponent;",
"    'movement.hover': EntityMovementHoverComponent;",
"    'movement.jump': EntityMovementJumpComponent;",
"    'movement.skip': EntityMovementSkipComponent;",
"    'movement.sway': EntityMovementSwayComponent;",
"    'navigation.climb': EntityNavigationClimbComponent;",
"    'navigation.float': EntityNavigationFloatComponent;",
"    'navigation.fly': EntityNavigationFlyComponent;",
"    'navigation.generic': EntityNavigationGenericComponent;",
"    'navigation.hover': EntityNavigationHoverComponent;",
"    'navigation.walk': EntityNavigationWalkComponent;",
"    onfire: EntityOnFireComponent;",
"    projectile: EntityProjectileComponent;",
"    push_through: EntityPushThroughComponent;",
"    rideable: EntityRideableComponent;",
"    riding: EntityRidingComponent;",
"    scale: EntityScaleComponent;",
"    skin_id: EntitySkinIdComponent;",
"    strength: EntityStrengthComponent;",
"    tameable: EntityTameableComponent;",
"    tamemount: EntityTameMountComponent;",
"    type_family: EntityTypeFamilyComponent;",
"    underwater_movement: EntityUnderwaterMovementComponent;",
"    variant: EntityVariantComponent;",
"    wants_jockey: EntityWantsJockeyComponent;",
"};",
"export type ItemComponentReturnType<T extends string> = T extends keyof ItemComponentTypeMap",
"    ? ItemComponentTypeMap[T]",
"    : ItemCustomComponentInstance;",
"export type ItemComponentTypeMap = {",
"    compostable: ItemCompostableComponent;",
"    cooldown: ItemCooldownComponent;",
"    durability: ItemDurabilityComponent;",
"    enchantable: ItemEnchantableComponent;",
"    food: ItemFoodComponent;",
"    'minecraft:compostable': ItemCompostableComponent;",
"    'minecraft:cooldown': ItemCooldownComponent;",
"    'minecraft:durability': ItemDurabilityComponent;",
"    'minecraft:enchantable': ItemEnchantableComponent;",
"    'minecraft:food': ItemFoodComponent;",
"};",
"/**",
" * Represents a block in a dimension. A block represents a",
" * unique X, Y, and Z within a dimension and get/sets the state",
" * of the block at that location. This type was significantly",
" * updated in version 1.17.10.21.",
" */",
"export class Block {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the dimension that the block is within.",
"     *",
"     */",
"    readonly dimension: Dimension;",
"    /**",
"     * @remarks",
"     * Returns true if this block is an air block (i.e., empty",
"     * space).",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly isAir: boolean;",
"    /**",
"     * @remarks",
"     * Returns true if this block is a liquid block - (e.g., a",
"     * water block and a lava block are liquid, while an air block",
"     * and a stone block are not. Water logged blocks are not",
"     * liquid blocks).",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly isLiquid: boolean;",
"    /**",
"     * @remarks",
"     * Returns true if this reference to a block is still valid",
"     * (for example, if the block is unloaded, references to that",
"     * block will no longer be valid.)",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Returns or sets whether this block has water on it.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly isWaterlogged: boolean;",
"    /**",
"     * @remarks",
"     * Coordinates of the specified block.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly location: Vector3;",
"    /**",
"     * @remarks",
"     * Additional block configuration data that describes the",
"     * block.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly permutation: BlockPermutation;",
"    /**",
"     * @remarks",
"     * Gets the type of block.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly 'type': BlockType;",
"    /**",
"     * @remarks",
"     * Identifier of the type of block for this block. Warning:",
"     * Vanilla block names can be changed in future releases, try",
"     * using 'Block.matches' instead for block comparison.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    readonly typeId: string;",
"    /**",
"     * @remarks",
"     * X coordinate of the block.",
"     *",
"     */",
"    readonly x: number;",
"    /**",
"     * @remarks",
"     * Y coordinate of the block.",
"     *",
"     */",
"    readonly y: number;",
"    /**",
"     * @remarks",
"     * Z coordinate of the block.",
"     *",
"     */",
"    readonly z: number;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} above this block (positive in the",
"     * Y direction).",
"     *",
"     * @param steps",
"     * Number of steps above to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    above(steps?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} below this block (negative in the",
"     * Y direction).",
"     *",
"     * @param steps",
"     * Number of steps below to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    below(steps?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Returns the {@link Vector3} of the center of this block on",
"     * the X and Z axis.",
"     *",
"     */",
"    bottomCenter(): Vector3;",
"    /**",
"     * @remarks",
"     * Returns whether this block is removed when touched by",
"     * liquid.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block is removed when touched by liquid.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    canBeDestroyedByLiquidSpread(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block can have a liquid placed over it,",
"     * i.e. be waterlogged.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block can have a liquid placed over it.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    canContainLiquid(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns the {@link Vector3} of the center of this block on",
"     * the X, Y, and Z axis.",
"     *",
"     */",
"    center(): Vector3;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the east of this block",
"     * (positive in the X direction).",
"     *",
"     * @param steps",
"     * Number of steps to the east to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    east(steps?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Gets a component (that represents additional capabilities)",
"     * for a block - for example, an inventory component of a chest",
"     * block.",
"     *",
"     * @param componentId",
"     * The identifier of the component (e.g.,",
"     * 'minecraft:inventory'). If no namespace prefix is specified,",
"     * 'minecraft:' is assumed. Available component IDs are those",
"     * in the {@link BlockComponentTypes} enum and custom component",
"     * IDs registered with the {@link BlockComponentRegistry}.",
"     * @returns",
"     * Returns the component if it exists on the block, otherwise",
"     * undefined.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    getComponent<T extends string>(componentId: T): BlockComponentReturnType<T> | undefined;",
"    /**",
"     * @remarks",
"     * Creates a prototype item stack based on this block that can",
"     * be used with Container/ContainerSlot APIs.",
"     *",
"     * @param amount",
"     * Number of instances of this block to place in the item",
"     * stack.",
"     * Defaults to: 1",
"     * @param withData",
"     * Whether additional data facets of the item stack are",
"     * included.",
"     * Defaults to: false",
"     * @returns",
"     * An itemStack with the specified amount of items and data.",
"     * Returns undefined if block type is incompatible.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    getItemStack(amount?: number, withData?: boolean): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Returns the net redstone power of this block.",
"     *",
"     * @returns",
"     * Returns undefined if redstone power is not applicable to",
"     * this block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    getRedstonePower(): number | undefined;",
"    /**",
"     * @remarks",
"     * Returns a set of tags for a block.",
"     *",
"     * @returns",
"     * The list of tags that the block has.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    getTags(): string[];",
"    /**",
"     * @remarks",
"     * Checks to see if the permutation of this block has a",
"     * specific tag.",
"     *",
"     * @param tag",
"     * Tag to check for.",
"     * @returns",
"     * Returns `true` if the permutation of this block has the tag,",
"     * else `false`.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example checkBlockTags.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     *",
"     * function checkBlockTags(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   // Fetch the block",
"     *   const block = targetLocation.dimension.getBlock(targetLocation);",
"     *",
"     *   // check that the block is loaded",
"     *   if (block) {",
"     *     log(`Block is dirt: ${block.hasTag('dirt')}`);",
"     *     log(`Block is wood: ${block.hasTag('wood')}`);",
"     *     log(`Block is stone: ${block.hasTag('stone')}`);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    hasTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block stops liquid from flowing.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block stops liquid from flowing.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    isLiquidBlocking(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether liquid can flow into the block from the",
"     * provided direction, or flow out from the provided direction",
"     * when liquid is placed into it with a bucket.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether liquid can flow into the block from the provided",
"     * direction, or flow out from the provided direction when",
"     * liquid is placed into it with a bucket",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    liquidCanFlowFromDirection(liquidType: LiquidType, flowDirection: Direction): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block is removed and spawns its item",
"     * when touched by liquid.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block is removed and spawns its item when",
"     * touched by liquid.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    liquidSpreadCausesSpawn(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Tests whether this block matches a specific criteria.",
"     *",
"     * @param blockName",
"     * Block type identifier to match this API against.",
"     * @param states",
"     * Optional set of block states to test this block against.",
"     * @returns",
"     * Returns true if the block matches the specified criteria.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    matches(blockName: string, states?: Record<string, boolean | number | string>): boolean;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the north of this block",
"     * (negative in the Z direction).",
"     *",
"     * @param steps",
"     * Number of steps to the north to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    north(steps?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Returns a block at an offset relative vector to this block.",
"     *",
"     * @param offset",
"     * The offset vector. For example, an offset of 0, 1, 0 will",
"     * return the block above the current block.",
"     * @returns",
"     * Block at the specified offset, or undefined if that block",
"     * could not be retrieved (for example, the block and its",
"     * relative chunk is not loaded yet.)",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    offset(offset: Vector3): Block | undefined;",
"    /**",
"     * @remarks",
"     * Sets the block in the dimension to the state of the",
"     * permutation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param permutation",
"     * Permutation that contains a set of property states for the",
"     * Block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setPermutation(permutation: BlockPermutation): void;",
"    /**",
"     * @remarks",
"     * Sets the type of block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockType",
"     * Identifier of the type of block to apply - for example,",
"     * minecraft:powered_repeater.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setType(blockType: BlockType | string): void;",
"    /**",
"     * @remarks",
"     * Sets whether this block has a water logged state - for",
"     * example, whether stairs are submerged within water.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param isWaterlogged",
"     * true if the block should have water within it.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setWaterlogged(isWaterlogged: boolean): void;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the south of this block",
"     * (positive in the Z direction).",
"     *",
"     * @param steps",
"     * Number of steps to the south to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    south(steps?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Returns the {@link Block} to the west of this block",
"     * (negative in the X direction).",
"     *",
"     * @param steps",
"     * Number of steps to the west to step before returning.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    west(steps?: number): Block | undefined;",
"}",
"/**",
" * Base type for components associated with blocks.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponent extends Component {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Block instance that this component pertains to.",
"     *",
"     */",
"    readonly block: Block;",
"}",
"/**",
" * Contains information regarding an entity falling onto a",
" * specific block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentEntityFallOnEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity that fell onto the block.",
"     *",
"     */",
"    readonly entity?: Entity;",
"    /**",
"     * @remarks",
"     * The distance that the entity fell onto this block with.",
"     *",
"     */",
"    readonly fallDistance: number;",
"}",
"/**",
" * Contains information regarding a specific block that was",
" * placed.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentOnPlaceEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Previous block at this location that was replaced.",
"     *",
"     */",
"    readonly previousBlock: BlockPermutation;",
"}",
"/**",
" * Contains information regarding a specific block being broken",
" * by a player.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentPlayerBreakEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns permutation information about this block before it",
"     * was broken.",
"     *",
"     */",
"    readonly brokenBlockPermutation: BlockPermutation;",
"    /**",
"     * @remarks",
"     * The player that broke this block.",
"     *",
"     */",
"    readonly player?: Player;",
"}",
"/**",
" * Contains information regarding a specific block being",
" * interacted with.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentPlayerInteractEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block face that was interacted with.",
"     *",
"     */",
"    readonly face: Direction;",
"    /**",
"     * @remarks",
"     * Location relative to the bottom north-west corner of the",
"     * block that the player interacted with.",
"     *",
"     */",
"    readonly faceLocation?: Vector3;",
"    /**",
"     * @remarks",
"     * The player that interacted with this block.",
"     *",
"     */",
"    readonly player?: Player;",
"}",
"/**",
" * Contains information regarding an event before a player",
" * places a block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentPlayerPlaceBeforeEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true, cancels the block place event.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The block face that was placed onto.",
"     *",
"     */",
"    readonly face: Direction;",
"    /**",
"     * @remarks",
"     * The block permutation that will be placed if the event is",
"     * not cancelled. If set to a different block permutation, that",
"     * permutation will be placed instead.",
"     *",
"     */",
"    permutationToPlace: BlockPermutation;",
"    /**",
"     * @remarks",
"     * The player that is placing this block.",
"     *",
"     */",
"    readonly player?: Player;",
"}",
"/**",
" * Contains information regarding a specific block randomly",
" * ticking.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentRandomTickEvent extends BlockEvent {",
"    private constructor();",
"}",
"export class BlockComponentRegistry {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can be called in early-execution mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link BlockCustomComponentAlreadyRegisteredError}",
"     *",
"     * {@link BlockCustomComponentReloadNewComponentError}",
"     *",
"     * {@link BlockCustomComponentReloadNewEventError}",
"     *",
"     * {@link BlockCustomComponentReloadVersionError}",
"     *",
"     * {@link CustomComponentInvalidRegistryError}",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link NamespaceNameError}",
"     */",
"    registerCustomComponent(name: string, customComponent: BlockCustomComponent): void;",
"}",
"/**",
" * Contains information regarding an entity stepping off a",
" * specific block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentStepOffEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity that stepped off the block.",
"     *",
"     */",
"    readonly entity?: Entity;",
"}",
"/**",
" * Contains information regarding an entity stepping onto a",
" * specific block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentStepOnEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity that stepped on the block.",
"     *",
"     */",
"    readonly entity?: Entity;",
"}",
"/**",
" * Contains information regarding a specific block ticking.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockComponentTickEvent extends BlockEvent {",
"    private constructor();",
"}",
"/**",
" * An instance of a custom component on a block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockCustomComponentInstance extends BlockComponent {",
"    private constructor();",
"    readonly customComponentParameters: CustomComponentParameters;",
"}",
"/**",
" * Contains information regarding an event that impacts a",
" * specific block.",
" */",
"export class BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Block currently in the world at the location of this event.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * Dimension that contains the block that is the subject of",
"     * this event.",
"     *",
"     */",
"    readonly dimension: Dimension;",
"}",
"/**",
" * Contains information regarding an explosion that has",
" * occurred for a specific block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockExplodeAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Description of the block that has exploded.",
"     *",
"     */",
"    readonly explodedBlockPermutation: BlockPermutation;",
"    /**",
"     * @remarks",
"     * Optional source of the explosion.",
"     *",
"     */",
"    readonly source?: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when an explosion",
" * occurs, as it impacts individual blocks.",
" */",
"export class BlockExplodeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an explosion",
"     * occurs, as it impacts individual blocks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: BlockExplodeAfterEvent) => void): (arg0: BlockExplodeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an explosion",
"     * occurs, as it impacts individual blocks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: BlockExplodeAfterEvent) => void): void;",
"}",
"/**",
" * Represents the fluid container of a block in the world. Used",
" * with blocks like cauldrons.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockFluidContainerComponent extends BlockComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Relative fill level of the fluid container.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    fillLevel: number;",
"    /**",
"     * @remarks",
"     * Custom color of the fluid in the container.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    fluidColor: RGBA;",
"    static readonly componentId = 'minecraft:fluid_container';",
"    /**",
"     * @remarks",
"     * Adds a dye to the fluid. The dye color is combined with any",
"     * existing custom color.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addDye(dye: ItemType): void;",
"    /**",
"     * @remarks",
"     * Gets the current fluid type in the container.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getFluidType(): FluidType;",
"    /**",
"     * @remarks",
"     * Sets the current fluid type in the container.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setFluidType(fluidType: FluidType): void;",
"    /**",
"     * @remarks",
"     * Sets a potion item in the container. Changes the container's",
"     * fluid type to potion.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setPotion(itemStack: ItemStack): void;",
"}",
"/**",
" * Represents the inventory of a block in the world. Used with",
" * blocks like chests.",
" * @example placeItemsInChest.ts",
" * ```typescript",
" * import { ItemStack, BlockInventoryComponent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes, MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function placeItemsInChest(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // Fetch block",
" *   const block = targetLocation.dimension.getBlock(targetLocation);",
" *",
" *   if (!block) {",
" *     log('Could not find block. Maybe it is not loaded?', -1);",
" *     return;",
" *   }",
" *",
" *   // Make it a chest",
" *   block.setType(MinecraftBlockTypes.Chest);",
" *",
" *   // Get the inventory",
" *   const inventoryComponent = block.getComponent('inventory') as BlockInventoryComponent;",
" *",
" *   if (!inventoryComponent || !inventoryComponent.container) {",
" *     log('Could not find inventory component.', -1);",
" *     return;",
" *   }",
" *",
" *   const inventoryContainer = inventoryComponent.container;",
" *",
" *   // Set slot 0 to a stack of 10 apples",
" *   inventoryContainer.setItem(0, new ItemStack(MinecraftItemTypes.Apple, 10));",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockInventoryComponent extends BlockComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The container which holds an {@link ItemStack}.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly container?: Container;",
"    static readonly componentId = 'minecraft:inventory';",
"}",
"/**",
" * A BlockLocationIterator returns the next block location of",
" * the block volume across which it is iterating.",
" * The BlockLocationIterator is used to abstract the shape of",
" * the block volume it was fetched from (so it can represent",
" * all the block locations that make up rectangles, cubes,",
" * spheres, lines and complex shapes).",
" * Each iteration pass returns the next valid block location in",
" * the parent shape.",
" * Unless otherwise specified by the parent shape - the",
" * BlockLocationIterator will iterate over a 3D space in the",
" * order of increasing X, followed by increasing Z followed by",
" * increasing Y.",
" * (Effectively stepping across the XZ plane, and when all the",
" * locations in that plane are exhausted, increasing the Y",
" * coordinate to the next XZ slice)",
" */",
"export class BlockLocationIterator implements Iterable<Vector3> {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    [Symbol.iterator](): Iterator<Vector3>;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    next(): IteratorResult<Vector3>;",
"}",
"/**",
" * Represents the color of a block when displayed on a map.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockMapColorComponent extends BlockComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Base map color defined for that block.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly color: RGBA;",
"    /**",
"     * @remarks",
"     * Returns the base color multiplied to the evaluated tint at",
"     * the given position.",
"     *",
"     */",
"    readonly tintedColor: RGBA;",
"    /**",
"     * @remarks",
"     * Type of tint applied to the color.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly tintMethod: TintMethod;",
"    static readonly componentId = 'minecraft:map_color';",
"}",
"/**",
" * Contains the combination of type {@link BlockType} and",
" * properties (also sometimes called block state) which",
" * describe a block (but does not belong to a specific {@link",
" * Block}).",
" * @example addTranslatedSign.ts",
" * ```typescript",
" * import { world, BlockPermutation, BlockSignComponent, BlockComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function addTranslatedSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const dim = players[0].dimension;",
" *",
" *   const signBlock = dim.getBlock(targetLocation);",
" *",
" *   if (!signBlock) {",
" *     log('Could not find a block at specified location.');",
" *     return -1;",
" *   }",
" *   const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });",
" *",
" *   signBlock.setPermutation(signPerm);",
" *",
" *   const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *",
" *   signComponent?.setText({ translate: 'item.skull.player.name', with: [players[0].name] });",
" * }",
" * ```",
" */",
"export class BlockPermutation {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The {@link BlockType} that the permutation has.",
"     *",
"     */",
"    readonly 'type': BlockType;",
"    /**",
"     * @remarks",
"     * Returns whether this block is removed when touched by",
"     * liquid.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block is removed when touched by liquid.",
"     * @throws This function can throw errors.",
"     */",
"    canBeDestroyedByLiquidSpread(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block can have a liquid placed over it,",
"     * i.e. be waterlogged.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block can have a liquid placed over it.",
"     * @throws This function can throw errors.",
"     */",
"    canContainLiquid(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns all available block states associated with this",
"     * block.",
"     *",
"     * @returns",
"     * Returns the list of all of the block states that the",
"     * permutation has.",
"     */",
"    getAllStates(): Record<string, boolean | number | string>;",
"    /**",
"     * @remarks",
"     * Retrieves a prototype item stack based on this block",
"     * permutation that can be used with item",
"     * Container/ContainerSlot APIs.",
"     *",
"     * @param amount",
"     * Number of instances of this block to place in the prototype",
"     * item stack.",
"     * Defaults to: 1",
"     */",
"    getItemStack(amount?: number): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Gets a state for the permutation.",
"     *",
"     * @param stateName",
"     * Name of the block state who's value is to be returned.",
"     * @returns",
"     * Returns the state if the permutation has it, else",
"     * `undefined`.",
"     */",
"    getState<T extends keyof minecraftvanilladata.BlockStateSuperset>(",
"        stateName: T,",
"    ): minecraftvanilladata.BlockStateSuperset[T] | undefined;",
"    /**",
"     * @remarks",
"     * Creates a copy of the permutation.",
"     *",
"     */",
"    getTags(): string[];",
"    /**",
"     * @remarks",
"     * Checks to see if the permutation has a specific tag.",
"     *",
"     * @returns",
"     * Returns `true` if the permutation has the tag, else `false`.",
"     * @example checkBlockTags.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     *",
"     * function checkBlockTags(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   // Fetch the block",
"     *   const block = targetLocation.dimension.getBlock(targetLocation);",
"     *",
"     *   // check that the block is loaded",
"     *   if (block) {",
"     *     log(`Block is dirt: ${block.hasTag('dirt')}`);",
"     *     log(`Block is wood: ${block.hasTag('wood')}`);",
"     *     log(`Block is stone: ${block.hasTag('stone')}`);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    hasTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block stops liquid from flowing.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block stops liquid from flowing.",
"     * @throws This function can throw errors.",
"     */",
"    isLiquidBlocking(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this block is removed and spawns its item",
"     * when touched by liquid.",
"     *",
"     * @param liquidType",
"     * The type of liquid this function should be called for.",
"     * @returns",
"     * Whether this block is removed and spawns its item when",
"     * touched by liquid.",
"     * @throws This function can throw errors.",
"     */",
"    liquidSpreadCausesSpawn(liquidType: LiquidType): boolean;",
"    /**",
"     * @remarks",
"     * Returns a boolean whether a specified permutation matches",
"     * this permutation. If states is not specified, matches checks",
"     * against the set of types more broadly.",
"     *",
"     * @param blockName",
"     * An optional set of states to compare against.",
"     */",
"    matches<T extends string = minecraftvanilladata.MinecraftBlockTypes>(",
"        blockName: T,",
"        states?: BlockStateArg<T>,",
"    ): boolean;",
"    /**",
"     * @remarks",
"     * Returns a derived BlockPermutation with a specific property",
"     * set.",
"     *",
"     * @param name",
"     * Identifier of the block property.",
"     * @param value",
"     * Value of the block property.",
"     * @throws This function can throw errors.",
"     */",
"    withState<T extends keyof minecraftvanilladata.BlockStateSuperset>(",
"        name: T,",
"        value: minecraftvanilladata.BlockStateSuperset[T],",
"    ): BlockPermutation;",
"    /**",
"     * @remarks",
"     * Given a type identifier and an optional set of properties,",
"     * will return a BlockPermutation object that is usable in",
"     * other block APIs (e.g., block.setPermutation)",
"     *",
"     * @param blockName",
"     * Identifier of the block to check.",
"     * @throws This function can throw errors.",
"     * @example addBlockColorCube.ts",
"     * ```typescript",
"     * import { BlockPermutation, DimensionLocation } from '@minecraft/server';",
"     * import { Vector3Utils } from '@minecraft/math';",
"     * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function addBlockColorCube(targetLocation: DimensionLocation) {",
"     *   const allWoolBlocks: string[] = [",
"     *     MinecraftBlockTypes.WhiteWool,",
"     *     MinecraftBlockTypes.OrangeWool,",
"     *     MinecraftBlockTypes.MagentaWool,",
"     *     MinecraftBlockTypes.LightBlueWool,",
"     *     MinecraftBlockTypes.YellowWool,",
"     *     MinecraftBlockTypes.LimeWool,",
"     *     MinecraftBlockTypes.PinkWool,",
"     *     MinecraftBlockTypes.GrayWool,",
"     *     MinecraftBlockTypes.LightGrayWool,",
"     *     MinecraftBlockTypes.CyanWool,",
"     *     MinecraftBlockTypes.PurpleWool,",
"     *     MinecraftBlockTypes.BlueWool,",
"     *     MinecraftBlockTypes.BrownWool,",
"     *     MinecraftBlockTypes.GreenWool,",
"     *     MinecraftBlockTypes.RedWool,",
"     *     MinecraftBlockTypes.BlackWool,",
"     *   ];",
"     *",
"     *   const cubeDim = 7;",
"     *",
"     *   let colorIndex = 0;",
"     *",
"     *   for (let x = 0; x <= cubeDim; x++) {",
"     *     for (let y = 0; y <= cubeDim; y++) {",
"     *       for (let z = 0; z <= cubeDim; z++) {",
"     *         colorIndex++;",
"     *         targetLocation.dimension",
"     *           .getBlock(Vector3Utils.add(targetLocation, { x, y, z }))",
"     *           ?.setPermutation(BlockPermutation.resolve(allWoolBlocks[colorIndex % allWoolBlocks.length]));",
"     *       }",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    static resolve<T extends string = minecraftvanilladata.MinecraftBlockTypes>(",
"        blockName: T,",
"        states?: BlockStateArg<T>,",
"    ): BlockPermutation;",
"}",
"/**",
" * When present, this block has piston-like behavior. Contains",
" * additional properties for discovering block piston state.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockPistonComponent extends BlockComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Whether the piston is in the process of expanding or",
"     * retracting.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isMoving: boolean;",
"    /**",
"     * @remarks",
"     * The current state of the piston.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly state: BlockPistonState;",
"    static readonly componentId = 'minecraft:piston';",
"    /**",
"     * @remarks",
"     * Retrieves a set of blocks that this piston is connected",
"     * with.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getAttachedBlocks(): Block[];",
"    /**",
"     * @remarks",
"     * Retrieves a set of block locations that this piston is",
"     * connected with.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getAttachedBlocksLocations(): Vector3[];",
"}",
"/**",
" * Represents a block that can play a record.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockRecordPlayerComponent extends BlockComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:record_player';",
"    /**",
"     * @remarks",
"     * Ejects the currently set record of this record-playing",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    ejectRecord(): void;",
"    /**",
"     * @remarks",
"     * Gets the currently set record of this record-playing block.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getRecord(): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Returns true if the record-playing block is currently",
"     * playing a record.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    isPlaying(): boolean;",
"    /**",
"     * @remarks",
"     * Pauses the currently playing record of this record-playing",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    pauseRecord(): void;",
"    /**",
"     * @remarks",
"     * Plays the currently set record of this record-playing block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    playRecord(): void;",
"    /**",
"     * @remarks",
"     * Sets and plays a record based on an item type.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param startPlaying",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     */",
"    setRecord(recordItemType?: ItemType | string, startPlaying?: boolean): void;",
"}",
"/**",
" * Represents a block that can display text on it.",
" * @example addSign.ts",
" * ```typescript",
" * import { world, BlockPermutation, BlockSignComponent, BlockComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function addSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const dim = players[0].dimension;",
" *",
" *   const signBlock = dim.getBlock(targetLocation);",
" *",
" *   if (!signBlock) {",
" *     log('Could not find a block at specified location.');",
" *     return -1;",
" *   }",
" *   const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });",
" *",
" *   signBlock.setPermutation(signPerm);",
" *",
" *   const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *",
" *   signComponent?.setText(`Basic sign!/nThis is green on the front.`);",
" * }",
" * ```",
" * @example addTwoSidedSign.ts",
" * ```typescript",
" * import { BlockPermutation, BlockSignComponent, SignSide, DyeColor, BlockComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function addTwoSidedSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const signBlock = targetLocation.dimension.getBlock(targetLocation);",
" *",
" *   if (!signBlock) {",
" *     log('Could not find a block at specified location.');",
" *     return -1;",
" *   }",
" *   const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });",
" *",
" *   signBlock.setPermutation(signPerm);",
" *",
" *   const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *",
" *   if (signComponent) {",
" *     signComponent.setText(`Party Sign!/nThis is green on the front.`);",
" *     signComponent.setText(`Party Sign!/nThis is red on the back.`, SignSide.Back);",
" *     signComponent.setTextDyeColor(DyeColor.Green);",
" *     signComponent.setTextDyeColor(DyeColor.Red, SignSide.Back);",
" *",
" *     // players cannot edit sign!",
" *     signComponent.setWaxed(true);",
" *   } else {",
" *     log('Could not find sign component.');",
" *   }",
" * }",
" * ```",
" * @example updateSignText.ts",
" * ```typescript",
" * import { BlockSignComponent, BlockComponentTypes, DimensionLocation, RawMessage, RawText } from '@minecraft/server';",
" *",
" * function updateSignText(targetLocation: DimensionLocation) {",
" *   const block = targetLocation.dimension.getBlock(targetLocation);",
" *   if (!block) {",
" *     console.warn('Could not find a block at specified location.');",
" *     return;",
" *   }",
" *",
" *   const sign = block.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *   if (sign) {",
" *     // RawMessage",
" *     const helloWorldMessage: RawMessage = { text: 'Hello World' };",
" *     sign.setText(helloWorldMessage);",
" *",
" *     // RawText",
" *     const helloWorldText: RawText = { rawtext: [{ text: 'Hello World' }] };",
" *     sign.setText(helloWorldText);",
" *",
" *     // Regular string",
" *     sign.setText('Hello World');",
" *   } else {",
" *     console.warn('Could not find a sign component on the block.');",
" *   }",
" * }",
" * ```",
" * @example addTranslatedSign.ts",
" * ```typescript",
" * import { world, BlockPermutation, BlockSignComponent, BlockComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function addTranslatedSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const dim = players[0].dimension;",
" *",
" *   const signBlock = dim.getBlock(targetLocation);",
" *",
" *   if (!signBlock) {",
" *     log('Could not find a block at specified location.');",
" *     return -1;",
" *   }",
" *   const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });",
" *",
" *   signBlock.setPermutation(signPerm);",
" *",
" *   const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *",
" *   signComponent?.setText({ translate: 'item.skull.player.name', with: [players[0].name] });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockSignComponent extends BlockComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Whether or not players can edit the sign. This happens if a",
"     * sign has had a honeycomb used on it or `setWaxed` was called",
"     * on the sign.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isWaxed: boolean;",
"    static readonly componentId = 'minecraft:sign';",
"    /**",
"     * @remarks",
"     * Returns the RawText of the sign if `setText` was called with",
"     * a RawMessage or a RawText object, otherwise returns",
"     * undefined.",
"     *",
"     * @param side",
"     * The side of the sign to read the message from. If not",
"     * provided, this will return the message from the front side",
"     * of the sign.",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    getRawText(side?: SignSide): RawText | undefined;",
"    /**",
"     * @remarks",
"     * Returns the text of the sign if `setText` was called with a",
"     * string, otherwise returns undefined.",
"     *",
"     * @param side",
"     * The side of the sign to read the message from. If not",
"     * provided, this will return the message from the front side",
"     * of the sign.",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    getText(side?: SignSide): string | undefined;",
"    /**",
"     * @remarks",
"     * Gets the dye that is on the text or undefined if the sign",
"     * has not been dyed.",
"     *",
"     * @param side",
"     * The side of the sign to read the dye from. If not provided,",
"     * this will return the dye on the front side of the sign.",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    getTextDyeColor(side?: SignSide): DyeColor | undefined;",
"    /**",
"     * @remarks",
"     * Sets the text of the sign component.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param message",
"     * The message to set on the sign. If set to a string, then",
"     * call `getText` to read that string. If set to a RawMessage,",
"     * then calling `getRawText` will return a RawText. If set to a",
"     * RawText, then calling `getRawText` will return the same",
"     * object that was passed in.",
"     * @param side",
"     * The side of the sign the message will be set on. If not",
"     * provided, the message will be set on the front side of the",
"     * sign.",
"     * Defaults to: 0",
"     * @throws",
"     * Throws if the provided message is greater than 512",
"     * characters in length.",
"     */",
"    setText(message: RawMessage | RawText | string, side?: SignSide): void;",
"    /**",
"     * @remarks",
"     * Sets the dye color of the text.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param color",
"     * The dye color to apply to the sign or undefined to clear the",
"     * dye on the sign.",
"     * Defaults to: null",
"     * @param side",
"     * The side of the sign the color will be set on. If not",
"     * provided, the color will be set on the front side of the",
"     * sign.",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    setTextDyeColor(color?: DyeColor, side?: SignSide): void;",
"    /**",
"     * @remarks",
"     * Makes it so players cannot edit this sign.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setWaxed(waxed: boolean): void;",
"}",
"/**",
" * Enumerates all {@link BlockStateType}s.",
" */",
"export class BlockStates {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Retrieves a specific block state instance.",
"     *",
"     * @returns",
"     * Returns the {@link Block} state instance if it is found. If",
"     * the block state instance is not found returns undefined.",
"     */",
"    static get(stateName: string): BlockStateType | undefined;",
"    /**",
"     * @remarks",
"     * Retrieves a set of all available block states.",
"     *",
"     */",
"    static getAll(): BlockStateType[];",
"}",
"/**",
" * Represents a configurable state value of a block instance.",
" * For example, the facing direction of stairs is accessible as",
" * a block state.",
" */",
"export class BlockStateType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Identifier of the block property.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * A set of valid values for the block property.",
"     *",
"     */",
"    readonly validValues: (boolean | number | string)[];",
"}",
"/**",
" * The type (or template) of a block. Does not contain",
" * permutation data (state) other than the type of block it",
" * represents. This type was introduced as of version",
" * 1.17.10.21.",
" */",
"export class BlockType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Block type name - for example, `minecraft:acacia_stairs`.",
"     *",
"     */",
"    readonly id: string;",
"}",
"/**",
" * Contains a catalog of Minecraft Block Types that are",
" * available in this world.",
" */",
"export class BlockTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns a BlockType object for the specified identifier.",
"     *",
"     * @param typeName",
"     * Identifier of the block type. Should follow a namespace:id",
"     * pattern, such as minecraft:dirt.",
"     * @returns",
"     * BlockType object, or undefined if the block type is not",
"     * available within this world.",
"     */",
"    static get(typeName: string): BlockType | undefined;",
"    /**",
"     * @remarks",
"     * Returns a collection of all available block types.",
"     *",
"     */",
"    static getAll(): BlockType[];",
"}",
"/**",
" * A BlockVolume is a simple interface to an object which",
" * represents a 3D rectangle of a given size (in blocks) at a",
" * world block location.",
" * Note that these are not analogous to 'min' and 'max' values,",
" * in that the vector components are not guaranteed to be in",
" * any order.",
" * In addition, these vector positions are not interchangeable",
" * with BlockLocation.",
" * If you want to get this volume represented as range of of",
" * BlockLocations, you can use the getBoundingBox utility",
" * function.",
" * This volume class will maintain the ordering of the corner",
" * indexes as initially set. imagine that each corner is",
" * assigned in Editor - as you move the corner around",
" * (potentially inverting the min/max relationship of the",
" * bounds) - what",
" * you had originally selected as the top/left corner would",
" * traditionally become the bottom/right.",
" * When manually editing these kinds of volumes, you need to",
" * maintain the identity of the corner as you edit - the",
" * BlockVolume utility functions do this.",
" *",
" * Important to note that this measures block sizes (to/from) -",
" * a normal AABB (0,0,0) to (0,0,0) would traditionally be of",
" * size (0,0,0)",
" * However, because we're measuring blocks - the size or span",
" * of a BlockVolume would actually be (1,1,1)",
" *",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockVolume extends BlockVolumeBase {",
"    /**",
"     * @remarks",
"     * A world block location that represents a corner in a 3D",
"     * rectangle",
"     *",
"     */",
"    'from': Vector3;",
"    /**",
"     * @remarks",
"     * A world block location that represents the opposite corner",
"     * in a 3D rectangle",
"     *",
"     */",
"    to: Vector3;",
"    constructor(from: Vector3, to: Vector3);",
"    /**",
"     * @remarks",
"     * Check to see if the given location is directly adjacent to",
"     * the outer surface of a BlockVolume.",
"     *",
"     *",
"     * @param pos",
"     * The world block location to test",
"     * @returns",
"     * If the location is either inside or more than 0 blocks away,",
"     * the function will return false.",
"     * If the location is directly contacting the outer surface of",
"     * the BlockVolume, the function will return true.",
"     */",
"    doesLocationTouchFaces(pos: Vector3): boolean;",
"    /**",
"     * @remarks",
"     * Check to see if a two block volumes are directly adjacent",
"     * and two faces touch.",
"     *",
"     * @param other",
"     * The volume to test",
"     * @returns",
"     * If the outer faces of both block volumes touch and are",
"     * directly adjacent at any point, return true.",
"     */",
"    doesVolumeTouchFaces(other: BlockVolume): boolean;",
"    /**",
"     * @remarks",
"     * Return an enumeration which represents the intersection",
"     * between two BlockVolume objects",
"     *",
"     */",
"    intersects(other: BlockVolume): BlockVolumeIntersection;",
"}",
"/**",
" * Base type for BlockVolumes.",
" */",
"export class BlockVolumeBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Fetch a {@link BlockLocationIterator} that represents all of",
"     * the block world locations within the specified volume",
"     *",
"     */",
"    getBlockLocationIterator(): BlockLocationIterator;",
"    /**",
"     * @remarks",
"     * Return the capacity (volume) of the BlockVolume (W*D*H)",
"     *",
"     */",
"    getCapacity(): number;",
"    /**",
"     * @remarks",
"     * Get the largest corner position of the volume (guaranteed to",
"     * be >= min)",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getMax(): Vector3;",
"    /**",
"     * @remarks",
"     * Get the smallest corner position of the volume (guaranteed",
"     * to be <= max)",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getMin(): Vector3;",
"    /**",
"     * @remarks",
"     * Get a {@link Vector3} object where each component represents",
"     * the number of blocks along that axis",
"     *",
"     */",
"    getSpan(): Vector3;",
"    /**",
"     * @remarks",
"     * Check to see if a given world block location is inside a",
"     * BlockVolume",
"     *",
"     */",
"    isInside(location: Vector3): boolean;",
"    /**",
"     * @remarks",
"     * Move a BlockVolume by a specified amount",
"     *",
"     * @param delta",
"     * Amount of blocks to move by",
"     */",
"    translate(delta: Vector3): void;",
"}",
"/**",
" * Contains information related to changes to a button push.",
" * @example buttonPushEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, ButtonPushAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function buttonPushEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a button on cobblestone",
" *   const cobblestone = targetLocation.dimension.getBlock(targetLocation);",
" *   const button = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 1,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   if (cobblestone === undefined || button === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   cobblestone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Cobblestone));",
" *   button.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.AcaciaButton).withState('facing_direction', 1));",
" *",
" *   world.afterEvents.buttonPush.subscribe((buttonPushEvent: ButtonPushAfterEvent) => {",
" *     const eventLoc = buttonPushEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y + 1 && eventLoc.z === targetLocation.z) {",
" *       log('Button push event at tick ' + system.currentTick);",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ButtonPushAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Optional source that triggered the button push.",
"     *",
"     */",
"    readonly source: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when a button is",
" * pushed.",
" * @example buttonPushEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, ButtonPushAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function buttonPushEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a button on cobblestone",
" *   const cobblestone = targetLocation.dimension.getBlock(targetLocation);",
" *   const button = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 1,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   if (cobblestone === undefined || button === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   cobblestone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Cobblestone));",
" *   button.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.AcaciaButton).withState('facing_direction', 1));",
" *",
" *   world.afterEvents.buttonPush.subscribe((buttonPushEvent: ButtonPushAfterEvent) => {",
" *     const eventLoc = buttonPushEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y + 1 && eventLoc.z === targetLocation.z) {",
" *       log('Button push event at tick ' + system.currentTick);",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"export class ButtonPushAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a button is pushed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ButtonPushAfterEvent) => void): (arg0: ButtonPushAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a button is",
"     * pushed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ButtonPushAfterEvent) => void): void;",
"}",
"/**",
" * Contains methods relating to the active camera for the",
" * specified player.",
" */",
"export class Camera {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns whether the Camera is valid to access and use. A",
"     * Camera is considered valid when the owning Player of the",
"     * Camera is loaded and valid itself.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Clears the active camera for the specified player. Causes",
"     * the specified players to end any in-progress camera",
"     * perspectives, including any eased camera motions, and return",
"     * to their normal perspective.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    clear(): void;",
"    /**",
"     * @remarks",
"     * Begins a camera fade transition. A fade transition is a",
"     * full-screen color that fades-in, holds, and then fades-out.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param fadeCameraOptions",
"     * Additional options around camera fade operations.",
"     * @throws This function can throw errors.",
"     */",
"    fade(fadeCameraOptions?: CameraFadeOptions): void;",
"    /**",
"     * @remarks",
"     * Sets the current active camera for the specified player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param cameraPreset",
"     * Identifier of a camera preset file defined within JSON.",
"     * @param setOptions",
"     * Additional options for the camera.",
"     * @throws This function can throw errors.",
"     */",
"    setCamera(",
"        cameraPreset: string,",
"        setOptions?:",
"            | CameraFixedBoomOptions",
"            | CameraSetFacingOptions",
"            | CameraSetLocationOptions",
"            | CameraSetPosOptions",
"            | CameraSetRotOptions",
"            | CameraTargetOptions,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Sets the current active camera for the specified player and",
"     * resets the position and rotation to the values defined in",
"     * the JSON.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param cameraPreset",
"     * Identifier of a camera preset file defined within JSON.",
"     * @param easeOptions",
"     * Options to ease the camera back to its original position and",
"     * rotation.",
"     * @throws This function can throw errors.",
"     */",
"    setDefaultCamera(cameraPreset: string, easeOptions?: EaseOptions): void;",
"}",
"/**",
" * Contains the device information for a client instance.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ClientSystemInfo extends SystemInfo {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The max render distance for the device in chunks.",
"     *",
"     */",
"    readonly maxRenderDistance: number;",
"    /**",
"     * @remarks",
"     * The platform type of the device.",
"     *",
"     */",
"    readonly platformType: PlatformType;",
"}",
"/**",
" * Contains return data on the result of a command execution.",
" */",
"export class CommandResult {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If the command operates against a number of entities,",
"     * blocks, or items, this returns the number of successful",
"     * applications of this command.",
"     *",
"     */",
"    readonly successCount: number;",
"}",
"/**",
" * Base class for downstream Component implementations.",
" */",
"export class Component {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns whether the component is valid. A component is",
"     * considered valid if its owner is valid, in addition to any",
"     * addition to any additional validation required by the",
"     * component.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Identifier of the component.",
"     *",
"     */",
"    readonly typeId: string;",
"}",
"/**",
" * Represents a container that can hold sets of items. Used",
" * with entities such as Players, Chest Minecarts, Llamas, and",
" * more.",
" * @example containers.ts",
" * ```typescript",
" * import { ItemStack, EntityInventoryComponent, BlockInventoryComponent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes, MinecraftItemTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function containers(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const xLocation = targetLocation; // left chest location",
" *   const xPlusTwoLocation = { x: targetLocation.x + 2, y: targetLocation.y, z: targetLocation.z }; // right chest",
" *",
" *   const chestCart = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.ChestMinecart, {",
" *     x: targetLocation.x + 4,",
" *     y: targetLocation.y,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   const xChestBlock = targetLocation.dimension.getBlock(xLocation);",
" *   const xPlusTwoChestBlock = targetLocation.dimension.getBlock(xPlusTwoLocation);",
" *",
" *   if (!xChestBlock || !xPlusTwoChestBlock) {",
" *     log('Could not retrieve chest blocks.');",
" *     return;",
" *   }",
" *",
" *   xChestBlock.setType(MinecraftBlockTypes.Chest);",
" *   xPlusTwoChestBlock.setType(MinecraftBlockTypes.Chest);",
" *",
" *   const xPlusTwoChestInventoryComp = xPlusTwoChestBlock.getComponent('inventory') as BlockInventoryComponent;",
" *   const xChestInventoryComponent = xChestBlock.getComponent('inventory') as BlockInventoryComponent;",
" *   const chestCartInventoryComp = chestCart.getComponent('inventory') as EntityInventoryComponent;",
" *",
" *   const xPlusTwoChestContainer = xPlusTwoChestInventoryComp.container;",
" *   const xChestContainer = xChestInventoryComponent.container;",
" *   const chestCartContainer = chestCartInventoryComp.container;",
" *",
" *   if (!xPlusTwoChestContainer || !xChestContainer || !chestCartContainer) {",
" *     log('Could not retrieve chest containers.');",
" *     return;",
" *   }",
" *",
" *   xPlusTwoChestContainer.setItem(0, new ItemStack(MinecraftItemTypes.Apple, 10));",
" *   if (xPlusTwoChestContainer.getItem(0)?.typeId !== MinecraftItemTypes.Apple) {",
" *     log('Expected apple in x+2 container slot index 0', -1);",
" *   }",
" *",
" *   xPlusTwoChestContainer.setItem(1, new ItemStack(MinecraftItemTypes.Emerald, 10));",
" *   if (xPlusTwoChestContainer.getItem(1)?.typeId !== MinecraftItemTypes.Emerald) {",
" *     log('Expected emerald in x+2 container slot index 1', -1);",
" *   }",
" *",
" *   if (xPlusTwoChestContainer.size !== 27) {",
" *     log('Unexpected size: ' + xPlusTwoChestContainer.size, -1);",
" *   }",
" *",
" *   if (xPlusTwoChestContainer.emptySlotsCount !== 25) {",
" *     log('Unexpected emptySlotsCount: ' + xPlusTwoChestContainer.emptySlotsCount, -1);",
" *   }",
" *",
" *   xChestContainer.setItem(0, new ItemStack(MinecraftItemTypes.Cake, 10));",
" *",
" *   xPlusTwoChestContainer.transferItem(0, chestCartContainer); // transfer the apple from the xPlusTwo chest to a chest cart",
" *   xPlusTwoChestContainer.swapItems(1, 0, xChestContainer); // swap the cake from x and the emerald from xPlusTwo",
" *",
" *   if (chestCartContainer.getItem(0)?.typeId !== MinecraftItemTypes.Apple) {",
" *     log('Expected apple in minecraft chest container slot index 0', -1);",
" *   }",
" *",
" *   if (xChestContainer.getItem(0)?.typeId === MinecraftItemTypes.Emerald) {",
" *     log('Expected emerald in x container slot index 0', -1);",
" *   }",
" *",
" *   if (xPlusTwoChestContainer.getItem(1)?.typeId === MinecraftItemTypes.Cake) {",
" *     log('Expected cake in x+2 container slot index 1', -1);",
" *   }",
" * }",
" * ```",
" */",
"export class Container {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Count of the slots in the container that are empty.",
"     *",
"     * @throws",
"     * Throws if the container is invalid.",
"     */",
"    readonly emptySlotsCount: number;",
"    /**",
"     * @remarks",
"     * Returns whether a container object (or the entity or block",
"     * that this container is associated with) is still available",
"     * for use in this context.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * The number of slots in this container. For example, a",
"     * standard single-block chest has a size of 27. Note, a",
"     * player's inventory container contains a total of 36 slots, 9",
"     * hotbar slots plus 27 inventory slots.",
"     *",
"     * @throws",
"     * Throws if the container is invalid.",
"     */",
"    readonly size: number;",
"    /**",
"     * @remarks",
"     * Adds an item to the container. The item is placed in the",
"     * first available slot(s) and can be stacked with existing",
"     * items of the same type. Note, use {@link Container.setItem}",
"     * if you wish to set the item in a particular slot.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * The stack of items to add.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link Error}",
"     */",
"    addItem(itemStack: ItemStack): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Clears all inventory items in the container.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the container is invalid.",
"     */",
"    clearAll(): void;",
"    /**",
"     * @remarks",
"     * Gets an {@link ItemStack} of the item at the specified slot.",
"     * If the slot is empty, returns `undefined`. This method does",
"     * not change or clear the contents of the specified slot. To",
"     * get a reference to a particular slot, see {@link",
"     * Container.getSlot}.",
"     *",
"     * @param slot",
"     * Zero-based index of the slot to retrieve items from.",
"     * @throws",
"     * Throws if the container is invalid or if the `slot` index is",
"     * out of bounds.",
"     * @example getFirstHotbarItem.ts",
"     * ```typescript",
"     * import { world, EntityInventoryComponent, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function getFirstHotbarItem(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   for (const player of world.getAllPlayers()) {",
"     *     const inventory = player.getComponent(EntityInventoryComponent.componentId) as EntityInventoryComponent;",
"     *     if (inventory && inventory.container) {",
"     *       const firstItem = inventory.container.getItem(0);",
"     *",
"     *       if (firstItem) {",
"     *         log('First item in hotbar is: ' + firstItem.typeId);",
"     *       }",
"     *",
"     *       return inventory.container.getItem(0);",
"     *     }",
"     *     return undefined;",
"     *   }",
"     * }",
"     * ```",
"     */",
"    getItem(slot: number): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Returns a container slot. This acts as a reference to a slot",
"     * at the given index for this container.",
"     *",
"     * @param slot",
"     * The index of the slot to return. This index must be within",
"     * the bounds of the container.",
"     * @throws",
"     * Throws if the container is invalid or if the `slot` index is",
"     * out of bounds.",
"     */",
"    getSlot(slot: number): ContainerSlot;",
"    /**",
"     * @remarks",
"     * Moves an item from one slot to another, potentially across",
"     * containers.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param fromSlot",
"     * Zero-based index of the slot to transfer an item from, on",
"     * this container.",
"     * @param toSlot",
"     * Zero-based index of the slot to transfer an item to, on",
"     * `toContainer`.",
"     * @param toContainer",
"     * Target container to transfer to. Note this can be the same",
"     * container as the source.",
"     * @throws",
"     * Throws if either this container or `toContainer` are invalid",
"     * or if the `fromSlot` or `toSlot` indices out of bounds.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link Error}",
"     * @example moveBetweenContainers.ts",
"     * ```typescript",
"     * import { world, EntityInventoryComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function moveBetweenContainers(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const players = world.getAllPlayers();",
"     *",
"     *   const chestCart = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.ChestMinecart, {",
"     *     x: targetLocation.x + 1,",
"     *     y: targetLocation.y,",
"     *     z: targetLocation.z,",
"     *   });",
"     *",
"     *   if (players.length > 0) {",
"     *     const fromPlayer = players[0];",
"     *",
"     *     const fromInventory = fromPlayer.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *     const toInventory = chestCart.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *",
"     *     if (fromInventory && toInventory && fromInventory.container && toInventory.container) {",
"     *       fromInventory.container.moveItem(0, 0, toInventory.container);",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    moveItem(fromSlot: number, toSlot: number, toContainer: Container): void;",
"    /**",
"     * @remarks",
"     * Sets an item stack within a particular slot.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param slot",
"     * Zero-based index of the slot to set an item at.",
"     * @param itemStack",
"     * Stack of items to place within the specified slot. Setting",
"     * `itemStack` to undefined will clear the slot.",
"     * @throws",
"     * Throws if the container is invalid or if the `slot` index is",
"     * out of bounds.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link Error}",
"     */",
"    setItem(slot: number, itemStack?: ItemStack): void;",
"    /**",
"     * @remarks",
"     * Swaps items between two different slots within containers.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param slot",
"     * Zero-based index of the slot to swap from this container.",
"     * @param otherSlot",
"     * Zero-based index of the slot to swap with.",
"     * @param otherContainer",
"     * Target container to swap with. Note this can be the same",
"     * container as this source.",
"     * @throws",
"     * Throws if either this container or `otherContainer` are",
"     * invalid or if the `slot` or `otherSlot` are out of bounds.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link Error}",
"     */",
"    swapItems(slot: number, otherSlot: number, otherContainer: Container): void;",
"    /**",
"     * @remarks",
"     * Moves an item from one slot to another container, or to the",
"     * first available slot in the same container.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param fromSlot",
"     * Zero-based index of the slot to transfer an item from, on",
"     * this container.",
"     * @param toContainer",
"     * Target container to transfer to. Note this can be the same",
"     * container as the source.",
"     * @returns",
"     * An itemStack with the items that couldn't be transferred.",
"     * Returns undefined if all items were transferred.",
"     * @throws",
"     * Throws if either this container or `toContainer` are invalid",
"     * or if the `fromSlot` or `toSlot` indices out of bounds.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link Error}",
"     * @example transferBetweenContainers.ts",
"     * ```typescript",
"     * import { world, EntityInventoryComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function transferBetweenContainers(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const players = world.getAllPlayers();",
"     *",
"     *   const chestCart = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.ChestMinecart, {",
"     *     x: targetLocation.x + 1,",
"     *     y: targetLocation.y,",
"     *     z: targetLocation.z,",
"     *   });",
"     *",
"     *   if (players.length > 0) {",
"     *     const fromPlayer = players[0];",
"     *",
"     *     const fromInventory = fromPlayer.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *     const toInventory = chestCart.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *",
"     *     if (fromInventory && toInventory && fromInventory.container && toInventory.container) {",
"     *       fromInventory.container.transferItem(0, toInventory.container);",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    transferItem(fromSlot: number, toContainer: Container): ItemStack | undefined;",
"}",
"/**",
" * Represents a slot within a broader container (e.g., entity",
" * inventory.)",
" */",
"export class ContainerSlot {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Number of the items in the stack. Valid values range between",
"     * 1-255. The provided value will be clamped to the item's",
"     * maximum stack size.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the value is outside the range of 1-255.",
"     */",
"    amount: number;",
"    /**",
"     * @remarks",
"     * Returns whether the item is stackable. An item is considered",
"     * stackable if the item's maximum stack size is greater than 1",
"     * and the item does not contain any custom data or properties.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    readonly isStackable: boolean;",
"    /**",
"     * @remarks",
"     * Returns whether the ContainerSlot is valid. The container",
"     * slot is valid if the container exists and is loaded, and the",
"     * slot index is valid.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Gets or sets whether the item is kept on death.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     */",
"    keepOnDeath: boolean;",
"    /**",
"     * @remarks",
"     * Gets or sets the item's lock mode. The default value is",
"     * `ItemLockMode.none`.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     */",
"    lockMode: ItemLockMode;",
"    /**",
"     * @remarks",
"     * The maximum stack size. This value varies depending on the",
"     * type of item. For example, torches have a maximum stack size",
"     * of 64, while eggs have a maximum stack size of 16.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    readonly maxAmount: number;",
"    /**",
"     * @remarks",
"     * Given name of this stack of items. The name tag is displayed",
"     * when hovering over the item. Setting the name tag to an",
"     * empty string or `undefined` will remove the name tag.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid. Also throws if",
"     * the length exceeds 255 characters.",
"     */",
"    nameTag?: string;",
"    /**",
"     * @remarks",
"     * The type of the item.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    readonly 'type': ItemType;",
"    /**",
"     * @remarks",
"     * Identifier of the type of items for the stack. If a",
"     * namespace is not specified, 'minecraft:' is assumed.",
"     * Examples include 'wheat' or 'apple'.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    readonly typeId: string;",
"    /**",
"     * @remarks",
"     * Clears all dynamic properties that have been set on this",
"     * item stack.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    clearDynamicProperties(): void;",
"    /**",
"     * @remarks",
"     * Returns whether the item within this container slot can be",
"     * destroyed.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getCanDestroy(): string[];",
"    /**",
"     * @remarks",
"     * Returns if the item in this container slot can be placed on.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getCanPlaceOn(): string[];",
"    /**",
"     * @remarks",
"     * Returns a property value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @returns",
"     * Returns the value for the property, or undefined if the",
"     * property has not been set.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getDynamicProperty(identifier: string): boolean | number | string | Vector3 | undefined;",
"    /**",
"     * @remarks",
"     * Returns the available set of dynamic property identifiers",
"     * that have been used on this item stack.",
"     *",
"     * @returns",
"     * A string array of the dynamic properties set on this entity.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getDynamicPropertyIds(): string[];",
"    /**",
"     * @remarks",
"     * Returns the total size, in bytes, of all the dynamic",
"     * properties that are currently stored for this entity. This",
"     * includes the size of both the key and the value.  This can",
"     * be useful for diagnosing performance warning signs - if, for",
"     * example, an entity has many megabytes of associated dynamic",
"     * properties, it may be slow to load on various devices.",
"     *",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getDynamicPropertyTotalByteCount(): number;",
"    /**",
"     * @remarks",
"     * Creates an exact copy of the item stack, including any",
"     * custom data or properties.",
"     *",
"     * @returns",
"     * Returns a copy of the item in the slot. Returns undefined if",
"     * the slot is empty.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getItem(): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Returns the lore value - a secondary display string - for an",
"     * ItemStack.",
"     *",
"     * @returns",
"     * An array of lore strings. If the item does not have lore,",
"     * returns an empty array.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getLore(): string[];",
"    /**",
"     * @remarks",
"     * Returns all tags for the item in the slot.",
"     *",
"     * @returns",
"     * Returns all tags for the item in the slot. Return an empty",
"     * array if the the slot is empty.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    getTags(): string[];",
"    /**",
"     * @remarks",
"     * Returns true if this slot has an item.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    hasItem(): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether the item in the slot slot has the given tag.",
"     *",
"     * @param tag",
"     * The item tag.",
"     * @returns",
"     * Returns false when the slot is empty or the item in the slot",
"     * does not have the given tag.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    hasTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this item stack can be stacked with the",
"     * given `itemStack`. This is determined by comparing the item",
"     * type and any custom data and properties associated with the",
"     * item stacks. The amount of each item stack is not taken into",
"     * consideration.",
"     *",
"     * @param itemStack",
"     * The ItemStack that is being compared.",
"     * @returns",
"     * Returns whether this item stack can be stacked with the",
"     * given `itemStack`.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    isStackableWith(itemStack: ItemStack): boolean;",
"    /**",
"     * @remarks",
"     * The list of block types this item can break in Adventure",
"     * mode. The block names are displayed in the item's tooltip.",
"     * Setting the value to undefined will clear the list.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockIdentifiers",
"     * The list of blocks, given by their identifiers.",
"     * @throws",
"     * Throws if the slot's container is invalid. Also throws if",
"     * any of the provided block identifiers are invalid.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    setCanDestroy(blockIdentifiers?: string[]): void;",
"    /**",
"     * @remarks",
"     * The list of block types this item can be placed on in",
"     * Adventure mode. This is only applicable to block items. The",
"     * block names are displayed in the item's tooltip. Setting the",
"     * value to undefined will clear the list.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockIdentifiers",
"     * The list of blocks, given by their identifiers.",
"     * @throws",
"     * Throws if the slot's container is invalid. Also throws if",
"     * any of the provided block identifiers are invalid.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    setCanPlaceOn(blockIdentifiers?: string[]): void;",
"    /**",
"     * @remarks",
"     * Sets a specified property to a value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @param value",
"     * Data value of the property to set.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    setDynamicProperty(identifier: string, value?: boolean | number | string | Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets the given ItemStack in the slot, replacing any existing",
"     * item.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * The ItemStack to be placed in the slot.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link ContainerRulesError}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    setItem(itemStack?: ItemStack): void;",
"    /**",
"     * @remarks",
"     * Sets the lore value - a secondary display string - for an",
"     * ItemStack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param loreList",
"     * A list of lore strings. Setting this argument to undefined",
"     * will clear the lore.",
"     * @throws",
"     * Throws if the slot's container is invalid.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link InvalidContainerSlotError}",
"     */",
"    setLore(loreList?: string[]): void;",
"}",
"/**",
" * Contains the custom component's JSON parameters",
" */",
"export class CustomComponentParameters {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * JSON object containing the parameters from the custom",
"     * component definition",
"     *",
"     */",
"    readonly params: unknown;",
"}",
"/**",
" * Contains information related to firing of a data driven",
" * entity event - for example, the minecraft:ageable_grow_up",
" * event on a chicken.",
" */",
"export class DataDrivenEntityTriggerAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Entity that the event triggered on.",
"     *",
"     */",
"    readonly entity: Entity;",
"    /**",
"     * @remarks",
"     * Name of the data driven event being triggered.",
"     *",
"     */",
"    readonly eventId: string;",
"    /**",
"     * @remarks",
"     * An updateable list of modifications to component state that",
"     * are the effect of this triggered event.",
"     *",
"     */",
"    getModifiers(): DefinitionModifier[];",
"}",
"/**",
" * Contains event registration related to firing of a data",
" * driven entity event - for example, the",
" * minecraft:ageable_grow_up event on a chicken.",
" */",
"export class DataDrivenEntityTriggerAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after a data driven",
"     * entity event is triggered.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: DataDrivenEntityTriggerAfterEvent) => void,",
"        options?: EntityDataDrivenTriggerEventOptions,",
"    ): (arg0: DataDrivenEntityTriggerAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback that will be called after a data driven",
"     * entity event is triggered.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: DataDrivenEntityTriggerAfterEvent) => void): void;",
"}",
"/**",
" * A class that represents a particular dimension (e.g., The",
" * End) within a world.",
" */",
"export class Dimension {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Height range of the dimension.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly heightRange: minecraftcommon.NumberRange;",
"    /**",
"     * @remarks",
"     * Identifier of the dimension.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Searches the block volume for a block that satisfies the",
"     * block filter.",
"     *",
"     * @param volume",
"     * Volume of blocks that will be checked.",
"     * @param filter",
"     * Block filter that will be checked against each block in the",
"     * volume.",
"     * @param allowUnloadedChunks",
"     * If set to true will suppress the UnloadedChunksError if some",
"     * or all of the block volume is outside of the loaded chunks.",
"     * Will only check the block locations that are within the",
"     * loaded chunks in the volume.",
"     * Defaults to: false",
"     * @returns",
"     * Returns true if at least one block in the volume satisfies",
"     * the filter, false otherwise.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link UnloadedChunksError}",
"     */",
"    containsBlock(volume: BlockVolumeBase, filter: BlockFilter, allowUnloadedChunks?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * Creates an explosion at the specified location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The location of the explosion.",
"     * @param radius",
"     * Radius, in blocks, of the explosion to create.",
"     * @param explosionOptions",
"     * Additional configurable options for the explosion.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example createExplosion.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     *",
"     * function createExplosion(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   log('Creating an explosion of radius 10.');",
"     *   targetLocation.dimension.createExplosion(targetLocation, 10);",
"     * }",
"     * ```",
"     * @example createNoBlockExplosion.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { Vector3Utils } from '@minecraft/math';",
"     *",
"     * function createNoBlockExplosion(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   const explodeNoBlocksLoc = Vector3Utils.floor(Vector3Utils.add(targetLocation, { x: 1, y: 2, z: 1 }));",
"     *",
"     *   log('Creating an explosion of radius 15 that does not break blocks.');",
"     *   targetLocation.dimension.createExplosion(explodeNoBlocksLoc, 15, { breaksBlocks: false });",
"     * }",
"     * ```",
"     * @example createExplosions.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { Vector3Utils } from '@minecraft/math';",
"     *",
"     * function createExplosions(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const explosionLoc = Vector3Utils.add(targetLocation, { x: 0.5, y: 0.5, z: 0.5 });",
"     *",
"     *   log('Creating an explosion of radius 15 that causes fire.');",
"     *   targetLocation.dimension.createExplosion(explosionLoc, 15, { causesFire: true });",
"     *",
"     *   const belowWaterLoc = Vector3Utils.add(targetLocation, { x: 3, y: 1, z: 3 });",
"     *",
"     *   log('Creating an explosion of radius 10 that can go underwater.');",
"     *   targetLocation.dimension.createExplosion(belowWaterLoc, 10, { allowUnderwater: true });",
"     * }",
"     * ```",
"     */",
"    createExplosion(location: Vector3, radius: number, explosionOptions?: ExplosionOptions): boolean;",
"    /**",
"     * @remarks",
"     * Fills an area of blocks with a specific block type.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param volume",
"     * Volume of blocks to be filled.",
"     * @param block",
"     * Type of block to fill the volume with.",
"     * @param options",
"     * A set of additional options, such as a block filter which",
"     * can be used to include / exclude specific blocks in the",
"     * fill.",
"     * @returns",
"     * Returns a ListBlockVolume which contains all the blocks that",
"     * were placed.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link Error}",
"     *",
"     * {@link UnloadedChunksError}",
"     */",
"    fillBlocks(",
"        volume: BlockVolumeBase,",
"        block: BlockPermutation | BlockType | string,",
"        options?: BlockFillOptions,",
"    ): ListBlockVolume;",
"    /**",
"     * @remarks",
"     * Returns a block instance at the given location.",
"     *",
"     * @param location",
"     * The location at which to return a block.",
"     * @returns",
"     * Block at the specified location, or 'undefined' if asking",
"     * for a block at an unloaded chunk.",
"     * @throws",
"     * PositionInUnloadedChunkError: Exception thrown when trying",
"     * to interact with a Block object that isn't in a loaded and",
"     * ticking chunk anymore",
"     *",
"     * PositionOutOfWorldBoundariesError: Exception thrown when",
"     * trying to interact with a position outside of dimension",
"     * height range",
"     *",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    getBlock(location: Vector3): Block | undefined;",
"    /**",
"     * @remarks",
"     * Gets the first block found above a given block location",
"     * based on the given options (by default will find the first",
"     * solid block above).",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * Location to retrieve the block above from.",
"     * @param options",
"     * The options to decide if a block is a valid result.",
"     * @throws This function can throw errors.",
"     */",
"    getBlockAbove(location: Vector3, options?: BlockRaycastOptions): Block | undefined;",
"    /**",
"     * @remarks",
"     * Gets the first block found below a given block location",
"     * based on the given options (by default will find the first",
"     * solid block below).",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * Location to retrieve the block below from.",
"     * @param options",
"     * The options to decide if a block is a valid result.",
"     * @throws This function can throw errors.",
"     */",
"    getBlockBelow(location: Vector3, options?: BlockRaycastOptions): Block | undefined;",
"    /**",
"     * @remarks",
"     * Gets the first block that intersects with a vector emanating",
"     * from a location.",
"     *",
"     * @param location",
"     * Location from where to initiate the ray check.",
"     * @param direction",
"     * Vector direction to cast the ray.",
"     * @param options",
"     * Additional options for processing this raycast query.",
"     * @throws This function can throw errors.",
"     */",
"    getBlockFromRay(location: Vector3, direction: Vector3, options?: BlockRaycastOptions): BlockRaycastHit | undefined;",
"    /**",
"     * @remarks",
"     * Gets all the blocks in a volume that satisfy the filter.",
"     *",
"     * @param volume",
"     * Volume of blocks that will be checked.",
"     * @param filter",
"     * Block filter that will be checked against each block in the",
"     * volume.",
"     * @param allowUnloadedChunks",
"     * If set to true will suppress the UnloadedChunksError if some",
"     * or all of the block volume is outside of the loaded chunks.",
"     * Will only check the block locations that are within the",
"     * loaded chunks in the volume.",
"     * Defaults to: false",
"     * @returns",
"     * Returns the ListBlockVolume that contains all the block",
"     * locations that satisfied the block filter.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link UnloadedChunksError}",
"     */",
"    getBlocks(volume: BlockVolumeBase, filter: BlockFilter, allowUnloadedChunks?: boolean): ListBlockVolume;",
"    /**",
"     * @remarks",
"     * Returns a set of entities based on a set of conditions",
"     * defined via the EntityQueryOptions set of filter criteria.",
"     *",
"     * @param options",
"     * Additional options that can be used to filter the set of",
"     * entities returned.",
"     * @returns",
"     * An entity array.",
"     * @throws This function can throw errors.",
"     * @example bounceSkeletons.ts",
"     * ```typescript",
"     * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function bounceSkeletons(targetLocation: DimensionLocation) {",
"     *   const mobs = ['creeper', 'skeleton', 'sheep'];",
"     *",
"     *   // create some sample mob data",
"     *   for (let i = 0; i < 10; i++) {",
"     *     targetLocation.dimension.spawnEntity(mobs[i % mobs.length], targetLocation);",
"     *   }",
"     *",
"     *   const eqo: EntityQueryOptions = {",
"     *     type: 'skeleton',",
"     *   };",
"     *",
"     *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
"     *     entity.applyKnockback(0, 0, 0, 1);",
"     *   }",
"     * }",
"     * ```",
"     * @example tagsQuery.ts",
"     * ```typescript",
"     * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function tagsQuery(targetLocation: DimensionLocation) {",
"     *   const mobs = ['creeper', 'skeleton', 'sheep'];",
"     *",
"     *   // create some sample mob data",
"     *   for (let i = 0; i < 10; i++) {",
"     *     const mobTypeId = mobs[i % mobs.length];",
"     *     const entity = targetLocation.dimension.spawnEntity(mobTypeId, targetLocation);",
"     *     entity.addTag('mobparty.' + mobTypeId);",
"     *   }",
"     *",
"     *   const eqo: EntityQueryOptions = {",
"     *     tags: ['mobparty.skeleton'],",
"     *   };",
"     *",
"     *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
"     *     entity.kill();",
"     *   }",
"     * }",
"     * ```",
"     * @example testThatEntityIsFeatherItem.ts",
"     * ```typescript",
"     * import { EntityItemComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function testThatEntityIsFeatherItem(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   const items = targetLocation.dimension.getEntities({",
"     *     location: targetLocation,",
"     *     maxDistance: 20,",
"     *   });",
"     *",
"     *   for (const item of items) {",
"     *     const itemComp = item.getComponent(EntityComponentTypes.Item) as EntityItemComponent;",
"     *",
"     *     if (itemComp) {",
"     *       if (itemComp.itemStack.typeId.endsWith('feather')) {",
"     *         log('Success! Found a feather', 1);",
"     *       }",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    getEntities(options?: EntityQueryOptions): Entity[];",
"    /**",
"     * @remarks",
"     * Returns a set of entities at a particular location.",
"     *",
"     * @param location",
"     * The location at which to return entities.",
"     * @returns",
"     * Zero or more entities at the specified location.",
"     */",
"    getEntitiesAtBlockLocation(location: Vector3): Entity[];",
"    /**",
"     * @remarks",
"     * Gets entities that intersect with a specified vector",
"     * emanating from a location.",
"     *",
"     * @param options",
"     * Additional options for processing this raycast query.",
"     * @throws This function can throw errors.",
"     */",
"    getEntitiesFromRay(location: Vector3, direction: Vector3, options?: EntityRaycastOptions): EntityRaycastHit[];",
"    /**",
"     * @remarks",
"     * Returns a set of players based on a set of conditions",
"     * defined via the EntityQueryOptions set of filter criteria.",
"     *",
"     * @param options",
"     * Additional options that can be used to filter the set of",
"     * players returned.",
"     * @returns",
"     * A player array.",
"     * @throws This function can throw errors.",
"     */",
"    getPlayers(options?: EntityQueryOptions): Player[];",
"    /**",
"     * @remarks",
"     * Returns the highest block at the given XZ location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param locationXZ",
"     * Location to retrieve the topmost block for.",
"     * @param minHeight",
"     * The Y height to begin the search from. Defaults to the",
"     * maximum dimension height.",
"     * @throws This function can throw errors.",
"     */",
"    getTopmostBlock(locationXZ: VectorXZ, minHeight?: number): Block | undefined;",
"    /**",
"     * @remarks",
"     * Places the given feature into the dimension at the specified",
"     * location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param featureName",
"     * The string identifier for the feature.",
"     * @param location",
"     * Location to place the feature.",
"     * @param shouldThrow",
"     * Specifies if the function call will throw an error if the",
"     * feature could not be placed.",
"     * Note: The function call will always throw an error if using",
"     * an unknown feature name or trying to place in a unloaded",
"     * chunk.",
"     * Defaults to: false",
"     * @throws",
"     * An error will be thrown if the feature name is invalid.",
"     * An error will be thrown if the location is in an unloaded",
"     * chunk.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     */",
"    placeFeature(featureName: string, location: Vector3, shouldThrow?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * Places the given feature rule into the dimension at the",
"     * specified location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param featureRuleName",
"     * The string identifier for the feature rule.",
"     * @param location",
"     * Location to place the feature rule.",
"     * @throws",
"     * An error will be thrown if the feature rule name is invalid.",
"     * An error will be thrown if the location is in an unloaded",
"     * chunk.",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     */",
"    placeFeatureRule(featureRuleName: string, location: Vector3): boolean;",
"    /**",
"     * @remarks",
"     * Plays a sound for all players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param soundId",
"     * Identifier of the sound.",
"     * @param location",
"     * Location of the sound.",
"     * @param soundOptions",
"     * Additional options for configuring additional effects for",
"     * the sound.",
"     * @throws",
"     * An error will be thrown if volume is less than 0.0.",
"     * An error will be thrown if fade is less than 0.0.",
"     * An error will be thrown if pitch is less than 0.01.",
"     * An error will be thrown if volume is less than 0.0.",
"     */",
"    playSound(soundId: string, location: Vector3, soundOptions?: WorldSoundOptions): void;",
"    /**",
"     * @remarks",
"     * Runs a command synchronously using the context of the",
"     * broader dimenion.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param commandString",
"     * Command to run. Note that command strings should not start",
"     * with slash.",
"     * @returns",
"     * Returns a command result with a count of successful values",
"     * from the command.",
"     * @throws",
"     * Throws an exception if the command fails due to incorrect",
"     * parameters or command syntax, or in erroneous cases for the",
"     * command. Note that in many cases, if the command does not",
"     * operate (e.g., a target selector found no matches), this",
"     * method will not throw an exception.",
"     *",
"     * {@link CommandError}",
"     */",
"    runCommand(commandString: string): CommandResult;",
"    /**",
"     * @remarks",
"     * Sets a block in the world using a BlockPermutation.",
"     * BlockPermutations are blocks with a particular state.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The location within the dimension to set the block.",
"     * @param permutation",
"     * The block permutation to set.",
"     * @throws",
"     * Throws if the location is within an unloaded chunk or",
"     * outside of the world bounds.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setBlockPermutation(location: Vector3, permutation: BlockPermutation): void;",
"    /**",
"     * @remarks",
"     * Sets a block at a given location within the dimension.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The location within the dimension to set the block.",
"     * @param blockType",
"     * The type of block to set. This can be either a string",
"     * identifier or a BlockType. The default block permutation is",
"     * used.",
"     * @throws",
"     * Throws if the location is within an unloaded chunk or",
"     * outside of the world bounds.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setBlockType(location: Vector3, blockType: BlockType | string): void;",
"    /**",
"     * @remarks",
"     * Sets the current weather within the dimension",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param weatherType",
"     * Set the type of weather to apply.",
"     * @param duration",
"     * Sets the duration of the weather (in ticks). If no duration",
"     * is provided, the duration will be set to a random duration",
"     * between 300 and 900 seconds.",
"     * @throws This function can throw errors.",
"     */",
"    setWeather(weatherType: WeatherType, duration?: number): void;",
"    /**",
"     * @remarks",
"     * Creates a new entity (e.g., a mob) at the specified",
"     * location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * Identifier of the type of entity to spawn. If no namespace",
"     * is specified, 'minecraft:' is assumed.",
"     * @param location",
"     * The location at which to create the entity.",
"     * @returns",
"     * Newly created entity at the specified location.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example spawnAdultHorse.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { Vector3Utils } from '@minecraft/math';",
"     *",
"     * function spawnAdultHorse(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *     log('Create a horse and triggering the ageable_grow_up event, ensuring the horse is created as an adult');",
"     *     targetLocation.dimension.spawnEntity(",
"     *         'minecraft:horse<minecraft:ageable_grow_up>',",
"     *         Vector3Utils.add(targetLocation, { x: 0, y: 1, z: 0 })",
"     *     );",
"     * }",
"     * ```",
"     * @example quickFoxLazyDog.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes, MinecraftEffectTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function quickFoxLazyDog(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const fox = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Fox, {",
"     *     x: targetLocation.x + 1,",
"     *     y: targetLocation.y + 2,",
"     *     z: targetLocation.z + 3,",
"     *   });",
"     *",
"     *   fox.addEffect(MinecraftEffectTypes.Speed, 10, {",
"     *     amplifier: 2,",
"     *   });",
"     *   log('Created a fox.');",
"     *",
"     *   const wolf = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Wolf, {",
"     *     x: targetLocation.x + 4,",
"     *     y: targetLocation.y + 2,",
"     *     z: targetLocation.z + 3,",
"     *   });",
"     *   wolf.addEffect(MinecraftEffectTypes.Slowness, 10, {",
"     *     amplifier: 2,",
"     *   });",
"     *   wolf.isSneaking = true;",
"     *   log('Created a sneaking wolf.', 1);",
"     * }",
"     * ```",
"     * @example triggerEvent.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function triggerEvent(targetLocation: DimensionLocation) {",
"     *   const creeper = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Creeper, targetLocation);",
"     *",
"     *   creeper.triggerEvent('minecraft:start_exploding_forced');",
"     * }",
"     * ```",
"     */",
"    spawnEntity(identifier: EntityType | string, location: Vector3, options?: SpawnEntityOptions): Entity;",
"    /**",
"     * @remarks",
"     * Creates a new item stack as an entity at the specified",
"     * location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The location at which to create the item stack.",
"     * @returns",
"     * Newly created item stack entity at the specified location.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example itemStacks.ts",
"     * ```typescript",
"     * import { ItemStack, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function itemStacks(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const oneItemLoc = { x: targetLocation.x + targetLocation.y + 3, y: 2, z: targetLocation.z + 1 };",
"     *   const fiveItemsLoc = { x: targetLocation.x + 1, y: targetLocation.y + 2, z: targetLocation.z + 1 };",
"     *   const diamondPickaxeLoc = { x: targetLocation.x + 2, y: targetLocation.y + 2, z: targetLocation.z + 4 };",
"     *",
"     *   const oneEmerald = new ItemStack(MinecraftItemTypes.Emerald, 1);",
"     *   const onePickaxe = new ItemStack(MinecraftItemTypes.DiamondPickaxe, 1);",
"     *   const fiveEmeralds = new ItemStack(MinecraftItemTypes.Emerald, 5);",
"     *",
"     *   log(`Spawning an emerald at (${oneItemLoc.x}, ${oneItemLoc.y}, ${oneItemLoc.z})`);",
"     *   targetLocation.dimension.spawnItem(oneEmerald, oneItemLoc);",
"     *",
"     *   log(`Spawning five emeralds at (${fiveItemsLoc.x}, ${fiveItemsLoc.y}, ${fiveItemsLoc.z})`);",
"     *   targetLocation.dimension.spawnItem(fiveEmeralds, fiveItemsLoc);",
"     *",
"     *   log(`Spawning a diamond pickaxe at (${diamondPickaxeLoc.x}, ${diamondPickaxeLoc.y}, ${diamondPickaxeLoc.z})`);",
"     *   targetLocation.dimension.spawnItem(onePickaxe, diamondPickaxeLoc);",
"     * }",
"     * ```",
"     * @example spawnFeatherItem.ts",
"     * ```typescript",
"     * import { ItemStack, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function spawnFeatherItem(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const featherItem = new ItemStack(MinecraftItemTypes.Feather, 1);",
"     *",
"     *   targetLocation.dimension.spawnItem(featherItem, targetLocation);",
"     *   log(`New feather created at ${targetLocation.x}, ${targetLocation.y}, ${targetLocation.z}!`);",
"     * }",
"     * ```",
"     */",
"    spawnItem(itemStack: ItemStack, location: Vector3): Entity;",
"    /**",
"     * @remarks",
"     * Creates a new particle emitter at a specified location in",
"     * the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param effectName",
"     * Identifier of the particle to create.",
"     * @param location",
"     * The location at which to create the particle emitter.",
"     * @param molangVariables",
"     * A set of optional, customizable variables that can be",
"     * adjusted for this particle.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example spawnParticle.ts",
"     * ```typescript",
"     * import { MolangVariableMap, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function spawnParticle(targetLocation: DimensionLocation) {",
"     *   for (let i = 0; i < 100; i++) {",
"     *     const molang = new MolangVariableMap();",
"     *",
"     *     molang.setColorRGB('variable.color', { red: Math.random(), green: Math.random(), blue: Math.random() });",
"     *",
"     *     const newLocation = {",
"     *       x: targetLocation.x + Math.floor(Math.random() * 8) - 4,",
"     *       y: targetLocation.y + Math.floor(Math.random() * 8) - 4,",
"     *       z: targetLocation.z + Math.floor(Math.random() * 8) - 4,",
"     *     };",
"     *     targetLocation.dimension.spawnParticle('minecraft:colored_flame_particle', newLocation, molang);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    spawnParticle(effectName: string, location: Vector3, molangVariables?: MolangVariableMap): void;",
"}",
"/**",
" * Represents a type of dimension.",
" */",
"export class DimensionType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Identifier of the dimension type.",
"     *",
"     */",
"    readonly typeId: string;",
"}",
"/**",
" * Used for accessing all available dimension types.",
" */",
"export class DimensionTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Retrieves a dimension type using a string-based identifier.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    static get(dimensionTypeId: string): DimensionType | undefined;",
"    /**",
"     * @remarks",
"     * Retrieves an array of all dimension types.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    static getAll(): DimensionType[];",
"}",
"/**",
" * Represents an effect - like poison - that has been added to",
" * an Entity.",
" */",
"export class Effect {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Gets an amplifier that may have been applied to this effect.",
"     * Sample values range typically from 0 to 4. Example: The",
"     * effect 'Jump Boost II' will have an amplifier value of 1.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly amplifier: number;",
"    /**",
"     * @remarks",
"     * Gets the player-friendly name of this effect.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly displayName: string;",
"    /**",
"     * @remarks",
"     * Gets the entire specified duration, in ticks, of this",
"     * effect. There are 20 ticks per second. Use {@link",
"     * TicksPerSecond} constant to convert between ticks and",
"     * seconds.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly duration: number;",
"    /**",
"     * @remarks",
"     * Returns whether an effect instance is available for use in",
"     * this context.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Gets the type id of this effect.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly typeId: string;",
"}",
"/**",
" * Contains information related to changes to an effect - like",
" * poison - being added to an entity.",
" */",
"export class EffectAddAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Additional properties and details of the effect.",
"     *",
"     */",
"    readonly effect: Effect;",
"    /**",
"     * @remarks",
"     * Entity that the effect is being added to.",
"     *",
"     */",
"    readonly entity: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when an effect is",
" * added to an entity.",
" */",
"export class EffectAddAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an effect is added",
"     * to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: EffectAddAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EffectAddAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an effect is added",
"     * to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EffectAddAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to changes to an effect - like",
" * poison - being added to an entity.",
" */",
"export class EffectAddBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * When set to true will cancel the event.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * Effect duration.",
"     *",
"     */",
"    duration: number;",
"    /**",
"     * @remarks",
"     * The type of the effect that is being added.",
"     *",
"     */",
"    readonly effectType: string;",
"    /**",
"     * @remarks",
"     * Entity that the effect is being added to.",
"     *",
"     */",
"    readonly entity: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when an effect is",
" * added to an entity.",
" */",
"export class EffectAddBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an effect is added",
"     * to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: EffectAddBeforeEvent) => void): (arg0: EffectAddBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an effect is added",
"     * to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EffectAddBeforeEvent) => void): void;",
"}",
"/**",
" * Represents a type of effect - like poison - that can be",
" * applied to an entity.",
" */",
"export class EffectType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Identifier name of this effect type.",
"     *",
"     * @returns",
"     * Identifier of the effect type.",
"     */",
"    getName(): string;",
"}",
"/**",
" * Represents a type of effect - like poison - that can be",
" * applied to an entity.",
" */",
"export class EffectTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Effect type for the given identifier.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The identifier for the effect.",
"     * @returns",
"     * Effect type for the given identifier or undefined if the",
"     * effect does not exist.",
"     */",
"    static get(identifier: string): EffectType | undefined;",
"    /**",
"     * @remarks",
"     * Gets all effects.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * A list of all effects.",
"     */",
"    static getAll(): EffectType[];",
"}",
"/**",
" * Contains information on a type of enchantment.",
" */",
"export class EnchantmentType {",
"    /**",
"     * @remarks",
"     * The name of the enchantment type.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * The maximum level this type of enchantment can have.",
"     *",
"     */",
"    readonly maxLevel: number;",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    constructor(enchantmentType: string);",
"}",
"/**",
" * Contains a catalog of Minecraft Enchantment Types that are",
" * available in this world.",
" */",
"export class EnchantmentTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Retrieves an enchantment with the specified identifier.",
"     *",
"     * @param enchantmentId",
"     * Identifier of the enchantment.  For example,",
"     * 'minecraft:flame'.",
"     * @returns",
"     * If available, returns an EnchantmentType object that",
"     * represents the specified enchantment.",
"     */",
"    static get(enchantmentId: string): EnchantmentType | undefined;",
"    /**",
"     * @remarks",
"     * Returns a collection of all available enchantment types.",
"     *",
"     */",
"    static getAll(): EnchantmentType[];",
"}",
"/**",
" * Represents the state of an entity (a mob, the player, or",
" * other moving objects like minecarts) in the world.",
" */",
"export class Entity {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Dimension that the entity is currently within.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly dimension: Dimension;",
"    /**",
"     * @remarks",
"     * Unique identifier of the entity. This identifier is intended",
"     * to be consistent across loads of a world instance. No",
"     * meaning should be inferred from the value and structure of",
"     * this unique identifier - do not parse or interpret it. This",
"     * property is accessible even if {@link Entity.isValid} is",
"     * false.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Whether the entity is touching a climbable block. For",
"     * example, a player next to a ladder or a spider next to a",
"     * stone wall.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isClimbing: boolean;",
"    /**",
"     * @remarks",
"     * Whether the entity has a fall distance greater than 0, or",
"     * greater than 1 while gliding.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isFalling: boolean;",
"    /**",
"     * @remarks",
"     * Whether any part of the entity is inside a water block.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isInWater: boolean;",
"    /**",
"     * @remarks",
"     * Whether the entity is on top of a solid block. This property",
"     * may behave in unexpected ways. This property will always be",
"     * true when an Entity is first spawned, and if the Entity has",
"     * no gravity this property may be incorrect.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isOnGround: boolean;",
"    /**",
"     * @remarks",
"     * If true, the entity is currently sleeping.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isSleeping: boolean;",
"    /**",
"     * @remarks",
"     * Whether the entity is sneaking - that is, moving more slowly",
"     * and more quietly.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    isSneaking: boolean;",
"    /**",
"     * @remarks",
"     * Whether the entity is sprinting. For example, a player using",
"     * the sprint action, an ocelot running away or a pig boosting",
"     * with Carrot on a Stick.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isSprinting: boolean;",
"    /**",
"     * @remarks",
"     * Whether the entity is in the swimming state. For example, a",
"     * player using the swim action or a fish in water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isSwimming: boolean;",
"    /**",
"     * @remarks",
"     * Returns whether the entity can be manipulated by script. A",
"     * Player is considered valid when it's EntityLifetimeState is",
"     * set to Loaded.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Current location of the entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly location: Vector3;",
"    /**",
"     * @remarks",
"     * Given name of the entity.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    nameTag: string;",
"    /**",
"     * @remarks",
"     * Returns a scoreboard identity that represents this entity.",
"     * Will remain valid when the entity is killed.",
"     *",
"     */",
"    readonly scoreboardIdentity?: ScoreboardIdentity;",
"    /**",
"     * @remarks",
"     * Identifier of the type of the entity - for example,",
"     * 'minecraft:skeleton'. This property is accessible even if",
"     * {@link Entity.isValid} is false.",
"     *",
"     */",
"    readonly typeId: string;",
"    /**",
"     * @remarks",
"     * Adds or updates an effect, like poison, to the entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param effectType",
"     * Type of effect to add to the entity.",
"     * @param duration",
"     * Amount of time, in ticks, for the effect to apply. There are",
"     * 20 ticks per second. Use {@link TicksPerSecond} constant to",
"     * convert between ticks and seconds. The value must be within",
"     * the range [0, 20000000].",
"     * @param options",
"     * Additional options for the effect.",
"     * @returns",
"     * Returns nothing if the effect was added or updated",
"     * successfully. This can throw an error if the duration or",
"     * amplifier are outside of the valid ranges, or if the effect",
"     * does not exist.",
"     * @throws This function can throw errors.",
"     * @example spawnPoisonedVillager.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEffectTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function spawnPoisonedVillager(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const villagerType = 'minecraft:villager_v2<minecraft:ageable_grow_up>';",
"     *   const villager = targetLocation.dimension.spawnEntity(villagerType, targetLocation);",
"     *   const duration = 20;",
"     *",
"     *   villager.addEffect(MinecraftEffectTypes.Poison, duration, { amplifier: 1 });",
"     * }",
"     * ```",
"     * @example quickFoxLazyDog.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes, MinecraftEffectTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function quickFoxLazyDog(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const fox = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Fox, {",
"     *     x: targetLocation.x + 1,",
"     *     y: targetLocation.y + 2,",
"     *     z: targetLocation.z + 3,",
"     *   });",
"     *",
"     *   fox.addEffect(MinecraftEffectTypes.Speed, 10, {",
"     *     amplifier: 2,",
"     *   });",
"     *   log('Created a fox.');",
"     *",
"     *   const wolf = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Wolf, {",
"     *     x: targetLocation.x + 4,",
"     *     y: targetLocation.y + 2,",
"     *     z: targetLocation.z + 3,",
"     *   });",
"     *   wolf.addEffect(MinecraftEffectTypes.Slowness, 10, {",
"     *     amplifier: 2,",
"     *   });",
"     *   wolf.isSneaking = true;",
"     *   log('Created a sneaking wolf.', 1);",
"     * }",
"     * ```",
"     */",
"    addEffect(effectType: EffectType | string, duration: number, options?: EntityEffectOptions): Effect | undefined;",
"    /**",
"     * @remarks",
"     * Adds a specified tag to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tag",
"     * Content of the tag to add. The tag must be less than 256",
"     * characters.",
"     * @returns",
"     * Returns true if the tag was added successfully. This can",
"     * fail if the tag already exists on the entity.",
"     * @throws This function can throw errors.",
"     * @example tagsQuery.ts",
"     * ```typescript",
"     * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function tagsQuery(targetLocation: DimensionLocation) {",
"     *   const mobs = ['creeper', 'skeleton', 'sheep'];",
"     *",
"     *   // create some sample mob data",
"     *   for (let i = 0; i < 10; i++) {",
"     *     const mobTypeId = mobs[i % mobs.length];",
"     *     const entity = targetLocation.dimension.spawnEntity(mobTypeId, targetLocation);",
"     *     entity.addTag('mobparty.' + mobTypeId);",
"     *   }",
"     *",
"     *   const eqo: EntityQueryOptions = {",
"     *     tags: ['mobparty.skeleton'],",
"     *   };",
"     *",
"     *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
"     *     entity.kill();",
"     *   }",
"     * }",
"     * ```",
"     */",
"    addTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Applies a set of damage to an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param amount",
"     * Amount of damage to apply.",
"     * @param options",
"     * Additional options about the source of damage, which may add",
"     * additional effects or spur additional behaviors on this",
"     * entity.",
"     * @returns",
"     * Whether the entity takes any damage. This can return false",
"     * if the entity is invulnerable or if the damage applied is",
"     * less than or equal to 0.",
"     * @throws This function can throw errors.",
"     * @example applyDamageThenHeal.ts",
"     * ```typescript",
"     * import { system, EntityHealthComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function applyDamageThenHeal(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   const skelly = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Skeleton, targetLocation);",
"     *",
"     *   skelly.applyDamage(19); // skeletons have max damage of 20 so this is a near-death skeleton",
"     *",
"     *   system.runTimeout(() => {",
"     *     const health = skelly.getComponent(EntityComponentTypes.Health) as EntityHealthComponent;",
"     *     log('Skeleton health before heal: ' + health?.currentValue);",
"     *     health?.resetToMaxValue();",
"     *     log('Skeleton health after heal: ' + health?.currentValue);",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    applyDamage(amount: number, options?: EntityApplyDamageByProjectileOptions | EntityApplyDamageOptions): boolean;",
"    /**",
"     * @remarks",
"     * Applies impulse vector to the current velocity of the",
"     * entity. Note that this method throws an error if called on",
"     * Players and will have no impact.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param vector",
"     * Impulse vector.",
"     * @throws This function can throw errors.",
"     * @example applyImpulse.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function applyImpulse(targetLocation: DimensionLocation) {",
"     *   const zombie = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Zombie, targetLocation);",
"     *",
"     *   zombie.clearVelocity();",
"     *",
"     *   // throw the zombie up in the air",
"     *   zombie.applyImpulse({ x: 0, y: 0.5, z: 0 });",
"     * }",
"     * ```",
"     */",
"    applyImpulse(vector: Vector3): void;",
"    /**",
"     * @remarks",
"     * Applies impulse vector to the current velocity of the",
"     * entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param verticalStrength",
"     * Knockback strength for the vertical vector.",
"     * @throws This function can throw errors.",
"     * @example bounceSkeletons.ts",
"     * ```typescript",
"     * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function bounceSkeletons(targetLocation: DimensionLocation) {",
"     *   const mobs = ['creeper', 'skeleton', 'sheep'];",
"     *",
"     *   // create some sample mob data",
"     *   for (let i = 0; i < 10; i++) {",
"     *     targetLocation.dimension.spawnEntity(mobs[i % mobs.length], targetLocation);",
"     *   }",
"     *",
"     *   const eqo: EntityQueryOptions = {",
"     *     type: 'skeleton',",
"     *   };",
"     *",
"     *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
"     *     entity.applyKnockback(0, 0, 0, 1);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    applyKnockback(horizontalForce: VectorXZ, verticalStrength: number): void;",
"    /**",
"     * @remarks",
"     * Clears all dynamic properties that have been set on this",
"     * entity.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    clearDynamicProperties(): void;",
"    /**",
"     * @remarks",
"     * Sets the current velocity of the Entity to zero. Note that",
"     * this method throws an error if called on Players and will",
"     * have no impact.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     * @example applyImpulse.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function applyImpulse(targetLocation: DimensionLocation) {",
"     *   const zombie = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Zombie, targetLocation);",
"     *",
"     *   zombie.clearVelocity();",
"     *",
"     *   // throw the zombie up in the air",
"     *   zombie.applyImpulse({ x: 0, y: 0.5, z: 0 });",
"     * }",
"     * ```",
"     */",
"    clearVelocity(): void;",
"    /**",
"     * @remarks",
"     * Extinguishes the fire if the entity is on fire. Note that",
"     * you can call getComponent('minecraft:onfire') and, if",
"     * present, the entity is on fire.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param useEffects",
"     * Whether to show any visual effects connected to the",
"     * extinguishing.",
"     * Defaults to: true",
"     * @returns",
"     * Returns whether the entity was on fire.",
"     * @throws This function can throw errors.",
"     * @example setOnFire.ts",
"     * ```typescript",
"     * import { system, EntityOnFireComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function setOnFire(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const skelly = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Skeleton, targetLocation);",
"     *",
"     *   skelly.setOnFire(20, true);",
"     *",
"     *   system.runTimeout(() => {",
"     *     const onfire = skelly.getComponent(EntityComponentTypes.OnFire) as EntityOnFireComponent;",
"     *     log(onfire?.onFireTicksRemaining + ' fire ticks remaining.');",
"     *",
"     *     skelly.extinguishFire(true);",
"     *     log('Never mind. Fire extinguished.');",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    extinguishFire(useEffects?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * Returns the first intersecting block from the direction that",
"     * this entity is looking at.",
"     *",
"     * @param options",
"     * Additional configuration options for the ray cast.",
"     * @returns",
"     * Returns the first intersecting block from the direction that",
"     * this entity is looking at.",
"     * @throws This function can throw errors.",
"     */",
"    getBlockFromViewDirection(options?: BlockRaycastOptions): BlockRaycastHit | undefined;",
"    /**",
"     * @remarks",
"     * Gets a component (that represents additional capabilities)",
"     * for an entity.",
"     *",
"     * @param componentId",
"     * The identifier of the component (e.g., 'minecraft:health').",
"     * If no namespace prefix is specified, 'minecraft:' is",
"     * assumed. Available component IDs can be found as part of the",
"     * {@link EntityComponentTypes} enum.",
"     * @returns",
"     * Returns the component if it exists on the entity, otherwise",
"     * undefined.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    getComponent<T extends string>(componentId: T): EntityComponentReturnType<T> | undefined;",
"    /**",
"     * @remarks",
"     * Returns all components that are both present on this entity",
"     * and supported by the API.",
"     *",
"     * @returns",
"     * Returns all components that are both present on this entity",
"     * and supported by the API.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    getComponents(): EntityComponent[];",
"    /**",
"     * @remarks",
"     * Returns a property value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @returns",
"     * Returns the value for the property, or undefined if the",
"     * property has not been set.",
"     * @throws This function can throw errors.",
"     */",
"    getDynamicProperty(identifier: string): boolean | number | string | Vector3 | undefined;",
"    /**",
"     * @remarks",
"     * Returns the available set of dynamic property identifiers",
"     * that have been used on this entity.",
"     *",
"     * @returns",
"     * A string array of the dynamic properties set on this entity.",
"     * @throws This function can throw errors.",
"     */",
"    getDynamicPropertyIds(): string[];",
"    /**",
"     * @remarks",
"     * Returns the total size, in bytes, of all the dynamic",
"     * properties that are currently stored for this entity. This",
"     * includes the size of both the key and the value.  This can",
"     * be useful for diagnosing performance warning signs - if, for",
"     * example, an entity has many megabytes of associated dynamic",
"     * properties, it may be slow to load on various devices.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getDynamicPropertyTotalByteCount(): number;",
"    /**",
"     * @remarks",
"     * Returns the effect for the specified EffectType on the",
"     * entity, undefined if the effect is not present, or throws an",
"     * error if the effect does not exist.",
"     *",
"     * @param effectType",
"     * The effect identifier.",
"     * @returns",
"     * Effect object for the specified effect, undefined if the",
"     * effect is not present, or throws an error if the effect does",
"     * not exist.",
"     * @throws This function can throw errors.",
"     */",
"    getEffect(effectType: EffectType | string): Effect | undefined;",
"    /**",
"     * @remarks",
"     * Returns a set of effects applied to this entity.",
"     *",
"     * @returns",
"     * List of effects.",
"     * @throws This function can throw errors.",
"     */",
"    getEffects(): Effect[];",
"    /**",
"     * @remarks",
"     * Gets the entities that this entity is looking at by",
"     * performing a ray cast from the view of this entity.",
"     *",
"     * @param options",
"     * Additional configuration options for the ray cast.",
"     * @returns",
"     * Returns a set of entities from the direction that this",
"     * entity is looking at.",
"     * @throws This function can throw errors.",
"     */",
"    getEntitiesFromViewDirection(options?: EntityRaycastOptions): EntityRaycastHit[];",
"    /**",
"     * @remarks",
"     * Returns the current location of the head component of this",
"     * entity.",
"     *",
"     * @returns",
"     * Returns the current location of the head component of this",
"     * entity.",
"     * @throws This function can throw errors.",
"     */",
"    getHeadLocation(): Vector3;",
"    /**",
"     * @remarks",
"     * Gets an entity Property value. If the property was set using",
"     * the setProperty function within the same tick, the updated",
"     * value will not be reflected until the subsequent tick.",
"     *",
"     * @param identifier",
"     * The entity Property identifier.",
"     * @returns",
"     * Returns the current property value. For enum properties, a",
"     * string is returned. For float and int properties, a number",
"     * is returned. For undefined properties, undefined is",
"     * returned.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     */",
"    getProperty(identifier: string): boolean | number | string | undefined;",
"    /**",
"     * @remarks",
"     * Returns the current rotation component of this entity.",
"     *",
"     * @returns",
"     * Returns a Vec2 containing the rotation of this entity (in",
"     * degrees).",
"     * @throws This function can throw errors.",
"     */",
"    getRotation(): Vector2;",
"    /**",
"     * @remarks",
"     * Returns all tags associated with the entity.",
"     *",
"     * @returns",
"     * An array containing all tags as strings.",
"     * @throws This function can throw errors.",
"     */",
"    getTags(): string[];",
"    /**",
"     * @remarks",
"     * Returns the current velocity vector of the entity.",
"     *",
"     * @returns",
"     * Returns the current velocity vector of the entity.",
"     * @throws This function can throw errors.",
"     * @example getFireworkVelocity.ts",
"     * ```typescript",
"     * import { system, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function getFireworkVelocity(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   const fireworkRocket = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.FireworksRocket, targetLocation);",
"     *",
"     *   system.runTimeout(() => {",
"     *     const velocity = fireworkRocket.getVelocity();",
"     *",
"     *     log('Velocity of firework is: (x: ' + velocity.x + ', y:' + velocity.y + ', z:' + velocity.z + ')');",
"     *   }, 5);",
"     * }",
"     * ```",
"     */",
"    getVelocity(): Vector3;",
"    /**",
"     * @remarks",
"     * Returns the current view direction of the entity.",
"     *",
"     * @returns",
"     * Returns the current view direction of the entity.",
"     * @throws This function can throw errors.",
"     */",
"    getViewDirection(): Vector3;",
"    /**",
"     * @remarks",
"     * Returns true if the specified component is present on this",
"     * entity.",
"     *",
"     * @param componentId",
"     * The identifier of the component (e.g., 'minecraft:rideable')",
"     * to retrieve. If no namespace prefix is specified,",
"     * 'minecraft:' is assumed.",
"     * @returns",
"     * Returns true if the specified component is present on this",
"     * entity.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    hasComponent(componentId: string): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether an entity has a particular tag.",
"     *",
"     * @param tag",
"     * Identifier of the tag to test for.",
"     * @returns",
"     * Returns whether an entity has a particular tag.",
"     * @throws This function can throw errors.",
"     */",
"    hasTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Kills this entity. The entity will drop loot as normal.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns true if entity can be killed (even if it is already",
"     * dead), otherwise it returns false.",
"     * @throws This function can throw errors.",
"     * @example tagsQuery.ts",
"     * ```typescript",
"     * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function tagsQuery(targetLocation: DimensionLocation) {",
"     *   const mobs = ['creeper', 'skeleton', 'sheep'];",
"     *",
"     *   // create some sample mob data",
"     *   for (let i = 0; i < 10; i++) {",
"     *     const mobTypeId = mobs[i % mobs.length];",
"     *     const entity = targetLocation.dimension.spawnEntity(mobTypeId, targetLocation);",
"     *     entity.addTag('mobparty.' + mobTypeId);",
"     *   }",
"     *",
"     *   const eqo: EntityQueryOptions = {",
"     *     tags: ['mobparty.skeleton'],",
"     *   };",
"     *",
"     *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
"     *     entity.kill();",
"     *   }",
"     * }",
"     * ```",
"     */",
"    kill(): boolean;",
"    /**",
"     * @remarks",
"     * Sets the rotation of the entity to face a target location.",
"     * Both pitch and yaw will be set, if applicable, such as for",
"     * mobs where the pitch controls the head tilt and the yaw",
"     * controls the body rotation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param targetLocation",
"     * The target location that this entity should face/look",
"     * towards.",
"     * @throws This function can throw errors.",
"     */",
"    lookAt(targetLocation: Vector3): void;",
"    /**",
"     * @remarks",
"     * Matches the entity against the passed in options. Uses the",
"     * location of the entity for matching if the location is not",
"     * specified in the passed in EntityQueryOptions.",
"     *",
"     * @param options",
"     * The query to perform the match against.",
"     * @returns",
"     * Returns true if the entity matches the criteria in the",
"     * passed in EntityQueryOptions, otherwise it returns false.",
"     * @throws",
"     * Throws if the query options are misconfigured.",
"     */",
"    matches(options: EntityQueryOptions): boolean;",
"    /**",
"     * @remarks",
"     * Cause the entity to play the given animation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param animationName",
"     * The animation identifier. e.g. animation.creeper.swelling",
"     * @param options",
"     * Additional options to control the playback and transitions",
"     * of the animation.",
"     * @throws This function can throw errors.",
"     */",
"    playAnimation(animationName: string, options?: PlayAnimationOptions): void;",
"    /**",
"     * @remarks",
"     * Immediately removes the entity from the world. The removed",
"     * entity will not perform a death animation or drop loot upon",
"     * removal.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    remove(): void;",
"    /**",
"     * @remarks",
"     * Removes the specified EffectType on the entity, or returns",
"     * false if the effect is not present.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param effectType",
"     * The effect identifier.",
"     * @returns",
"     * Returns true if the effect has been removed. Returns false",
"     * if the effect is not found or does not exist.",
"     * @throws This function can throw errors.",
"     */",
"    removeEffect(effectType: EffectType | string): boolean;",
"    /**",
"     * @remarks",
"     * Removes a specified tag from an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tag",
"     * Content of the tag to remove.",
"     * @returns",
"     * Returns whether the tag existed on the entity.",
"     * @throws This function can throw errors.",
"     */",
"    removeTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Resets an Entity Property back to its default value, as",
"     * specified in the Entity's definition. This property change",
"     * is not applied until the next tick.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The Entity Property identifier.",
"     * @returns",
"     * Returns the default property value. For enum properties, a",
"     * string is returned. For float and int properties, a number",
"     * is returned. For undefined properties, undefined is",
"     * returned.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link Error}",
"     */",
"    resetProperty(identifier: string): boolean | number | string;",
"    /**",
"     * @remarks",
"     * Runs a synchronous command on the entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param commandString",
"     * The command string. Note: This should not include a leading",
"     * forward slash.",
"     * @returns",
"     * A command result containing whether the command was",
"     * successful.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link CommandError}",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    runCommand(commandString: string): CommandResult;",
"    /**",
"     * @remarks",
"     * Sets a specified property to a value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @param value",
"     * Data value of the property to set.",
"     * @throws This function can throw errors.",
"     */",
"    setDynamicProperty(identifier: string, value?: boolean | number | string | Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets an entity on fire (if it is not in water or rain). Note",
"     * that you can call getComponent('minecraft:onfire') and, if",
"     * present, the entity is on fire.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param seconds",
"     * Length of time to set the entity on fire.",
"     * @param useEffects",
"     * Whether side-effects should be applied (e.g. thawing freeze)",
"     * and other conditions such as rain or fire protection should",
"     * be taken into consideration.",
"     * Defaults to: true",
"     * @returns",
"     * Whether the entity was set on fire. This can fail if seconds",
"     * is less than or equal to zero, the entity is wet or the",
"     * entity is immune to fire.",
"     * @throws This function can throw errors.",
"     * @example setOnFire.ts",
"     * ```typescript",
"     * import { system, EntityOnFireComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function setOnFire(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const skelly = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Skeleton, targetLocation);",
"     *",
"     *   skelly.setOnFire(20, true);",
"     *",
"     *   system.runTimeout(() => {",
"     *     const onfire = skelly.getComponent(EntityComponentTypes.OnFire) as EntityOnFireComponent;",
"     *     log(onfire?.onFireTicksRemaining + ' fire ticks remaining.');",
"     *",
"     *     skelly.extinguishFire(true);",
"     *     log('Never mind. Fire extinguished.');",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    setOnFire(seconds: number, useEffects?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * Sets an Entity Property to the provided value. This property",
"     * change is not applied until the next tick.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The Entity Property identifier.",
"     * @param value",
"     * The property value. The provided type must be compatible",
"     * with the type specified in the entity's definition.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     * Throws if an invalid identifier is provided.",
"     * Throws if the provided value type does not match the",
"     * property type.",
"     * Throws if the provided value is outside the expected range",
"     * (int, float properties).",
"     * Throws if the provided string value does not match the set",
"     * of accepted enum values (enum properties",
"     */",
"    setProperty(identifier: string, value: boolean | number | string): void;",
"    /**",
"     * @remarks",
"     * Sets the main rotation of the entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param rotation",
"     * The x and y rotation of the entity (in degrees). For most",
"     * mobs, the x rotation controls the head tilt and the y",
"     * rotation controls the body rotation.",
"     * @throws This function can throw errors.",
"     */",
"    setRotation(rotation: Vector2): void;",
"    /**",
"     * @remarks",
"     * Teleports the selected entity to a new location",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * New location for the entity.",
"     * @param teleportOptions",
"     * Options regarding the teleport operation.",
"     * @throws This function can throw errors.",
"     * @example teleport.ts",
"     * ```typescript",
"     * import { system, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function teleport(targetLocation: DimensionLocation) {",
"     *   const cow = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Cow, targetLocation);",
"     *",
"     *   system.runTimeout(() => {",
"     *     cow.teleport(",
"     *       { x: targetLocation.x + 2, y: targetLocation.y + 2, z: targetLocation.z + 2 },",
"     *       {",
"     *         facingLocation: targetLocation,",
"     *       }",
"     *     );",
"     *   }, 20);",
"     * }",
"     * ```",
"     * @example teleportMovement.ts",
"     * ```typescript",
"     * import { system, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function teleportMovement(targetLocation: DimensionLocation) {",
"     *   const pig = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Pig, targetLocation);",
"     *",
"     *   let inc = 1;",
"     *   const runId = system.runInterval(() => {",
"     *     pig.teleport(",
"     *       { x: targetLocation.x + inc / 4, y: targetLocation.y + inc / 4, z: targetLocation.z + inc / 4 },",
"     *       {",
"     *         facingLocation: targetLocation,",
"     *       }",
"     *     );",
"     *",
"     *     if (inc > 100) {",
"     *       system.clearRun(runId);",
"     *     }",
"     *     inc++;",
"     *   }, 4);",
"     * }",
"     * ```",
"     */",
"    teleport(location: Vector3, teleportOptions?: TeleportOptions): void;",
"    /**",
"     * @remarks",
"     * Triggers an entity type event. For every entity, a number of",
"     * events are defined in an entities' definition for key entity",
"     * behaviors; for example, creepers have a",
"     * minecraft:start_exploding type event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param eventName",
"     * Name of the entity type event to trigger. If a namespace is",
"     * not specified, minecraft: is assumed.",
"     * @throws",
"     * If the event is not defined in the definition of the entity,",
"     * an error will be thrown.",
"     * @example triggerEvent.ts",
"     * ```typescript",
"     * // A function that spawns a creeper and triggers it to explode immediately",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function spawnExplodingCreeper(location: DimensionLocation) {",
"     *     const creeper = location.dimension.spawnEntity(MinecraftEntityTypes.Creeper, location);",
"     *",
"     *     creeper.triggerEvent('minecraft:start_exploding_forced');",
"     * }",
"     * ```",
"     * @example triggerEvent.ts",
"     * ```typescript",
"     * import { DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function triggerEvent(targetLocation: DimensionLocation) {",
"     *   const creeper = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Creeper, targetLocation);",
"     *",
"     *   creeper.triggerEvent('minecraft:start_exploding_forced');",
"     * }",
"     * ```",
"     */",
"    triggerEvent(eventName: string): void;",
"    /**",
"     * @remarks",
"     * Attempts to try a teleport, but may not complete the",
"     * teleport operation (for example, if there are blocks at the",
"     * destination.)",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * Location to teleport the entity to.",
"     * @param teleportOptions",
"     * Options regarding the teleport operation.",
"     * @returns",
"     * Returns whether the teleport succeeded. This can fail if the",
"     * destination chunk is unloaded or if the teleport would",
"     * result in intersecting with blocks.",
"     * @throws This function can throw errors.",
"     */",
"    tryTeleport(location: Vector3, teleportOptions?: TeleportOptions): boolean;",
"}",
"/**",
" * When added, this component makes the entity spawn with a",
" * rider of the specified entityType.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityAddRiderComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The type of entity that is added as a rider for this entity",
"     * when spawned under certain conditions.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly entityType: string;",
"    /**",
"     * @remarks",
"     * Optional spawn event to trigger on the rider when that rider",
"     * is spawned for this entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly spawnEvent: string;",
"    static readonly componentId = 'minecraft:addrider';",
"}",
"/**",
" * Adds a timer for the entity to grow up. It can be",
" * accelerated by giving the entity the items it likes as",
" * defined by feedItems.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityAgeableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Amount of time before the entity grows up, -1 for always a",
"     * baby.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly duration: number;",
"    /**",
"     * @remarks",
"     * Event that runs when this entity grows up.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly growUp: Trigger;",
"    /**",
"     * @remarks",
"     * The feed item used will transform into this item upon",
"     * successful interaction.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly transformToItem: string;",
"    static readonly componentId = 'minecraft:ageable';",
"    /**",
"     * @remarks",
"     * List of items that the entity drops when it grows up.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getDropItems(): string[];",
"    /**",
"     * @remarks",
"     * List of items that can be fed to the entity. Includes 'item'",
"     * for the item name and 'growth' to define how much time it",
"     * grows up by.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getFeedItems(): EntityDefinitionFeedItem[];",
"}",
"/**",
" * This is a base abstract class for any entity component that",
" * centers around a number and can have a minimum, maximum, and",
" * default defined value.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityAttributeComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Current value of this attribute for this instance.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly currentValue: number;",
"    /**",
"     * @remarks",
"     * Returns the default defined value for this attribute.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly defaultValue: number;",
"    /**",
"     * @remarks",
"     * Returns the effective max of this attribute given any other",
"     * ambient components or factors.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly effectiveMax: number;",
"    /**",
"     * @remarks",
"     * Returns the effective min of this attribute given any other",
"     * ambient components or factors.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly effectiveMin: number;",
"    /**",
"     * @remarks",
"     * Resets the current value of this attribute to the defined",
"     * default value.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    resetToDefaultValue(): void;",
"    /**",
"     * @remarks",
"     * Resets the current value of this attribute to the maximum",
"     * defined value.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    resetToMaxValue(): void;",
"    /**",
"     * @remarks",
"     * Resets the current value of this attribute to the minimum",
"     * defined value.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    resetToMinValue(): void;",
"    /**",
"     * @remarks",
"     * Sets the current value of this attribute.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws",
"     * If the value is out of bounds, an ArgumentOutOfBounds Error",
"     * is thrown.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    setCurrentValue(value: number): boolean;",
"}",
"/**",
" * Base class for a family of entity movement events.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityBaseMovementComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Maximum turn rate for this movement modality of the mob.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly maxTurn: number;",
"}",
"/**",
" * Defines what blocks this entity can breathe in and gives",
" * them the ability to suffocate.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityBreathableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If true, this entity can breathe in air.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly breathesAir: boolean;",
"    /**",
"     * @remarks",
"     * If true, this entity can breathe in lava.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly breathesLava: boolean;",
"    /**",
"     * @remarks",
"     * If true, this entity can breathe in solid blocks.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly breathesSolids: boolean;",
"    /**",
"     * @remarks",
"     * If true, this entity can breathe in water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly breathesWater: boolean;",
"    /**",
"     * @remarks",
"     * If true, this entity will have visible bubbles while in",
"     * water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly generatesBubbles: boolean;",
"    /**",
"     * @remarks",
"     * Time in seconds to recover breath to maximum.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly inhaleTime: number;",
"    /**",
"     * @remarks",
"     * Time in seconds between suffocation damage.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly suffocateTime: number;",
"    /**",
"     * @remarks",
"     * Time in seconds the entity can hold its breath.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly totalSupply: number;",
"    static readonly componentId = 'minecraft:breathable';",
"    /**",
"     * @remarks",
"     * List of blocks this entity can breathe in, in addition to",
"     * the separate properties for classes of blocks.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getBreatheBlocks(): BlockPermutation[];",
"    /**",
"     * @remarks",
"     * List of blocks this entity can't breathe in.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getNonBreatheBlocks(): BlockPermutation[];",
"}",
"/**",
" * When added, this component signifies that the entity can",
" * climb up ladders.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityCanClimbComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:can_climb';",
"}",
"/**",
" * When added, this component signifies that the entity can",
" * fly, and the pathfinder won't be restricted to paths where a",
" * solid block is required underneath it.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityCanFlyComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:can_fly';",
"}",
"/**",
" * When added, this component signifies that the entity can",
" * power jump like the horse does within Minecraft.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityCanPowerJumpComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:can_power_jump';",
"}",
"/**",
" * Defines the entity's secondary color. Only works on certain",
" * entities that have secondary predefined color values (e.g.,",
" * tropical fish).",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityColor2Component extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Value of this particular color.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: PaletteColor;",
"    static readonly componentId = 'minecraft:color2';",
"}",
"/**",
" * Defines the entity's color. Only works on certain entities",
" * that have predefined color values (e.g., sheep, llama,",
" * shulker).",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityColorComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Value of this particular color.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    value: number;",
"    static readonly componentId = 'minecraft:color';",
"}",
"/**",
" * Base class for downstream entity components.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityComponent extends Component {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity that owns this component. The entity will be",
"     * undefined if it has been removed.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    readonly entity: Entity;",
"}",
"/**",
" * As part of the Ageable component, represents a set of items",
" * that can be fed to an entity and the rate at which that",
" * causes them to grow.",
" */",
"export class EntityDefinitionFeedItem {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The amount by which an entity's age will increase when fed",
"     * this item. Values usually range between 0 and 1.",
"     *",
"     */",
"    readonly growth: number;",
"    /**",
"     * @remarks",
"     * Identifier of type of item that can be fed. If a namespace",
"     * is not specified, 'minecraft:' is assumed. Example values",
"     * include 'wheat' or 'golden_apple'.",
"     *",
"     */",
"    readonly item: string;",
"}",
"/**",
" * Contains data related to the death of an entity in the game.",
" */",
"export class EntityDieAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If specified, provides more information on the source of",
"     * damage that caused the death of this entity.",
"     *",
"     */",
"    readonly damageSource: EntityDamageSource;",
"    /**",
"     * @remarks",
"     * Now-dead entity object.",
"     *",
"     */",
"    readonly deadEntity: Entity;",
"}",
"/**",
" * Supports registering for an event that fires after an entity",
" * has died.",
" */",
"export class EntityDieAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Subscribes to an event that fires when an entity dies.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function to call when an entity dies.",
"     * @param options",
"     * Additional filtering options for when the subscription",
"     * fires.",
"     * @returns",
"     * Returns the closure that can be used in future downstream",
"     * calls to unsubscribe.",
"     */",
"    subscribe(",
"        callback: (arg0: EntityDieAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityDieAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Stops this event from calling your function when an entity",
"     * dies.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityDieAfterEvent) => void): void;",
"}",
"/**",
" * Provides access to a mob's equipment slots. This component",
" * exists for all mob entities.",
" * @example givePlayerElytra.ts",
" * ```typescript",
" * // Gives the player Elytra",
" * import { EquipmentSlot, ItemStack, Player, EntityComponentTypes } from '@minecraft/server';",
" * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function giveEquipment(player: Player) {",
" *     const equipmentCompPlayer = player.getComponent(EntityComponentTypes.Equippable);",
" *     if (equipmentCompPlayer) {",
" *         equipmentCompPlayer.setEquipment(EquipmentSlot.Chest, new ItemStack(MinecraftItemTypes.Elytra));",
" *     }",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityEquippableComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:equippable';",
"    /**",
"     * @remarks",
"     * Gets the equipped item for the given EquipmentSlot.",
"     *",
"     * @param equipmentSlot",
"     * The equipment slot. e.g. 'head', 'chest', 'offhand'",
"     * @returns",
"     * Returns the item equipped to the given EquipmentSlot. If",
"     * empty, returns undefined.",
"     * @throws This function can throw errors.",
"     */",
"    getEquipment(equipmentSlot: EquipmentSlot): ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Gets the ContainerSlot corresponding to the given",
"     * EquipmentSlot.",
"     *",
"     * @param equipmentSlot",
"     * The equipment slot. e.g. 'head', 'chest', 'offhand'.",
"     * @returns",
"     * Returns the ContainerSlot corresponding to the given",
"     * EquipmentSlot.",
"     * @throws This function can throw errors.",
"     */",
"    getEquipmentSlot(equipmentSlot: EquipmentSlot): ContainerSlot;",
"    /**",
"     * @remarks",
"     * Replaces the item in the given EquipmentSlot.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param equipmentSlot",
"     * The equipment slot. e.g. 'head', 'chest', 'offhand'.",
"     * @param itemStack",
"     * The item to equip. If undefined, clears the slot.",
"     * @throws This function can throw errors.",
"     */",
"    setEquipment(equipmentSlot: EquipmentSlot, itemStack?: ItemStack): boolean;",
"}",
"/**",
" * When added, this component signifies that this entity",
" * doesn't take damage from fire.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityFireImmuneComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:fire_immune';",
"}",
"/**",
" * When added, this component signifies that this entity can",
" * float in liquid blocks.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityFloatsInLiquidComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:floats_in_liquid';",
"}",
"/**",
" * Represents the flying speed of an entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityFlyingSpeedComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Current value of the flying speed of the associated entity.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    value: number;",
"    static readonly componentId = 'minecraft:flying_speed';",
"}",
"/**",
" * Defines how much friction affects this entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityFrictionModifierComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Current value of the friction modifier of the associated",
"     * entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:friction_modifier';",
"}",
"/**",
" * Defines the interactions with this entity for healing it.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityHealableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Determines if an item can be used regardless of the entity",
"     * being at full health.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly forceUse: boolean;",
"    static readonly componentId = 'minecraft:healable';",
"    /**",
"     * @remarks",
"     * A set of items that can specifically heal this entity.",
"     *",
"     * @returns",
"     * Entity that this component is associated with.",
"     * @throws This function can throw errors.",
"     */",
"    getFeedItems(): FeedItem[];",
"}",
"/**",
" * Contains information related to an entity when its health",
" * changes. Warning: don't change the health of an entity in",
" * this event, or it will cause an infinite loop!",
" */",
"export class EntityHealthChangedAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Entity whose health changed.",
"     *",
"     */",
"    readonly entity: Entity;",
"    /**",
"     * @remarks",
"     * New health value of the entity.",
"     *",
"     */",
"    readonly newValue: number;",
"    /**",
"     * @remarks",
"     * Old health value of the entity.",
"     *",
"     */",
"    readonly oldValue: number;",
"}",
"/**",
" * Manages callbacks that are connected to when the health of",
" * an entity changes.",
" */",
"export class EntityHealthChangedAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when the health of an",
"     * entity changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: EntityHealthChangedAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityHealthChangedAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when the health of an",
"     * entity changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityHealthChangedAfterEvent) => void): void;",
"}",
"/**",
" * Defines the health properties of an entity.",
" * @example applyDamageThenHeal.ts",
" * ```typescript",
" * import { system, EntityHealthComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function applyDamageThenHeal(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const skelly = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Skeleton, targetLocation);",
" *",
" *   skelly.applyDamage(19); // skeletons have max damage of 20 so this is a near-death skeleton",
" *",
" *   system.runTimeout(() => {",
" *     const health = skelly.getComponent(EntityComponentTypes.Health) as EntityHealthComponent;",
" *     log('Skeleton health before heal: ' + health?.currentValue);",
" *     health?.resetToMaxValue();",
" *     log('Skeleton health after heal: ' + health?.currentValue);",
" *   }, 20);",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityHealthComponent extends EntityAttributeComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:health';",
"}",
"/**",
" * Contains information related to an entity hitting a block.",
" */",
"export class EntityHitBlockAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Face of the block that was hit.",
"     *",
"     */",
"    readonly blockFace: Direction;",
"    /**",
"     * @remarks",
"     * Entity that made the attack.",
"     *",
"     */",
"    readonly damagingEntity: Entity;",
"    /**",
"     * @remarks",
"     * Block that was hit by the attack.",
"     *",
"     */",
"    readonly hitBlock: Block;",
"    /**",
"     * @remarks",
"     * Block permutation that was hit by the attack.",
"     *",
"     */",
"    readonly hitBlockPermutation: BlockPermutation;",
"}",
"/**",
" * Manages callbacks that are connected to when an entity hits",
" * a block.",
" */",
"export class EntityHitBlockAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an entity hits a",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: EntityHitBlockAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityHitBlockAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an entity hits a",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityHitBlockAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to an entity hitting (melee",
" * attacking) another entity.",
" */",
"export class EntityHitEntityAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Entity that made a hit/melee attack.",
"     *",
"     */",
"    readonly damagingEntity: Entity;",
"    /**",
"     * @remarks",
"     * Entity that was hit by the attack.",
"     *",
"     */",
"    readonly hitEntity: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when an entity makes",
" * a melee attack on another entity.",
" */",
"export class EntityHitEntityAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an entity hits",
"     * another entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: EntityHitEntityAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityHitEntityAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an entity makes a",
"     * melee attack on another entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityHitEntityAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to an entity getting hurt.",
" */",
"export class EntityHurtAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Describes the amount of damage caused.",
"     *",
"     */",
"    readonly damage: number;",
"    /**",
"     * @remarks",
"     * Source information on the entity that may have applied this",
"     * damage.",
"     *",
"     */",
"    readonly damageSource: EntityDamageSource;",
"    /**",
"     * @remarks",
"     * Entity that was hurt.",
"     *",
"     */",
"    readonly hurtEntity: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when an entity is",
" * hurt.",
" */",
"export class EntityHurtAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an entity is hurt.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: EntityHurtAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityHurtAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an entity is hurt.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityHurtAfterEvent) => void): void;",
"}",
"/**",
" * Defines this entity's inventory properties.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityInventoryComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Number of slots that this entity can gain per extra",
"     * strength.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly additionalSlotsPerStrength: number;",
"    /**",
"     * @remarks",
"     * If true, the contents of this inventory can be removed by a",
"     * hopper.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canBeSiphonedFrom: boolean;",
"    /**",
"     * @remarks",
"     * Defines the container for this entity. The container will be",
"     * undefined if the entity has been removed.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    readonly container: Container;",
"    /**",
"     * @remarks",
"     * Type of container this entity has.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly containerType: string;",
"    /**",
"     * @remarks",
"     * Number of slots the container has.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly inventorySize: number;",
"    /**",
"     * @remarks",
"     * If true, the entity will not drop it's inventory on death.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly 'private': boolean;",
"    /**",
"     * @remarks",
"     * If true, the entity's inventory can only be accessed by its",
"     * owner or itself.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly restrictToOwner: boolean;",
"    static readonly componentId = 'minecraft:inventory';",
"}",
"/**",
" * When added, this component signifies that this entity is a",
" * baby.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsBabyComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_baby';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * charged.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsChargedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_charged';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently carrying a chest.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsChestedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_chested';",
"}",
"/**",
" * When added, this component signifies that dyes can be used",
" * on this entity to change its color.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsDyeableComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_dyeable';",
"}",
"/**",
" * When added, this component signifies that this entity can",
" * hide from hostile mobs while invisible.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsHiddenWhenInvisibleComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_hidden_when_invisible';",
"}",
"/**",
" * When added, this component signifies that this entity this",
" * currently on fire.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsIgnitedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_ignited';",
"}",
"/**",
" * When added, this component signifies that this entity is an",
" * illager captain.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsIllagerCaptainComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_illager_captain';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently saddled.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsSaddledComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_saddled';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently shaking.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsShakingComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_shaking';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently sheared.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsShearedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_sheared';",
"}",
"/**",
" * When added, this component signifies that this entity can be",
" * stacked.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsStackableComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_stackable';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently stunned.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsStunnedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_stunned';",
"}",
"/**",
" * When added, this component signifies that this entity is",
" * currently tamed.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityIsTamedComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:is_tamed';",
"}",
"/**",
" * If added onto the entity, this indicates that the entity",
" * represents a free-floating item in the world. Lets you",
" * retrieve the actual item stack contents via the itemStack",
" * property.",
" * @example testThatEntityIsFeatherItem.ts",
" * ```typescript",
" * import { EntityItemComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
" *",
" * function testThatEntityIsFeatherItem(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const items = targetLocation.dimension.getEntities({",
" *     location: targetLocation,",
" *     maxDistance: 20,",
" *   });",
" *",
" *   for (const item of items) {",
" *     const itemComp = item.getComponent(EntityComponentTypes.Item) as EntityItemComponent;",
" *",
" *     if (itemComp) {",
" *       if (itemComp.itemStack.typeId.endsWith('feather')) {",
" *         log('Success! Found a feather', 1);",
" *       }",
" *     }",
" *   }",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityItemComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Item stack represented by this entity in the world.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly itemStack: ItemStack;",
"    static readonly componentId = 'minecraft:item';",
"}",
"/**",
" * Defines the base movement speed in lava of this entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityLavaMovementComponent extends EntityAttributeComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:lava_movement';",
"}",
"/**",
" * Allows the entity to be leashed. Defines the conditions and",
" * events for when an entity is leashed.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityLeashableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns true if another entity can 'steal' the leashed",
"     * entity by attaching their own leash to it.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canBeStolen: boolean;",
"    /**",
"     * @remarks",
"     * Distance in blocks at which the leash stiffens, restricting",
"     * movement.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly hardDistance: number;",
"    /**",
"     * @remarks",
"     * Returns true if the entity is leashed.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isLeashed: boolean;",
"    /**",
"     * @remarks",
"     * Entity that is holding the leash.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly leashHolder?: Entity;",
"    /**",
"     * @remarks",
"     * Identifier of entity that is holding the leash.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly leashHolderEntityId?: string;",
"    /**",
"     * @remarks",
"     * Distance in blocks at which the leash breaks.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly maxDistance: number;",
"    /**",
"     * @remarks",
"     * Distance in blocks at which the 'spring' effect starts",
"     * acting to keep this entity close to the entity that leashed",
"     * it.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly softDistance: number;",
"    static readonly componentId = 'minecraft:leashable';",
"    /**",
"     * @remarks",
"     * Leashes this entity to another entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param leashHolder",
"     * The entity to leash this entity to.",
"     * @throws",
"     * Throws if the entity to leash to is over the max distance,",
"     * and if the player is dead or in spectator mode.",
"     */",
"    leashTo(leashHolder: Entity): void;",
"    /**",
"     * @remarks",
"     * Unleashes this entity if it is leashed to another entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    unleash(): void;",
"}",
"/**",
" * Contains data related to an entity loaded within the world.",
" * This could happen when an unloaded chunk is reloaded, or",
" * when an entity changes dimensions.",
" */",
"export class EntityLoadAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Entity that was loaded.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    entity: Entity;",
"}",
"/**",
" * Registers a script-based event handler for handling what",
" * happens when an entity loads.",
" */",
"export class EntityLoadAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Method to register an event handler for what happens when an",
"     * entity loads.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function that handles the load event.",
"     */",
"    subscribe(callback: (arg0: EntityLoadAfterEvent) => void): (arg0: EntityLoadAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Unregisters a method that was previously subscribed to the",
"     * subscription event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Original function that was passed into the subscribe event,",
"     * that is to be unregistered.",
"     */",
"    unsubscribe(callback: (arg0: EntityLoadAfterEvent) => void): void;",
"}",
"/**",
" * Additional variant value. Can be used to further",
" * differentiate variants.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMarkVariantComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Value of the mark variant value for this entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:mark_variant';",
"}",
"/**",
" * When added, this movement control allows the mob to swim in",
" * water and walk on land.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementAmphibiousComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.amphibious';",
"}",
"/**",
" * This component accents the movement of an entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementBasicComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.basic';",
"}",
"/**",
" * Defines the general movement speed of this entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementComponent extends EntityAttributeComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement';",
"}",
"/**",
" * When added, this move control causes the mob to fly.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementFlyComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.fly';",
"}",
"/**",
" * When added, this move control allows a mob to fly, swim,",
" * climb, etc.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementGenericComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.generic';",
"}",
"/**",
" * When added, this movement control allows the mob to glide.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementGlideComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Speed in effect when the entity is turning.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly speedWhenTurning: number;",
"    /**",
"     * @remarks",
"     * Start speed during a glide.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly startSpeed: number;",
"    static readonly componentId = 'minecraft:movement.glide';",
"}",
"/**",
" * When added, this move control causes the mob to hover.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementHoverComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.hover';",
"}",
"/**",
" * Move control that causes the mob to jump as it moves with a",
" * specified delay between jumps.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementJumpComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.jump';",
"}",
"/**",
" * When added, this move control causes the mob to hop as it",
" * moves.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementSkipComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:movement.skip';",
"}",
"/**",
" * When added, this move control causes the mob to sway side to",
" * side giving the impression it is swimming.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityMovementSwayComponent extends EntityBaseMovementComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Amplitude of the sway motion.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly swayAmplitude: number;",
"    /**",
"     * @remarks",
"     * Amount of sway frequency.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly swayFrequency: number;",
"    static readonly componentId = 'minecraft:movement.sway';",
"}",
"/**",
" * Allows this entity to generate paths that include vertical",
" * walls (for example, like Minecraft spiders do.)",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationClimbComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.climb';",
"}",
"/**",
" * Allows this entity to generate paths that include vertical",
" * walls (for example, like Minecraft spiders do.)",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Tells the pathfinder to avoid blocks that cause damage when",
"     * finding a path.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly avoidDamageBlocks: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder to avoid portals (like nether portals)",
"     * when finding a path.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly avoidPortals: boolean;",
"    /**",
"     * @remarks",
"     * Whether or not the pathfinder should avoid tiles that are",
"     * exposed to the sun when creating paths.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly avoidSun: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder to avoid water when creating a path.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly avoidWater: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can jump out of water",
"     * (like a dolphin).",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canBreach: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder that it can path through a closed door",
"     * and break it.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canBreakDoors: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can float.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canFloat: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can jump up blocks.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canJump: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder that it can path through a closed door",
"     * assuming the AI will open the door.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canOpenDoors: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder that it can path through a closed iron",
"     * door assuming the AI will open the door.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canOpenIronDoors: boolean;",
"    /**",
"     * @remarks",
"     * Whether a path can be created through a door.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canPassDoors: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder that it can start pathing when in the",
"     * air.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canPathFromAir: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can travel on the",
"     * surface of the lava.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canPathOverLava: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can travel on the",
"     * surface of the water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canPathOverWater: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it will be pulled down",
"     * by gravity while in water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canSink: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can path anywhere",
"     * through water and plays swimming animation along that path.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canSwim: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can walk on the",
"     * ground outside water.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canWalk: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can travel in lava",
"     * like walking on ground.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canWalkInLava: boolean;",
"    /**",
"     * @remarks",
"     * Tells the pathfinder whether or not it can walk on the",
"     * ground or go underwater.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isAmphibious: boolean;",
"}",
"/**",
" * Allows this entity to generate paths by flying around the",
" * air like the regular Ghast.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationFloatComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.float';",
"}",
"/**",
" * Allows this entity to generate paths in the air (for",
" * example, like Minecraft parrots do.)",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationFlyComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.fly';",
"}",
"/**",
" * Allows this entity to generate paths by walking, swimming,",
" * flying and/or climbing around and jumping up and down a",
" * block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationGenericComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.generic';",
"}",
"/**",
" * Allows this entity to generate paths in the air (for",
" * example, like the Minecraft Bees do.) Keeps them from",
" * falling out of the skies and doing predictive movement.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationHoverComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.hover';",
"}",
"/**",
" * Allows this entity to generate paths by walking around and",
" * jumping up and down a block like regular mobs.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityNavigationWalkComponent extends EntityNavigationComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:navigation.walk';",
"}",
"/**",
" * When present on an entity, this entity is on fire.",
" * @example setOnFire.ts",
" * ```typescript",
" * import { system, EntityOnFireComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function setOnFire(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const skelly = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Skeleton, targetLocation);",
" *",
" *   skelly.setOnFire(20, true);",
" *",
" *   system.runTimeout(() => {",
" *     const onfire = skelly.getComponent(EntityComponentTypes.OnFire) as EntityOnFireComponent;",
" *     log(onfire?.onFireTicksRemaining + ' fire ticks remaining.');",
" *",
" *     skelly.extinguishFire(true);",
" *     log('Never mind. Fire extinguished.');",
" *   }, 20);",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityOnFireComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The number of ticks remaining before the fire goes out.",
"     *",
"     */",
"    readonly onFireTicksRemaining: number;",
"    static readonly componentId = 'minecraft:onfire';",
"}",
"/**",
" * The projectile component controls the properties of a",
" * projectile entity and allows it to be shot in a given",
" * direction.",
" * This component is present when the entity has the",
" * minecraft:projectile component.",
" * @example shootArrow.ts",
" * ```typescript",
" * import { DimensionLocation, EntityProjectileComponent } from '@minecraft/server';",
" *",
" * function shootArrow(targetLocation: DimensionLocation) {",
" *   const velocity = { x: 0, y: 1, z: 5 };",
" *",
" *   const arrow = targetLocation.dimension.spawnEntity('minecraft:arrow', {",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 2,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   const projectileComp = arrow.getComponent('minecraft:projectile') as EntityProjectileComponent;",
" *",
" *   projectileComp?.shoot(velocity);",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityProjectileComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The fraction of the projectile's speed maintained every tick",
"     * while traveling through air.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    airInertia: number;",
"    /**",
"     * @remarks",
"     * If true, the entity will be set on fire when hurt. The",
"     * default burn duration is 5 seconds. This duration can be",
"     * modified via the onFireTime property. The entity will not",
"     * catch fire if immune or if the entity is wet.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    catchFireOnHurt: boolean;",
"    /**",
"     * @remarks",
"     * If true, the projectile will spawn crit particles when hit",
"     * by a player. E.g. Player attacking a Shulker bullet.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    critParticlesOnProjectileHurt: boolean;",
"    /**",
"     * @remarks",
"     * If true, the projectile will be destroyed when it takes",
"     * damage. E.g. Player attacking a Shulker bullet.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    destroyOnProjectileHurt: boolean;",
"    /**",
"     * @remarks",
"     * The gravity applied to the projectile. When the entity is",
"     * not on the ground, subtracts this amount from the",
"     * projectile’s change in vertical position every tick. The",
"     * higher the value, the faster the projectile falls. If",
"     * negative, the entity will rise instead of fall.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    gravity: number;",
"    /**",
"     * @remarks",
"     * The sound that plays when the projectile hits an entity.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    hitEntitySound?: string;",
"    /**",
"     * @remarks",
"     * The sound that plays when the projectile hits a block.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    hitGroundSound?: string;",
"    /**",
"     * @remarks",
"     * The particle that spawns when the projectile hits something.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    hitParticle?: string;",
"    /**",
"     * @remarks",
"     * If true and the weather is thunder and the entity has line",
"     * of sight to the sky, the entity will be struck by lightning",
"     * when hit. E.g. A thrown Trident with the Channeling",
"     * enchantment.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    lightningStrikeOnHit: boolean;",
"    /**",
"     * @remarks",
"     * The fraction of the projectile's speed maintained every tick",
"     * while traveling through a liquid.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    liquidInertia: number;",
"    /**",
"     * @remarks",
"     * Duration in seconds that the entity hit will be on fire for",
"     * when catchFireOnHurt is set to true.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    onFireTime: number;",
"    /**",
"     * @remarks",
"     * The owner of the projectile. This is used to determine what",
"     * the projectile can collide with and damage. It also",
"     * determines which entity is assigned as the attacker.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    owner?: Entity;",
"    /**",
"     * @remarks",
"     * If true, the projectile will bounce off mobs when no damage",
"     * is taken. E.g. A spawning wither.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    shouldBounceOnHit: boolean;",
"    /**",
"     * @remarks",
"     * If true, the projectile will stop moving when an entity is",
"     * hit as thought it had been blocked. E.g. Thrown trident on",
"     * hit behavior.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    stopOnHit: boolean;",
"    static readonly componentId = 'minecraft:projectile';",
"    /**",
"     * @remarks",
"     * Shoots the projectile with a given velocity. The projectile",
"     * will be shot from its current location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param velocity",
"     * The velocity to fire the projectile. This controls both the",
"     * speed and direction which which the projectile will be shot.",
"     * @param options",
"     * Optional configuration for the shoot.",
"     * @throws",
"     * Throws if the component or entity no longer exist.",
"     */",
"    shoot(velocity: Vector3, options?: ProjectileShootOptions): void;",
"}",
"/**",
" * Sets the distance through which the entity can push through.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityPushThroughComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Value of the push through distances of this entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:push_through';",
"}",
"/**",
" * Data for an event that happens when an entity is removed",
" * from the world (for example, the entity is unloaded because",
" * it is not close to players.)",
" */",
"export class EntityRemoveAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Id of the entity that was removed.",
"     *",
"     */",
"    readonly removedEntityId: string;",
"    /**",
"     * @remarks",
"     * Identifier of the type of the entity removed - for example,",
"     * 'minecraft:skeleton'.",
"     *",
"     */",
"    readonly typeId: string;",
"}",
"/**",
" * Allows registration for an event that fires when an entity",
" * is removed from  the game (for example, unloaded, or a few",
" * seconds after they are dead.)",
" */",
"export class EntityRemoveAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Will call your function every time an entity is removed from",
"     * the game.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function to call.",
"     * @param options",
"     * Additional filtering options for this event.",
"     * @returns",
"     * Returns a closure that can be used in subsequent unsubscribe",
"     * operations.",
"     */",
"    subscribe(",
"        callback: (arg0: EntityRemoveAfterEvent) => void,",
"        options?: EntityEventOptions,",
"    ): (arg0: EntityRemoveAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Unsubscribes your function from subsequent calls when an",
"     * entity is removed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityRemoveAfterEvent) => void): void;",
"}",
"/**",
" * Data for an event that happens when an entity is being",
" * removed from the world (for example, the entity is unloaded",
" * because it is not close to players.)",
" */",
"export class EntityRemoveBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Reference to an entity that is being removed.",
"     *",
"     */",
"    readonly removedEntity: Entity;",
"}",
"/**",
" * Allows registration for an event that fires when an entity",
" * is being removed from  the game (for example, unloaded, or a",
" * few seconds after they are dead.)",
" */",
"export class EntityRemoveBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Will call your function every time an entity is being",
"     * removed from the game.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function to call.",
"     * @returns",
"     * Returns a closure that can be used in subsequent unsubscribe",
"     * operations.",
"     */",
"    subscribe(callback: (arg0: EntityRemoveBeforeEvent) => void): (arg0: EntityRemoveBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Unsubscribes your function from subsequent calls when an",
"     * entity is being removed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: EntityRemoveBeforeEvent) => void): void;",
"}",
"/**",
" * When added, this component adds the capability that an",
" * entity can be ridden by another entity.",
" * @example minibiomes.ts",
" * ```typescript",
" * import { EntityComponentTypes } from '@minecraft/server';",
" * import { Test, register } from '@minecraft/server-gametest';",
" * import { MinecraftBlockTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function minibiomes(test: Test) {",
" *   const minecart = test.spawn(MinecraftEntityTypes.Minecart, { x: 9, y: 7, z: 7 });",
" *   const pig = test.spawn(MinecraftEntityTypes.Pig, { x: 9, y: 7, z: 7 });",
" *",
" *   test.setBlockType(MinecraftBlockTypes.Cobblestone, { x: 10, y: 7, z: 7 });",
" *",
" *   const minecartRideableComp = minecart.getComponent(EntityComponentTypes.Rideable);",
" *",
" *   minecartRideableComp?.addRider(pig);",
" *",
" *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Pig, { x: 8, y: 3, z: 1 }, true);",
" * }",
" * register('ChallengeTests', 'minibiomes', minibiomes).structureName('gametests:minibiomes').maxTicks(160);",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityRideableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Zero-based index of the seat that can used to control this",
"     * entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly controllingSeat: number;",
"    /**",
"     * @remarks",
"     * Determines whether interactions are not supported if the",
"     * entity is crouching.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly crouchingSkipInteract: boolean;",
"    /**",
"     * @remarks",
"     * Set of text that should be displayed when a player is",
"     * looking to ride on this entity (commonly with touch-screen",
"     * controls).",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly interactText: string;",
"    /**",
"     * @remarks",
"     * The max width a mob can be to be a passenger.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly passengerMaxWidth: number;",
"    /**",
"     * @remarks",
"     * If true, this entity will pull in entities that are in the",
"     * correct family_types into any available seat.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly pullInEntities: boolean;",
"    /**",
"     * @remarks",
"     * If true, this entity will be picked when looked at by the",
"     * rider.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly riderCanInteract: boolean;",
"    /**",
"     * @remarks",
"     * Number of seats for riders defined for this entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly seatCount: number;",
"    static readonly componentId = 'minecraft:rideable';",
"    /**",
"     * @remarks",
"     * Adds an entity to this entity as a rider.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param rider",
"     * Entity that will become the rider of this entity.",
"     * @returns",
"     * True if the rider entity was successfully added.",
"     * @throws This function can throw errors.",
"     * @example minibiomes.ts",
"     * ```typescript",
"     * import { EntityComponentTypes } from '@minecraft/server';",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftBlockTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function minibiomes(test: Test) {",
"     *   const minecart = test.spawn(MinecraftEntityTypes.Minecart, { x: 9, y: 7, z: 7 });",
"     *   const pig = test.spawn(MinecraftEntityTypes.Pig, { x: 9, y: 7, z: 7 });",
"     *",
"     *   test.setBlockType(MinecraftBlockTypes.Cobblestone, { x: 10, y: 7, z: 7 });",
"     *",
"     *   const minecartRideableComp = minecart.getComponent(EntityComponentTypes.Rideable);",
"     *",
"     *   minecartRideableComp?.addRider(pig);",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Pig, { x: 8, y: 3, z: 1 }, true);",
"     * }",
"     * register('ChallengeTests', 'minibiomes', minibiomes).structureName('gametests:minibiomes').maxTicks(160);",
"     * ```",
"     */",
"    addRider(rider: Entity): boolean;",
"    /**",
"     * @remarks",
"     * Ejects the specified rider of this entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param rider",
"     * Entity that should be ejected from this entity.",
"     * @throws This function can throw errors.",
"     */",
"    ejectRider(rider: Entity): void;",
"    /**",
"     * @remarks",
"     * Ejects all riders of this entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    ejectRiders(): void;",
"    /**",
"     * @remarks",
"     * A string-list of entity types that this entity can support",
"     * as riders.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getFamilyTypes(): string[];",
"    /**",
"     * @remarks",
"     * Gets a list of the all the entities currently riding this",
"     * entity.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getRiders(): Entity[];",
"    /**",
"     * @remarks",
"     * Gets a list of positions and number of riders for each",
"     * position for entities riding this entity.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getSeats(): Seat[];",
"}",
"/**",
" * This component is added to any entity when it is riding",
" * another entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityRidingComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity this entity is currently riding on.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly entityRidingOn: Entity;",
"    static readonly componentId = 'minecraft:riding';",
"}",
"/**",
" * Sets the entity's visual size.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityScaleComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Current value for the scale property set on entities.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:scale';",
"}",
"/**",
" * Skin Id value. Can be used to differentiate skins, such as",
" * base skins for villagers.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntitySkinIdComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the value of the skin Id identifier of the entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:skin_id';",
"}",
"/**",
" * Contains data related to an entity spawning within the",
" * world.",
" * @example logEntitySpawnEvent.ts",
" * ```typescript",
" * import { world, system, EntitySpawnAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { Vector3Utils } from '@minecraft/math';",
" *",
" * function logEntitySpawnEvent(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   // register a new function that is called when a new entity is created.",
" *   world.afterEvents.entitySpawn.subscribe((entityEvent: EntitySpawnAfterEvent) => {",
" *     if (entityEvent && entityEvent.entity) {",
" *       log(`New entity of type ${entityEvent.entity.typeId} created!`, 1);",
" *     } else {",
" *       log(`The entity event did not work as expected.`, -1);",
" *     }",
" *   });",
" *",
" *   system.runTimeout(() => {",
" *     targetLocation.dimension.spawnEntity(",
" *       'minecraft:horse<minecraft:ageable_grow_up>',",
" *       Vector3Utils.add(targetLocation, { x: 0, y: 1, z: 0 })",
" *     );",
" *   }, 20);",
" * }",
" * ```",
" */",
"export class EntitySpawnAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Initialization cause (Spawned, Born ...).",
"     *",
"     */",
"    readonly cause: EntityInitializationCause;",
"    /**",
"     * @remarks",
"     * Entity that was spawned.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    entity: Entity;",
"}",
"/**",
" * Registers a script-based event handler for handling what",
" * happens when an entity spawns.",
" */",
"export class EntitySpawnAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Method to register an event handler for what happens when an",
"     * entity spawns.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function that handles the spawn event.",
"     * @example logEntitySpawnEvent.ts",
"     * ```typescript",
"     * import { world, system, EntitySpawnAfterEvent, DimensionLocation } from '@minecraft/server';",
"     * import { Vector3Utils } from '@minecraft/math';",
"     *",
"     * function logEntitySpawnEvent(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   // register a new function that is called when a new entity is created.",
"     *   world.afterEvents.entitySpawn.subscribe((entityEvent: EntitySpawnAfterEvent) => {",
"     *     if (entityEvent && entityEvent.entity) {",
"     *       log(`New entity of type ${entityEvent.entity.typeId} created!`, 1);",
"     *     } else {",
"     *       log(`The entity event did not work as expected.`, -1);",
"     *     }",
"     *   });",
"     *",
"     *   system.runTimeout(() => {",
"     *     targetLocation.dimension.spawnEntity(",
"     *       'minecraft:horse<minecraft:ageable_grow_up>',",
"     *       Vector3Utils.add(targetLocation, { x: 0, y: 1, z: 0 })",
"     *     );",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    subscribe(callback: (arg0: EntitySpawnAfterEvent) => void): (arg0: EntitySpawnAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Unregisters a method that was previously subscribed to the",
"     * subscription event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Original function that was passed into the subscribe event,",
"     * that is to be unregistered.",
"     */",
"    unsubscribe(callback: (arg0: EntitySpawnAfterEvent) => void): void;",
"}",
"/**",
" * Defines the entity's ability to carry items. An entity with",
" * a higher strength would have higher potential carry capacity",
" * and more item slots.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityStrengthComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Maximum strength of this entity, as defined in the entity",
"     * type definition.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly max: number;",
"    /**",
"     * @remarks",
"     * Current value of the strength component that has been set",
"     * for entities.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:strength';",
"}",
"/**",
" * Defines the rules for an entity to be tamed by the player.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityTameableComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns a set of items that can be used to tame this entity.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly getTameItems: ItemStack[];",
"    /**",
"     * @remarks",
"     * Returns true if the entity is tamed by player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isTamed: boolean;",
"    /**",
"     * @remarks",
"     * The chance of taming the entity with each item use between",
"     * 0.0 and 1.0, where 1.0 is 100%",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly probability: number;",
"    /**",
"     * @remarks",
"     * Returns the player that has tamed the entity, or 'undefined'",
"     * if entity is not tamed.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly tamedToPlayer?: Player;",
"    /**",
"     * @remarks",
"     * Returns the id of player that has tamed the entity, or",
"     * 'undefined' if entity is not tamed.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly tamedToPlayerId?: string;",
"    static readonly componentId = 'minecraft:tameable';",
"    /**",
"     * @remarks",
"     * Set this entity as tamed by the given player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param player",
"     * The player that this entity should be tamed by.",
"     * @returns",
"     * Returns true if the entity was tamed.",
"     * @throws This function can throw errors.",
"     */",
"    tame(player: Player): boolean;",
"}",
"/**",
" * Contains options for taming a rideable entity based on the",
" * entity that mounts it.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityTameMountComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns true if the entity is tamed.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isTamed: boolean;",
"    /**",
"     * @remarks",
"     * Returns true if the entity is tamed by a player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isTamedToPlayer: boolean;",
"    /**",
"     * @remarks",
"     * Returns the player that has tamed the entity, or 'undefined'",
"     * if entity is not tamed by a player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly tamedToPlayer?: Player;",
"    /**",
"     * @remarks",
"     * Returns the id of player that has tamed the entity, or",
"     * 'undefined' if entity is not tamed.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly tamedToPlayerId?: string;",
"    static readonly componentId = 'minecraft:tamemount';",
"    /**",
"     * @remarks",
"     * Sets this rideable entity as tamed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param showParticles",
"     * Whether to show effect particles when this entity is tamed.",
"     * @throws This function can throw errors.",
"     */",
"    tame(showParticles: boolean): void;",
"    /**",
"     * @remarks",
"     * Sets this rideable entity as tamed by the given player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param showParticles",
"     * Whether to show effect particles when this entity is tamed.",
"     * @param player",
"     * The player that this entity should be tamed by.",
"     * @returns",
"     * Returns true if the entity was tamed.",
"     * @throws This function can throw errors.",
"     */",
"    tameToPlayer(showParticles: boolean, player: Player): boolean;",
"}",
"/**",
" * Represents information about a type of entity.",
" */",
"export class EntityType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Identifier of this entity type - for example,",
"     * 'minecraft:skeleton'.",
"     *",
"     */",
"    readonly id: string;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityTypeFamilyComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:type_family';",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    getTypeFamilies(): string[];",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    hasTypeFamily(typeFamily: string): boolean;",
"}",
"/**",
" * Used for accessing all entity types currently available for",
" * use within the world.",
" */",
"export class EntityTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Retrieves an entity type using a string-based identifier.",
"     *",
"     */",
"    static get(identifier: string): EntityType | undefined;",
"    /**",
"     * @remarks",
"     * Retrieves a set of all entity types within this world.",
"     *",
"     */",
"    static getAll(): EntityType[];",
"}",
"/**",
" * Defines the general movement speed underwater of this",
" * entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityUnderwaterMovementComponent extends EntityAttributeComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:underwater_movement';",
"}",
"/**",
" * Used to differentiate the component group of a variant of an",
" * entity from others. (e.g. ocelot, villager).",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityVariantComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Current value for variant for this entity, as specified via",
"     * components.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly value: number;",
"    static readonly componentId = 'minecraft:variant';",
"}",
"/**",
" * When added, this component signifies that this entity wants",
" * to become a jockey.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EntityWantsJockeyComponent extends EntityComponent {",
"    private constructor();",
"    static readonly componentId = 'minecraft:wants_jockey';",
"}",
"/**",
" * Contains information regarding an explosion that has",
" * happened.",
" */",
"export class ExplosionAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Dimension where the explosion has occurred.",
"     *",
"     */",
"    readonly dimension: Dimension;",
"    /**",
"     * @remarks",
"     * Optional source of the explosion.",
"     *",
"     */",
"    readonly source?: Entity;",
"    /**",
"     * @remarks",
"     * A collection of blocks impacted by this explosion event.",
"     *",
"     */",
"    getImpactedBlocks(): Block[];",
"}",
"/**",
" * Manages callbacks that are connected to when an explosion",
" * occurs.",
" */",
"export class ExplosionAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an explosion",
"     * occurs.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ExplosionAfterEvent) => void): (arg0: ExplosionAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an explosion",
"     * occurs.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ExplosionAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an explosion that has",
" * happened.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ExplosionBeforeEvent extends ExplosionAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true, cancels the explosion event.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * Updates a collection of blocks impacted by this explosion",
"     * event.",
"     *",
"     * @param blocks",
"     * New list of blocks that are impacted by this explosion.",
"     */",
"    setImpactedBlocks(blocks: Block[]): void;",
"}",
"/**",
" * Manages callbacks that are connected to before an explosion",
" * occurs.",
" */",
"export class ExplosionBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when before an explosion",
"     * occurs. The callback can optionally change or cancel",
"     * explosion behavior.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ExplosionBeforeEvent) => void): (arg0: ExplosionBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called from before when an",
"     * explosion would occur.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ExplosionBeforeEvent) => void): void;",
"}",
"/**",
" * As part of the Healable component, represents a specific",
" * item that can be fed to an entity to cause health effects.",
" */",
"export class FeedItem {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The amount of health this entity gains when fed this item.",
"     * This number is an integer starting at 0. Sample values can",
"     * go as high as 40.",
"     *",
"     */",
"    readonly healAmount: number;",
"    /**",
"     * @remarks",
"     * Identifier of type of item that can be fed. If a namespace",
"     * is not specified, 'minecraft:' is assumed. Example values",
"     * include 'wheat' or 'golden_apple'.",
"     *",
"     */",
"    readonly item: string;",
"    /**",
"     * @remarks",
"     * As part of the Healable component, an optional collection of",
"     * side effects that can occur from being fed an item.",
"     *",
"     */",
"    getEffects(): FeedItemEffect[];",
"}",
"/**",
" * Represents an effect that is applied as a result of a food",
" * item being fed to an entity.",
" */",
"export class FeedItemEffect {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Gets an amplifier that may have been applied to this effect.",
"     * Valid values are integers starting at 0 and up - but usually",
"     * ranging between 0 and 4.",
"     *",
"     */",
"    readonly amplifier: number;",
"    /**",
"     * @remarks",
"     * Chance that this effect is applied as a result of the entity",
"     * being fed this item. Valid values range between 0 and 1.",
"     *",
"     */",
"    readonly chance: number;",
"    /**",
"     * @remarks",
"     * Gets the duration, in ticks, of this effect.",
"     *",
"     */",
"    readonly duration: number;",
"    /**",
"     * @remarks",
"     * Gets the identifier of the effect to apply. Example values",
"     * include 'fire_resistance' or 'regeneration'.",
"     *",
"     */",
"    readonly name: string;",
"}",
"/**",
" * Represents constants related to fluid containers.",
" */",
"export class FluidContainer {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Constant that represents the maximum fill level of a fluid",
"     * container.",
"     *",
"     */",
"    static readonly maxFillLevel = 6;",
"    /**",
"     * @remarks",
"     * Constant that represents the minimum fill level of a fluid",
"     * container.",
"     *",
"     */",
"    static readonly minFillLevel = 0;",
"}",
"/**",
" * Contains information regarding a changed world.gameRules",
" * property.",
" */",
"export class GameRuleChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The rule identifier pertaining to the changed",
"     * world.gameRules property.",
"     *",
"     */",
"    readonly rule: GameRule;",
"    /**",
"     * @remarks",
"     * The value of the world.gameRules property after being",
"     * changed.",
"     *",
"     */",
"    readonly value: boolean | number;",
"}",
"/**",
" * Manages callbacks that are connected to when a",
" * world.gameRules property has changed.",
" */",
"export class GameRuleChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a world.gameRules",
"     * property is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: GameRuleChangeAfterEvent) => void): (arg0: GameRuleChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a world.gameRules",
"     * property is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: GameRuleChangeAfterEvent) => void): void;",
"}",
"/**",
" * Represents the game rules for a world experience.",
" */",
"export class GameRules {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    commandBlockOutput: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    commandBlocksEnabled: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doDayLightCycle: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doEntityDrops: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doFireTick: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doImmediateRespawn: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doInsomnia: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doLimitedCrafting: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doMobLoot: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doMobSpawning: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doTileDrops: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    doWeatherCycle: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    drowningDamage: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    fallDamage: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    fireDamage: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    freezeDamage: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    functionCommandLimit: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    keepInventory: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    maxCommandChainLength: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    mobGriefing: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    naturalRegeneration: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    playersSleepingPercentage: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    projectilesCanBreakBlocks: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    pvp: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    randomTickSpeed: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    recipesUnlock: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    respawnBlocksExplode: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    sendCommandFeedback: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showBorderEffect: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showCoordinates: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showDaysPlayed: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showDeathMessages: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showRecipeMessages: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showTags: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    spawnRadius: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    tntExplodes: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    tntExplosionDropDecay: boolean;",
"}",
"/**",
" * Contains the input information for a client instance.",
" */",
"export class InputInfo {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The last input mode used by the player.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    readonly lastInputModeUsed: InputMode;",
"    /**",
"     * @remarks",
"     * Whether the player touch input only affects the touchbar or",
"     * not.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    readonly touchOnlyAffectsHotbar: boolean;",
"    /**",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    getButtonState(button: InputButton): ButtonState;",
"    /**",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    getMovementVector(): Vector2;",
"}",
"/**",
" * Contains information related to a chargeable item completing",
" * being charged.",
" */",
"export class ItemCompleteUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the item stack that has completed charging.",
"     *",
"     */",
"    readonly itemStack: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"    /**",
"     * @remarks",
"     * Returns the time, in ticks, for the remaining duration left",
"     * before the charge completes its cycle.",
"     *",
"     */",
"    readonly useDuration: number;",
"}",
"/**",
" * Manages callbacks that are connected to the completion of",
" * charging for a chargeable item.",
" */",
"export class ItemCompleteUseAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a chargeable item",
"     * completes charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemCompleteUseAfterEvent) => void): (arg0: ItemCompleteUseAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a chargeable item",
"     * completes charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemCompleteUseAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to a chargeable item completing",
" * being charged.",
" */",
"export class ItemCompleteUseEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the item stack that has completed charging.",
"     *",
"     */",
"    readonly itemStack: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"}",
"/**",
" * Base class for item components.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemComponent extends Component {",
"    private constructor();",
"}",
"/**",
" * Contains information regarding an item before it is damaged",
" * from hitting an entity.",
" */",
"export class ItemComponentBeforeDurabilityDamageEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The attacking entity.",
"     *",
"     */",
"    readonly attackingEntity: Entity;",
"    /**",
"     * @remarks",
"     * The damage applied to the item's durability when the event",
"     * occurs.",
"     *",
"     */",
"    durabilityDamage: number;",
"    /**",
"     * @remarks",
"     * The entity being hit.",
"     *",
"     */",
"    readonly hitEntity: Entity;",
"    /**",
"     * @remarks",
"     * The item stack used to hit the entity.",
"     *",
"     */",
"    itemStack?: ItemStack;",
"}",
"/**",
" * Contains information related to a chargeable item completing",
" * being charged via a component.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemComponentCompleteUseEvent extends ItemCompleteUseEvent {",
"    private constructor();",
"}",
"/**",
" * Contains information related to a food item being consumed.",
" */",
"export class ItemComponentConsumeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The item stack that was consumed.",
"     *",
"     */",
"    readonly itemStack: ItemStack;",
"    /**",
"     * @remarks",
"     * The source entity that consumed the item.",
"     *",
"     */",
"    readonly source: Entity;",
"}",
"/**",
" * Contains information regarding when an item is used to hit",
" * an entity.",
" */",
"export class ItemComponentHitEntityEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The attacking entity.",
"     *",
"     */",
"    readonly attackingEntity: Entity;",
"    /**",
"     * @remarks",
"     * Whether the hit landed or had any effect.",
"     *",
"     */",
"    readonly hadEffect: boolean;",
"    /**",
"     * @remarks",
"     * The entity being hit.",
"     *",
"     */",
"    readonly hitEntity: Entity;",
"    /**",
"     * @remarks",
"     * The item stack used to hit the entity.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"}",
"/**",
" * Contains information regarding the mining of a block using",
" * an item.",
" */",
"export class ItemComponentMineBlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block impacted by this event.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The item stack used to mine the block.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * The block permutation that was mined.",
"     *",
"     */",
"    readonly minedBlockPermutation: BlockPermutation;",
"    /**",
"     * @remarks",
"     * The entity that mined the block.",
"     *",
"     */",
"    readonly source: Entity;",
"}",
"/**",
" * Provides the functionality for registering custom components",
" * for items.",
" */",
"export class ItemComponentRegistry {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Registers an item custom component that can be used in item",
"     * JSON configuration.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param name",
"     * The id that represents this custom component. Must have a",
"     * namespace. This id can be specified in a item's JSON",
"     * configuration under the 'minecraft:custom_components' item",
"     * component.",
"     * @param itemCustomComponent",
"     * The collection of event functions that will be called when",
"     * the event occurs on an item using this custom component id.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link CustomComponentInvalidRegistryError}",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link ItemCustomComponentAlreadyRegisteredError}",
"     *",
"     * {@link ItemCustomComponentReloadNewComponentError}",
"     *",
"     * {@link ItemCustomComponentReloadNewEventError}",
"     *",
"     * {@link ItemCustomComponentReloadVersionError}",
"     *",
"     * {@link NamespaceNameError}",
"     */",
"    registerCustomComponent(name: string, itemCustomComponent: ItemCustomComponent): void;",
"}",
"/**",
" * Contains information regarding the use of an item.",
" */",
"export class ItemComponentUseEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The item stack when the item was used.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * The player who used the item.",
"     *",
"     */",
"    readonly source: Player;",
"}",
"/**",
" * Contains information regarding the use of an item on a block",
" * via a component.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemComponentUseOnEvent extends ItemUseOnEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The entity that used the item on the block.",
"     *",
"     */",
"    readonly source: Entity;",
"    /**",
"     * @remarks",
"     * The block permutation that the item was used on.",
"     *",
"     */",
"    readonly usedOnBlockPermutation: BlockPermutation;",
"}",
"/**",
" * When present, the item can be composted in the composter",
" * block if the composting chance is in the range [1 - 100].",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCompostableComponent extends ItemComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This is the percent chance of the item composting in the",
"     * composter block and generating a compost layer. Note this",
"     * api will also return the composting chance for vanilla items",
"     * that are compostable but do not use the compostable item",
"     * component.",
"     *",
"     * @throws",
"     * Throws if value outside the range [1 - 100]",
"     */",
"    readonly compostingChance: number;",
"    static readonly componentId = 'minecraft:compostable';",
"}",
"/**",
" * When present on an item, this item has a cooldown effect",
" * when used by entities.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCooldownComponent extends ItemComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Represents the cooldown category that this item is",
"     * associated with.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly cooldownCategory: string;",
"    /**",
"     * @remarks",
"     * Amount of time, in ticks, it will take this item to",
"     * cooldown.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly cooldownTicks: number;",
"    static readonly componentId = 'minecraft:cooldown';",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getCooldownTicksRemaining(player: Player): number;",
"    /**",
"     * @remarks",
"     * Will return true if the item is the cooldown category passed",
"     * in and false otherwise.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param cooldownCategory",
"     * The cooldown category that might be associated with this",
"     * item.",
"     * @returns",
"     * True if the item is the given cooldown category.",
"     * @throws This function can throw errors.",
"     */",
"    isCooldownCategory(cooldownCategory: string): boolean;",
"    /**",
"     * @remarks",
"     * Starts a new cooldown period for this item.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    startCooldown(player: Player): void;",
"}",
"/**",
" * An instance of a custom component on an item.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCustomComponentInstance extends ItemComponent {",
"    private constructor();",
"    readonly customComponentParameters: CustomComponentParameters;",
"}",
"/**",
" * When present on an item, this item can take damage in the",
" * process of being used. Note that this component only applies",
" * to data-driven items.",
" * @example giveHurtDiamondSword.ts",
" * ```typescript",
" * import { world, ItemStack, EntityInventoryComponent, EntityComponentTypes, ItemComponentTypes, ItemDurabilityComponent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function giveHurtDiamondSword(",
" *     targetLocation: DimensionLocation",
" * ) {",
" *   const hurtDiamondSword = new ItemStack(MinecraftItemTypes.DiamondSword);",
" *",
" *   const durabilityComponent = hurtDiamondSword.getComponent(ItemComponentTypes.Durability) as ItemDurabilityComponent;",
" *",
" *   if (durabilityComponent !== undefined) {",
" *     durabilityComponent.damage = durabilityComponent.maxDurability / 2;",
" *   }",
" *",
" *   for (const player of world.getAllPlayers()) {",
" *     const inventory = player.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
" *     if (inventory && inventory.container) {",
" *       inventory.container.addItem(hurtDiamondSword);",
" *     }",
" *   }",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemDurabilityComponent extends ItemComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the current damage level of this particular item.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    damage: number;",
"    /**",
"     * @remarks",
"     * Represents the amount of damage that this item can take",
"     * before breaking.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly maxDurability: number;",
"    static readonly componentId = 'minecraft:durability';",
"    /**",
"     * @remarks",
"     * Returns the maximum chance that this item would be damaged",
"     * using the damageRange property, given an unbreaking",
"     * enchantment level.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param unbreakingEnchantmentLevel",
"     * Unbreaking factor to consider in factoring the damage",
"     * chance. Incoming unbreaking parameter must be within the",
"     * range [0, 3].",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    getDamageChance(unbreakingEnchantmentLevel?: number): number;",
"    /**",
"     * @remarks",
"     * A range of numbers that is used to calculate the damage",
"     * chance for an item. The damage chance will fall within this",
"     * range.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getDamageChanceRange(): minecraftcommon.NumberRange;",
"}",
"/**",
" * When present on an item, this item can have enchantments",
" * applied to it.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemEnchantableComponent extends ItemComponent {",
"    private constructor();",
"    /**",
"     * @throws This property can throw when used.",
"     */",
"    readonly slots: EnchantmentSlot[];",
"    static readonly componentId = 'minecraft:enchantable';",
"    /**",
"     * @remarks",
"     * Adds an enchantment to the item stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param enchantment",
"     * The enchantment interface to be added.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if the",
"     * enchantment type does not exist.",
"     *",
"     * ScriptItemEnchantmentLevelOutOfBoundsError: Exception thrown",
"     * if the enchantment level is outside the allowable range for",
"     * the given enchantment type.",
"     *",
"     * ScriptItemEnchantmentTypeNotCompatibleError: Exception",
"     * thrown if the enchantment is not compatible with the item",
"     * stack.",
"     *",
"     *",
"     * {@link EnchantmentLevelOutOfBoundsError}",
"     *",
"     * {@link EnchantmentTypeNotCompatibleError}",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     *",
"     * {@link Error}",
"     */",
"    addEnchantment(enchantment: Enchantment): void;",
"    /**",
"     * @remarks",
"     * Adds a list of enchantments to the item stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param enchantments",
"     * The list of enchantments to be added.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if any",
"     * enchantment type does not exist.",
"     *",
"     * ScriptItemEnchantmentLevelOutOfBoundsError: Exception thrown",
"     * if any enchantment level is outside the allowable range for",
"     * the given enchantment type.",
"     *",
"     * ScriptItemEnchantmentTypeNotCompatibleError: Exception",
"     * thrown if any enchantment is not compatible with the item",
"     * stack.",
"     *",
"     *",
"     * {@link EnchantmentLevelOutOfBoundsError}",
"     *",
"     * {@link EnchantmentTypeNotCompatibleError}",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     *",
"     * {@link Error}",
"     */",
"    addEnchantments(enchantments: Enchantment[]): void;",
"    /**",
"     * @remarks",
"     * Checks whether an enchantment can be added to the item",
"     * stack.",
"     *",
"     * @param enchantment",
"     * The enchantment interface to be added.",
"     * @returns",
"     * Returns true if the enchantment can be added to the item",
"     * stack.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if the",
"     * enchantment type does not exist.",
"     *",
"     * ScriptItemEnchantmentLevelOutOfBoundsError: Exception thrown",
"     * if the enchantment level is outside the allowable range for",
"     * the given enchantment type.",
"     *",
"     *",
"     * {@link EnchantmentLevelOutOfBoundsError}",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     */",
"    canAddEnchantment(enchantment: Enchantment): boolean;",
"    /**",
"     * @remarks",
"     * Gets the enchantment of a given type from the item stack.",
"     *",
"     * @param enchantmentType",
"     * The enchantment type to get.",
"     * @returns",
"     * Returns the enchantment if it exists on the item stack.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if the",
"     * enchantment type does not exist.",
"     *",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     */",
"    getEnchantment(enchantmentType: EnchantmentType | string): Enchantment | undefined;",
"    /**",
"     * @remarks",
"     * Gets all enchantments on the item stack.",
"     *",
"     * @returns",
"     * Returns a list of enchantments on the item stack.",
"     * @throws This function can throw errors.",
"     */",
"    getEnchantments(): Enchantment[];",
"    /**",
"     * @remarks",
"     * Checks whether an item stack has a given enchantment type.",
"     *",
"     * @param enchantmentType",
"     * The enchantment type to check for.",
"     * @returns",
"     * Returns true if the item stack has the enchantment type.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if the",
"     * enchantment type does not exist.",
"     *",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     */",
"    hasEnchantment(enchantmentType: EnchantmentType | string): boolean;",
"    /**",
"     * @remarks",
"     * Removes all enchantments applied to this item stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    removeAllEnchantments(): void;",
"    /**",
"     * @remarks",
"     * Removes an enchantment of the given type.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param enchantmentType",
"     * The enchantment type to remove.",
"     * @throws",
"     * ScriptItemEnchantmentUnknownIdError: Exception thrown if the",
"     * enchantment type does not exist.",
"     *",
"     *",
"     * {@link EnchantmentTypeUnknownIdError}",
"     *",
"     * {@link Error}",
"     */",
"    removeEnchantment(enchantmentType: EnchantmentType | string): void;",
"}",
"/**",
" * When present on an item, this item is consumable by",
" * entities. Note that this component only applies to",
" * data-driven items.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemFoodComponent extends ItemComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If true, the player can always eat this item (even when not",
"     * hungry).",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly canAlwaysEat: boolean;",
"    /**",
"     * @remarks",
"     * Represents how much nutrition this food item will give an",
"     * entity when eaten.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly nutrition: number;",
"    /**",
"     * @remarks",
"     * When an item is eaten, this value is used according to this",
"     * formula (nutrition * saturation_modifier * 2) to apply a",
"     * saturation buff.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly saturationModifier: number;",
"    /**",
"     * @remarks",
"     * When specified, converts the active item to the one",
"     * specified by this property.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly usingConvertsTo: string;",
"    static readonly componentId = 'minecraft:food';",
"}",
"/**",
" * Contains information related to a chargeable item when the",
" * player has finished using the item and released the build",
" * action.",
" */",
"export class ItemReleaseUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the item stack that triggered this item event.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"    /**",
"     * @remarks",
"     * Returns the time, in ticks, for the remaining duration left",
"     * before the charge completes its cycle.",
"     *",
"     */",
"    readonly useDuration: number;",
"}",
"/**",
" * Manages callbacks that are connected to the releasing of",
" * charging for a chargeable item.",
" */",
"export class ItemReleaseUseAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a chargeable item",
"     * is released from charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemReleaseUseAfterEvent) => void): (arg0: ItemReleaseUseAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a chargeable item",
"     * is released from charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemReleaseUseAfterEvent) => void): void;",
"}",
"/**",
" * Defines a collection of items.",
" * @example itemStacks.ts",
" * ```typescript",
" * import { ItemStack, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function itemStacks(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const oneItemLoc = { x: targetLocation.x + targetLocation.y + 3, y: 2, z: targetLocation.z + 1 };",
" *   const fiveItemsLoc = { x: targetLocation.x + 1, y: targetLocation.y + 2, z: targetLocation.z + 1 };",
" *   const diamondPickaxeLoc = { x: targetLocation.x + 2, y: targetLocation.y + 2, z: targetLocation.z + 4 };",
" *",
" *   const oneEmerald = new ItemStack(MinecraftItemTypes.Emerald, 1);",
" *   const onePickaxe = new ItemStack(MinecraftItemTypes.DiamondPickaxe, 1);",
" *   const fiveEmeralds = new ItemStack(MinecraftItemTypes.Emerald, 5);",
" *",
" *   log(`Spawning an emerald at (${oneItemLoc.x}, ${oneItemLoc.y}, ${oneItemLoc.z})`);",
" *   targetLocation.dimension.spawnItem(oneEmerald, oneItemLoc);",
" *",
" *   log(`Spawning five emeralds at (${fiveItemsLoc.x}, ${fiveItemsLoc.y}, ${fiveItemsLoc.z})`);",
" *   targetLocation.dimension.spawnItem(fiveEmeralds, fiveItemsLoc);",
" *",
" *   log(`Spawning a diamond pickaxe at (${diamondPickaxeLoc.x}, ${diamondPickaxeLoc.y}, ${diamondPickaxeLoc.z})`);",
" *   targetLocation.dimension.spawnItem(onePickaxe, diamondPickaxeLoc);",
" * }",
" * ```",
" * @example givePlayerEquipment.ts",
" * ```typescript",
" * import { world, ItemStack, EntityEquippableComponent, EquipmentSlot, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function givePlayerEquipment(",
" *     targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getAllPlayers();",
" *",
" *   const armorStandLoc = { x: targetLocation.x, y: targetLocation.y, z: targetLocation.z + 4 };",
" *   const armorStand = players[0].dimension.spawnEntity(MinecraftItemTypes.ArmorStand, armorStandLoc);",
" *",
" *   const equipmentCompPlayer = players[0].getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent;",
" *   if (equipmentCompPlayer) {",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Head, new ItemStack(MinecraftItemTypes.GoldenHelmet));",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Chest, new ItemStack(MinecraftItemTypes.IronChestplate));",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Legs, new ItemStack(MinecraftItemTypes.DiamondLeggings));",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Feet, new ItemStack(MinecraftItemTypes.NetheriteBoots));",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Mainhand, new ItemStack(MinecraftItemTypes.WoodenSword));",
" *     equipmentCompPlayer.setEquipment(EquipmentSlot.Offhand, new ItemStack(MinecraftItemTypes.Shield));",
" *   }",
" *",
" *   const equipmentCompArmorStand = armorStand.getComponent(EntityComponentTypes.Equippable) as EntityEquippableComponent;",
" *   if (equipmentCompArmorStand) {",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Head, new ItemStack(MinecraftItemTypes.GoldenHelmet));",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Chest, new ItemStack(MinecraftItemTypes.IronChestplate));",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Legs, new ItemStack(MinecraftItemTypes.DiamondLeggings));",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Feet, new ItemStack(MinecraftItemTypes.NetheriteBoots));",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Mainhand, new ItemStack(MinecraftItemTypes.WoodenSword));",
" *     equipmentCompArmorStand.setEquipment(EquipmentSlot.Offhand, new ItemStack(MinecraftItemTypes.Shield));",
" *   }",
" * }",
" * ```",
" * @example spawnFeatherItem.ts",
" * ```typescript",
" * import { ItemStack, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
" *",
" * function spawnFeatherItem(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const featherItem = new ItemStack(MinecraftItemTypes.Feather, 1);",
" *",
" *   targetLocation.dimension.spawnItem(featherItem, targetLocation);",
" *   log(`New feather created at ${targetLocation.x}, ${targetLocation.y}, ${targetLocation.z}!`);",
" * }",
" * ```",
" */",
"export class ItemStack {",
"    /**",
"     * @remarks",
"     * Number of the items in the stack. Valid values range between",
"     * 1-255. The provided value will be clamped to the item's",
"     * maximum stack size.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the value is outside the range of 1-255.",
"     */",
"    amount: number;",
"    /**",
"     * @remarks",
"     * Returns whether the item is stackable. An item is considered",
"     * stackable if the item's maximum stack size is greater than 1",
"     * and the item does not contain any custom data or properties.",
"     *",
"     */",
"    readonly isStackable: boolean;",
"    /**",
"     * @remarks",
"     * Gets or sets whether the item is kept on death.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    keepOnDeath: boolean;",
"    /**",
"     * @remarks",
"     * Gets or sets the item's lock mode. The default value is",
"     * `ItemLockMode.none`.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    lockMode: ItemLockMode;",
"    /**",
"     * @remarks",
"     * The maximum stack size. This value varies depending on the",
"     * type of item. For example, torches have a maximum stack size",
"     * of 64, while eggs have a maximum stack size of 16.",
"     *",
"     */",
"    readonly maxAmount: number;",
"    /**",
"     * @remarks",
"     * Given name of this stack of items. The name tag is displayed",
"     * when hovering over the item. Setting the name tag to an",
"     * empty string or `undefined` will remove the name tag.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the length exceeds 255 characters.",
"     */",
"    nameTag?: string;",
"    /**",
"     * @remarks",
"     * The type of the item.",
"     *",
"     */",
"    readonly 'type': ItemType;",
"    /**",
"     * @remarks",
"     * Identifier of the type of items for the stack. If a",
"     * namespace is not specified, 'minecraft:' is assumed.",
"     * Examples include 'wheat' or 'apple'.",
"     *",
"     */",
"    readonly typeId: string;",
"    /**",
"     * @remarks",
"     * Creates a new instance of a stack of items for use in the",
"     * world.",
"     *",
"     * @param itemType",
"     * Type of item to create. See the {@link",
"     * @minecraft/vanilla-data.MinecraftItemTypes} enumeration for",
"     * a list of standard item types in Minecraft experiences.",
"     * @param amount",
"     * Number of items to place in the stack, between 1-255. The",
"     * provided value will be clamped to the item's maximum stack",
"     * size. Note that certain items can only have one item in the",
"     * stack.",
"     * Defaults to: 1",
"     * @throws",
"     * Throws if `itemType` is invalid, or if `amount` is outside",
"     * the range of 1-255.",
"     */",
"    constructor(itemType: ItemType | string, amount?: number);",
"    /**",
"     * @remarks",
"     * Clears all dynamic properties that have been set on this",
"     * item stack.",
"     *",
"     */",
"    clearDynamicProperties(): void;",
"    /**",
"     * @remarks",
"     * Creates an exact copy of the item stack, including any",
"     * custom data or properties.",
"     *",
"     * @returns",
"     * Returns a copy of this item stack.",
"     */",
"    clone(): ItemStack;",
"    /**",
"     * @remarks",
"     * Get the list of block types this item can break in Adventure",
"     * mode.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getCanDestroy(): string[];",
"    /**",
"     * @remarks",
"     * Get the list of block types this item can be placed on in",
"     * Adventure mode.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getCanPlaceOn(): string[];",
"    /**",
"     * @remarks",
"     * Gets a component (that represents additional capabilities)",
"     * for an item stack.",
"     *",
"     * @param componentId",
"     * The identifier of the component (e.g., 'minecraft:food'). If",
"     * no namespace prefix is specified, 'minecraft:' is assumed.",
"     * Available component IDs are those in the {@link",
"     * ItemComponentTypes} enum and custom component IDs registered",
"     * with the {@link ItemComponentRegistry}.",
"     * @returns",
"     * Returns the component if it exists on the item stack,",
"     * otherwise undefined.",
"     * @example giveHurtDiamondSword.ts",
"     * ```typescript",
"     * import { world, ItemStack, EntityInventoryComponent, EntityComponentTypes, ItemComponentTypes, ItemDurabilityComponent, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function giveHurtDiamondSword(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const hurtDiamondSword = new ItemStack(MinecraftItemTypes.DiamondSword);",
"     *",
"     *   const durabilityComponent = hurtDiamondSword.getComponent(ItemComponentTypes.Durability) as ItemDurabilityComponent;",
"     *",
"     *   if (durabilityComponent !== undefined) {",
"     *     durabilityComponent.damage = durabilityComponent.maxDurability / 2;",
"     *   }",
"     *",
"     *   for (const player of world.getAllPlayers()) {",
"     *     const inventory = player.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *     if (inventory && inventory.container) {",
"     *       inventory.container.addItem(hurtDiamondSword);",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    getComponent<T extends string>(componentId: T): ItemComponentReturnType<T> | undefined;",
"    /**",
"     * @remarks",
"     * Returns all components that are both present on this item",
"     * stack and supported by the API.",
"     *",
"     */",
"    getComponents(): ItemComponent[];",
"    /**",
"     * @remarks",
"     * Returns a property value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @returns",
"     * Returns the value for the property, or undefined if the",
"     * property has not been set.",
"     */",
"    getDynamicProperty(identifier: string): boolean | number | string | Vector3 | undefined;",
"    /**",
"     * @remarks",
"     * Returns the available set of dynamic property identifiers",
"     * that have been used on this entity.",
"     *",
"     * @returns",
"     * A string array of the dynamic properties set on this entity.",
"     */",
"    getDynamicPropertyIds(): string[];",
"    /**",
"     * @remarks",
"     * Returns the total size, in bytes, of all the dynamic",
"     * properties that are currently stored for this entity. This",
"     * includes the size of both the key and the value.  This can",
"     * be useful for diagnosing performance warning signs - if, for",
"     * example, an entity has many megabytes of associated dynamic",
"     * properties, it may be slow to load on various devices.",
"     *",
"     */",
"    getDynamicPropertyTotalByteCount(): number;",
"    /**",
"     * @remarks",
"     * Returns the lore value - a secondary display string - for an",
"     * ItemStack.",
"     *",
"     * @returns",
"     * An array of lore lines. If the item does not have lore,",
"     * returns an empty array.",
"     */",
"    getLore(): string[];",
"    /**",
"     * @remarks",
"     * Returns a set of tags associated with this item stack.",
"     *",
"     */",
"    getTags(): string[];",
"    /**",
"     * @remarks",
"     * Returns true if the specified component is present on this",
"     * item stack.",
"     *",
"     * @param componentId",
"     * The identifier of the component (e.g., 'minecraft:food') to",
"     * retrieve. If no namespace prefix is specified, 'minecraft:'",
"     * is assumed.",
"     */",
"    hasComponent(componentId: string): boolean;",
"    /**",
"     * @remarks",
"     * Checks whether this item stack has a particular tag",
"     * associated with it.",
"     *",
"     * @param tag",
"     * Tag to search for.",
"     * @returns",
"     * True if the Item Stack has the tag associated with it, else",
"     * false.",
"     */",
"    hasTag(tag: string): boolean;",
"    /**",
"     * @remarks",
"     * Returns whether this item stack can be stacked with the",
"     * given `itemStack`. This is determined by comparing the item",
"     * type and any custom data and properties associated with the",
"     * item stacks. The amount of each item stack is not taken into",
"     * consideration, but for non-stackable items this will always",
"     * return false.",
"     *",
"     * @param itemStack",
"     * ItemStack to check stacking compatibility with.",
"     * @returns",
"     * True if the Item Stack is stackable with the itemStack",
"     * passed in. False for non-stackable items.",
"     */",
"    isStackableWith(itemStack: ItemStack): boolean;",
"    /**",
"     * @remarks",
"     * Version safe way of checking if an item matches.",
"     *",
"     * @param itemName",
"     * Identifier of the item.",
"     * @param states",
"     *  Applicable only for blocks. An optional set of states to",
"     * compare against. If states is not specified, matches checks",
"     * against the set of types more broadly.",
"     * @returns",
"     * Returns a boolean whether the specified item matches.",
"     */",
"    matches(itemName: string, states?: Record<string, boolean | number | string>): boolean;",
"    /**",
"     * @remarks",
"     * The list of block types this item can break in Adventure",
"     * mode. The block names are displayed in the item's tooltip.",
"     * Setting the value to undefined will clear the list.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockIdentifiers",
"     * String list of block types that the item can destroy.",
"     * @throws",
"     * Throws if any of the provided block identifiers are invalid.",
"     * @example giveDestroyRestrictedPickaxe.ts",
"     * ```typescript",
"     * import { world, ItemStack, EntityInventoryComponent, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function giveDestroyRestrictedPickaxe(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   for (const player of world.getAllPlayers()) {",
"     *     const specialPickaxe = new ItemStack(MinecraftItemTypes.DiamondPickaxe);",
"     *     specialPickaxe.setCanDestroy([MinecraftItemTypes.Cobblestone, MinecraftItemTypes.Obsidian]);",
"     *",
"     *     const inventory = player.getComponent('inventory') as EntityInventoryComponent;",
"     *     if (inventory === undefined || inventory.container === undefined) {",
"     *       return;",
"     *     }",
"     *",
"     *     inventory.container.addItem(specialPickaxe);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    setCanDestroy(blockIdentifiers?: string[]): void;",
"    /**",
"     * @remarks",
"     * The list of block types this item can be placed on in",
"     * Adventure mode. This is only applicable to block items. The",
"     * block names are displayed in the item's tooltip. Setting the",
"     * value to undefined will clear the list.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockIdentifiers",
"     * String list of block types that the item can be placed on.",
"     * @throws",
"     * Throws if any of the provided block identifiers are invalid.",
"     * @example givePlaceRestrictedGoldBlock.ts",
"     * ```typescript",
"     * import { world, ItemStack, EntityInventoryComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function givePlaceRestrictedGoldBlock(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   for (const player of world.getAllPlayers()) {",
"     *     const specialGoldBlock = new ItemStack(MinecraftItemTypes.GoldBlock);",
"     *     specialGoldBlock.setCanPlaceOn([MinecraftItemTypes.GrassBlock, MinecraftItemTypes.Dirt]);",
"     *",
"     *     const inventory = player.getComponent(EntityComponentTypes.Inventory) as EntityInventoryComponent;",
"     *     if (inventory === undefined || inventory.container === undefined) {",
"     *       return;",
"     *     }",
"     *",
"     *     inventory.container.addItem(specialGoldBlock);",
"     *   }",
"     * }",
"     * ```",
"     */",
"    setCanPlaceOn(blockIdentifiers?: string[]): void;",
"    /**",
"     * @remarks",
"     * Sets a specified property to a value. Note: This function",
"     * only works with non-stackable items.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @param value",
"     * Data value of the property to set.",
"     * @throws",
"     * Throws if the item stack is stackable.",
"     */",
"    setDynamicProperty(identifier: string, value?: boolean | number | string | Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets the lore value - a secondary display string - for an",
"     * ItemStack. The lore list is cleared if set to an empty",
"     * string or undefined.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param loreList",
"     * List of lore lines. Each element in the list represents a",
"     * new line. The maximum lore line count is 20. The maximum",
"     * lore line length is 50 characters.",
"     * @throws This function can throw errors.",
"     * @example diamondAwesomeSword.ts",
"     * ```typescript",
"     * import { EntityComponentTypes, ItemStack, Player } from '@minecraft/server';",
"     * import { MinecraftItemTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function giveAwesomeSword(player: Player) {",
"     *     const diamondAwesomeSword = new ItemStack(MinecraftItemTypes.DiamondSword, 1);",
"     *     diamondAwesomeSword.setLore([",
"     *         '§c§lDiamond Sword of Awesome§r',",
"     *          '+10 coolness', '§p+4 shiny§r'",
"     *     ]);",
"     *",
"     *     // hover over/select the item in your inventory to see the lore.",
"     *     const inventory = player.getComponent(EntityComponentTypes.Inventory);",
"     *     if (inventory === undefined || inventory.container === undefined) {",
"     *         return;",
"     *     }",
"     *",
"     *     inventory.container.setItem(0, diamondAwesomeSword);",
"     * }",
"     * ```",
"     */",
"    setLore(loreList?: string[]): void;",
"}",
"/**",
" * Contains information related to a chargeable item starting",
" * to be charged.",
" */",
"export class ItemStartUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The impacted item stack that is starting to be charged.",
"     *",
"     */",
"    readonly itemStack: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"    /**",
"     * @remarks",
"     * Returns the time, in ticks, for the remaining duration left",
"     * before the charge completes its cycle.",
"     *",
"     */",
"    readonly useDuration: number;",
"}",
"/**",
" * Manages callbacks that are connected to the start of",
" * charging for a chargeable item.",
" */",
"export class ItemStartUseAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a chargeable item",
"     * starts charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemStartUseAfterEvent) => void): (arg0: ItemStartUseAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a chargeable item",
"     * starts charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemStartUseAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to an item being used on a",
" * block. This event fires when a player presses the the Use",
" * Item / Place Block button to successfully use an item or",
" * place a block. Fires for the first block that is interacted",
" * with when performing a build action. Note: This event cannot",
" * be used with Hoe or Axe items.",
" */",
"export class ItemStartUseOnAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block that the item is used on.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The face of the block that an item is being used on.",
"     *",
"     */",
"    readonly blockFace: Direction;",
"    /**",
"     * @remarks",
"     * The impacted item stack that is starting to be used. Can be",
"     * undefined in some gameplay scenarios like pushing a button",
"     * with an empty hand.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"}",
"/**",
" * Manages callbacks that are connected to an item starting",
" * being used on a block event.",
" */",
"export class ItemStartUseOnAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an item is used on",
"     * a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemStartUseOnAfterEvent) => void): (arg0: ItemStartUseOnAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an item is used on",
"     * a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemStartUseOnAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to a chargeable item has",
" * finished an items use cycle, or when the player has released",
" * the use action with the item.",
" */",
"export class ItemStopUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The impacted item stack that is stopping being charged.",
"     * ItemStopUseAfterEvent can be called when teleporting to a",
"     * different dimension and this can be undefined.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"    /**",
"     * @remarks",
"     * Returns the time, in ticks, for the remaining duration left",
"     * before the charge completes its cycle.",
"     *",
"     */",
"    readonly useDuration: number;",
"}",
"/**",
" * Manages callbacks that are connected to the stopping of",
" * charging for an item that has a registered",
" * minecraft:chargeable component.",
" */",
"export class ItemStopUseAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a chargeable item",
"     * stops charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemStopUseAfterEvent) => void): (arg0: ItemStopUseAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a chargeable item",
"     * stops charging.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemStopUseAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to an item that has stopped",
" * being used on a block. This event fires when a player",
" * successfully uses an item or places a block by pressing the",
" * Use Item / Place Block button. If multiple blocks are",
" * placed, this event will only occur once at the beginning of",
" * the block placement. Note: This event cannot be used with",
" * Hoe or Axe items.",
" */",
"export class ItemStopUseOnAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block that the item is used on.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The impacted item stack that is being used on a block.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"}",
"/**",
" * Manages callbacks that are connected to an item stops used",
" * on a block event.",
" */",
"export class ItemStopUseOnAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an item stops being",
"     * used on a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemStopUseOnAfterEvent) => void): (arg0: ItemStopUseOnAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an item is used on",
"     * a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemStopUseOnAfterEvent) => void): void;",
"}",
"/**",
" * Represents the type of an item - for example, Wool.",
" */",
"export class ItemType {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the identifier of the item type - for example,",
"     * 'minecraft:apple'.",
"     *",
"     */",
"    readonly id: string;",
"}",
"/**",
" * Returns the set of item types registered within Minecraft.",
" */",
"export class ItemTypes {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns a specific item type, if available within Minecraft.",
"     *",
"     */",
"    static get(itemId: string): ItemType | undefined;",
"    /**",
"     * @remarks",
"     * Retrieves all available item types registered within",
"     * Minecraft.",
"     *",
"     */",
"    static getAll(): ItemType[];",
"}",
"/**",
" * Contains information related to an item being used on a",
" * block. This event fires when an item used by a player",
" * successfully triggers an entity interaction.",
" */",
"export class ItemUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The impacted item stack that is being used.",
"     *",
"     */",
"    itemStack: ItemStack;",
"    /**",
"     * @remarks",
"     * Returns the source entity that triggered this item event.",
"     *",
"     */",
"    readonly source: Player;",
"}",
"/**",
" * Manages callbacks that are connected to an item use event.",
" */",
"export class ItemUseAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when an item is used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemUseAfterEvent) => void): (arg0: ItemUseAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an item is used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemUseAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to an item being used.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemUseBeforeEvent extends ItemUseAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true, this will cancel the item use behavior.",
"     *",
"     */",
"    cancel: boolean;",
"}",
"/**",
" * Manages callbacks that fire before an item is used.",
" */",
"export class ItemUseBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before an item is used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ItemUseBeforeEvent) => void): (arg0: ItemUseBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before an item is used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ItemUseBeforeEvent) => void): void;",
"}",
"/**",
" * Contains information regarding the use of an item on a",
" * block.",
" */",
"export class ItemUseOnEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block impacted by this event.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The face of the block that the item was used on.",
"     *",
"     */",
"    readonly blockFace: Direction;",
"    /**",
"     * @remarks",
"     * Location relative to the bottom north-west corner of the",
"     * block that the item was used on.",
"     *",
"     */",
"    readonly faceLocation: Vector3;",
"    /**",
"     * @remarks",
"     * The item stack used on the block.",
"     *",
"     */",
"    readonly itemStack: ItemStack;",
"}",
"/**",
" * Contains information related to changes to a lever",
" * activating or deactivating.",
" * @example leverActionEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, LeverActionAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function leverActionEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a lever",
" *   const cobblestone = targetLocation.dimension.getBlock(targetLocation);",
" *   const lever = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 1,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   if (cobblestone === undefined || lever === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   cobblestone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Cobblestone));",
" *   lever.setPermutation(",
" *     BlockPermutation.resolve(MinecraftBlockTypes.Lever).withState('lever_direction', 'up_north_south')",
" *   );",
" *",
" *   world.afterEvents.leverAction.subscribe((leverActionEvent: LeverActionAfterEvent) => {",
" *     const eventLoc = leverActionEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y + 1 && eventLoc.z === targetLocation.z) {",
" *       log('Lever activate event at tick ' + system.currentTick);",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class LeverActionAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * True if the lever is activated (that is, transmitting",
"     * power).",
"     *",
"     */",
"    readonly isPowered: boolean;",
"    /**",
"     * @remarks",
"     * Optional player that triggered the lever activation.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to lever moves",
" * (activates or deactivates).",
" * @example leverActionEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, LeverActionAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function leverActionEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a lever",
" *   const cobblestone = targetLocation.dimension.getBlock(targetLocation);",
" *   const lever = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 1,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   if (cobblestone === undefined || lever === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   cobblestone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Cobblestone));",
" *   lever.setPermutation(",
" *     BlockPermutation.resolve(MinecraftBlockTypes.Lever).withState('lever_direction', 'up_north_south')",
" *   );",
" *",
" *   world.afterEvents.leverAction.subscribe((leverActionEvent: LeverActionAfterEvent) => {",
" *     const eventLoc = leverActionEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y + 1 && eventLoc.z === targetLocation.z) {",
" *       log('Lever activate event at tick ' + system.currentTick);",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"export class LeverActionAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a lever is moved",
"     * (activates or deactivates).",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: LeverActionAfterEvent) => void): (arg0: LeverActionAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a lever is moved",
"     * (activates or deactivates).",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: LeverActionAfterEvent) => void): void;",
"}",
"/**",
" * Volume composed of an unordered container of unique block",
" * locations.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ListBlockVolume extends BlockVolumeBase {",
"    /**",
"     * @remarks",
"     * Creates a new instance of ListBlockVolume.",
"     *",
"     * @param locations",
"     * Initial array of block locations that ListBlockVolume will",
"     * be constructed with.",
"     */",
"    constructor(locations: Vector3[]);",
"    /**",
"     * @remarks",
"     * Insert block locations into container.",
"     *",
"     * @param locations",
"     * Array of block locations to be inserted into container.",
"     */",
"    add(locations: Vector3[]): void;",
"    /**",
"     * @remarks",
"     * Remove block locations from container.",
"     *",
"     * @param locations",
"     * Array of block locations to be removed from container.",
"     */",
"    remove(locations: Vector3[]): void;",
"}",
"/**",
" * Contains a set of additional variable values for further",
" * defining how rendering and animations function.",
" */",
"export class MolangVariableMap {",
"    /**",
"     * @remarks",
"     * Adds the following variables to Molang:",
"     * - `<variable_name>.r` - Red color value [0-1]",
"     * - `<variable_name>.g` - Green color value [0-1]",
"     * - `<variable_name>.b` - Blue color value [0-1]",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setColorRGB(variableName: string, color: RGB): void;",
"    /**",
"     * @remarks",
"     * Adds the following variables to Molang:",
"     * - `<variable_name>.r` - Red color value [0-1]",
"     * - `<variable_name>.g` - Green color value [0-1]",
"     * - `<variable_name>.b` - Blue color value [0-1]",
"     * - `<variable_name>.a` - Alpha (transparency) color value",
"     * [0-1]",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setColorRGBA(variableName: string, color: RGBA): void;",
"    /**",
"     * @remarks",
"     * Sets a numeric (decimal) value within the Molang variable",
"     * map.",
"     *",
"     * @param variableName",
"     * Name of the float-based number to set.",
"     * @param number",
"     * Value for the Molang-based variable to set.",
"     * @throws This function can throw errors.",
"     */",
"    setFloat(variableName: string, number: number): void;",
"    /**",
"     * @remarks",
"     * Adds the following variables to Molang:",
"     * - `<variable_name>.speed` - Speed number provided",
"     * - `<variable_name>.direction_x` - X value from the {@link",
"     * Vector3} provided",
"     * - `<variable_name>.direction_y` - Y value from the {@link",
"     * Vector3} provided",
"     * - `<variable_name>.direction_z` - Z value from the {@link",
"     * Vector3} provided",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setSpeedAndDirection(variableName: string, speed: number, direction: Vector3): void;",
"    /**",
"     * @remarks",
"     * Adds the following variables to Molang:",
"     * - `<variable_name>.x` - X value from the {@link Vector3}",
"     * provided",
"     * - `<variable_name>.y` - Y value from the {@link Vector3}",
"     * provided",
"     * - `<variable_name>.z` - Z value from the {@link Vector3}",
"     * provided",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setVector3(variableName: string, vector: Vector3): void;",
"}",
"/**",
" * Contains information related to changes to a piston",
" * expanding or retracting.",
" * @example pistonAfterEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, BlockPistonState, PistonActivateAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function pistonAfterEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a couple of piston blocks",
" *   const piston = targetLocation.dimension.getBlock(targetLocation);",
" *   const button = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y + 1,",
" *     z: targetLocation.z,",
" *   });",
" *",
" *   if (piston === undefined || button === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   piston.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Piston).withState('facing_direction', 3));",
" *   button.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.AcaciaButton).withState('facing_direction', 1));",
" *",
" *   world.afterEvents.pistonActivate.subscribe((pistonEvent: PistonActivateAfterEvent) => {",
" *     const eventLoc = pistonEvent.piston.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y && eventLoc.z === targetLocation.z) {",
" *       log(",
" *         'Piston event at ' +",
" *           system.currentTick +",
" *           (pistonEvent.piston.isMoving ? ' Moving' : '') +",
" *           (pistonEvent.piston.state === BlockPistonState.Expanding ? ' Expanding' : '') +",
" *           (pistonEvent.piston.state === BlockPistonState.Expanded ? ' Expanded' : '') +",
" *           (pistonEvent.piston.state === BlockPistonState.Retracting ? ' Retracting' : '') +",
" *           (pistonEvent.piston.state === BlockPistonState.Retracted ? ' Retracted' : '')",
" *       );",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PistonActivateAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * True if the piston is the process of expanding.",
"     *",
"     */",
"    readonly isExpanding: boolean;",
"    /**",
"     * @remarks",
"     * Contains additional properties and details of the piston.",
"     *",
"     */",
"    readonly piston: BlockPistonComponent;",
"}",
"/**",
" * Manages callbacks that are connected to piston activations.",
" */",
"export class PistonActivateAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @example pistonAfterEvent.ts",
"     * ```typescript",
"     * import { world, system, BlockPermutation, BlockPistonState, PistonActivateAfterEvent, DimensionLocation } from '@minecraft/server';",
"     * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function pistonAfterEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   // set up a couple of piston blocks",
"     *   const piston = targetLocation.dimension.getBlock(targetLocation);",
"     *   const button = targetLocation.dimension.getBlock({",
"     *     x: targetLocation.x,",
"     *     y: targetLocation.y + 1,",
"     *     z: targetLocation.z,",
"     *   });",
"     *",
"     *   if (piston === undefined || button === undefined) {",
"     *     log('Could not find block at location.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   piston.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.Piston).withState('facing_direction', 3));",
"     *   button.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.AcaciaButton).withState('facing_direction', 1));",
"     *",
"     *   world.afterEvents.pistonActivate.subscribe((pistonEvent: PistonActivateAfterEvent) => {",
"     *     const eventLoc = pistonEvent.piston.block.location;",
"     *",
"     *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y && eventLoc.z === targetLocation.z) {",
"     *       log(",
"     *         'Piston event at ' +",
"     *           system.currentTick +",
"     *           (pistonEvent.piston.isMoving ? ' Moving' : '') +",
"     *           (pistonEvent.piston.state === BlockPistonState.Expanding ? ' Expanding' : '') +",
"     *           (pistonEvent.piston.state === BlockPistonState.Expanded ? ' Expanded' : '') +",
"     *           (pistonEvent.piston.state === BlockPistonState.Retracting ? ' Retracting' : '') +",
"     *           (pistonEvent.piston.state === BlockPistonState.Retracted ? ' Retracted' : '')",
"     *       );",
"     *     }",
"     *   });",
"     * }",
"     * ```",
"     */",
"    subscribe(callback: (arg0: PistonActivateAfterEvent) => void): (arg0: PistonActivateAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a piston expands",
"     * or retracts.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PistonActivateAfterEvent) => void): void;",
"}",
"/**",
" * Represents a player within the world.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class Player extends Entity {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The player's Camera.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly camera: Camera;",
"    /**",
"     * @remarks",
"     * Contains the player's device information.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly clientSystemInfo: ClientSystemInfo;",
"    /**",
"     * @remarks",
"     * Gets the current graphics mode of the player's client. This",
"     * can be changed in the Video section of the settings menu",
"     * based on what hardware is available.",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    readonly graphicsMode: GraphicsMode;",
"    /**",
"     * @remarks",
"     * Contains the player's input information.",
"     *",
"     */",
"    readonly inputInfo: InputInfo;",
"    /**",
"     * @remarks",
"     * Input permissions of the player.",
"     *",
"     */",
"    readonly inputPermissions: PlayerInputPermissions;",
"    /**",
"     * @remarks",
"     * If true, the player is currently emoting.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isEmoting: boolean;",
"    /**",
"     * @remarks",
"     * Whether the player is flying. For example, in Creative or",
"     * Spectator mode.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isFlying: boolean;",
"    /**",
"     * @remarks",
"     * Whether the player is gliding with Elytra.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isGliding: boolean;",
"    /**",
"     * @remarks",
"     * Whether the player is jumping. This will remain true while",
"     * the player is holding the jump action.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isJumping: boolean;",
"    /**",
"     * @remarks",
"     * The current overall level for the player, based on their",
"     * experience.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly level: number;",
"    /**",
"     * @remarks",
"     * Name of the player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly name: string;",
"    /**",
"     * @remarks",
"     * Contains methods for manipulating the on-screen display of a",
"     * Player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly onScreenDisplay: ScreenDisplay;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    selectedSlotIndex: number;",
"    /**",
"     * @remarks",
"     * The overall total set of experience needed to achieve the",
"     * next level for a player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly totalXpNeededForNextLevel: number;",
"    /**",
"     * @remarks",
"     * The current set of experience achieved for the player.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly xpEarnedAtCurrentLevel: number;",
"    /**",
"     * @remarks",
"     * Adds/removes experience to/from the Player and returns the",
"     * current experience of the Player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param amount",
"     * Amount of experience to add. Note that this can be negative.",
"     * Min/max bounds at -2^24 ~ 2^24",
"     * @returns",
"     * Returns the current experience of the Player.",
"     * @throws This function can throw errors.",
"     */",
"    addExperience(amount: number): number;",
"    /**",
"     * @remarks",
"     * Adds/removes level to/from the Player and returns the",
"     * current level of the Player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param amount",
"     * Amount to add to the player. Min/max bounds at -2^24 ~ 2^24",
"     * @returns",
"     * Returns the current level of the Player.",
"     * @throws This function can throw errors.",
"     */",
"    addLevels(amount: number): number;",
"    /**",
"     * @remarks",
"     * For this player, removes all overrides of any Entity",
"     * Properties on the target Entity. This change is not applied",
"     * until the next tick and will not apply to other players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param targetEntity",
"     * The Entity whose Entity Property overrides are being",
"     * cleared.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     */",
"    clearPropertyOverridesForEntity(targetEntity: Entity): void;",
"    /**",
"     * @remarks",
"     * Retrieves the active gamemode for this player, if specified.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getGameMode(): GameMode;",
"    /**",
"     * @remarks",
"     * Gets the current item cooldown time for a particular",
"     * cooldown category.",
"     *",
"     * @param cooldownCategory",
"     * Specifies the cooldown category to retrieve the current",
"     * cooldown for.",
"     * @throws This function can throw errors.",
"     */",
"    getItemCooldown(cooldownCategory: string): number;",
"    /**",
"     * @remarks",
"     * Gets the current spawn point of the player.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getSpawnPoint(): DimensionLocation | undefined;",
"    /**",
"     * @remarks",
"     *  Gets the total experience of the Player.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getTotalXp(): number;",
"    /**",
"     * @remarks",
"     * Plays a music track that only this particular player can",
"     * hear.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param trackId",
"     * Identifier of the music track to play.",
"     * @param musicOptions",
"     * Additional options for the music track.",
"     * @throws This function can throw errors.",
"     */",
"    playMusic(trackId: string, musicOptions?: MusicOptions): void;",
"    /**",
"     * @remarks",
"     * Plays a sound that only this particular player can hear.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param soundOptions",
"     * Additional optional options for the sound.",
"     * @throws This function can throw errors.",
"     * @example playMusicAndSound.ts",
"     * ```typescript",
"     * import { world, MusicOptions, WorldSoundOptions, PlayerSoundOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function playMusicAndSound(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   const musicOptions: MusicOptions = {",
"     *     fade: 0.5,",
"     *     loop: true,",
"     *     volume: 1.0,",
"     *   };",
"     *   world.playMusic('music.menu', musicOptions);",
"     *",
"     *   const worldSoundOptions: WorldSoundOptions = {",
"     *     pitch: 0.5,",
"     *     volume: 4.0,",
"     *   };",
"     *   world.playSound('ambient.weather.thunder', targetLocation, worldSoundOptions);",
"     *",
"     *   const playerSoundOptions: PlayerSoundOptions = {",
"     *     pitch: 1.0,",
"     *     volume: 1.0,",
"     *   };",
"     *",
"     *   players[0].playSound('bucket.fill_water', playerSoundOptions);",
"     * }",
"     * ```",
"     */",
"    playSound(soundId: string, soundOptions?: PlayerSoundOptions): void;",
"    /**",
"     * @remarks",
"     * Queues an additional music track that only this particular",
"     * player can hear. If a track is not playing, a music track",
"     * will play.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param trackId",
"     * Identifier of the music track to play.",
"     * @param musicOptions",
"     * Additional options for the music track.",
"     * @throws",
"     * An error will be thrown if volume is less than 0.0.",
"     * An error will be thrown if fade is less than 0.0.",
"     *",
"     */",
"    queueMusic(trackId: string, musicOptions?: MusicOptions): void;",
"    /**",
"     * @remarks",
"     * For this player, removes the override on an Entity Property.",
"     * This change is not applied until the next tick and will not",
"     * apply to other players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param targetEntity",
"     * The Entity whose Entity Property override is being removed.",
"     * @param identifier",
"     * The Entity Property identifier.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     * Throws if an invalid identifier is provided.",
"     * Throws if the provided value type does not match the",
"     * property type.",
"     */",
"    removePropertyOverrideForEntity(targetEntity: Entity, identifier: string): void;",
"    /**",
"     * @remarks",
"     * Resets the level of the player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    resetLevel(): void;",
"    /**",
"     * @remarks",
"     * Sends a message to the player.",
"     *",
"     * @param message",
"     * The message to be displayed.",
"     * @throws",
"     * This method can throw if the provided {@link RawMessage} is",
"     * in an invalid format. For example, if an empty `name` string",
"     * is provided to `score`.",
"     *",
"     * {@link InvalidEntityError}",
"     *",
"     * {@link RawMessageError}",
"     * @example nestedTranslation.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function nestedTranslation(targetLocation: DimensionLocation) {",
"     *   // Displays 'Apple or Coal'",
"     *   const rawMessage = {",
"     *     translate: 'accessibility.list.or.two',",
"     *     with: { rawtext: [{ translate: 'item.apple.name' }, { translate: 'item.coal.name' }] },",
"     *   };",
"     *   world.sendMessage(rawMessage);",
"     * }",
"     * ```",
"     * @example scoreWildcard.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function scoreWildcard(targetLocation: DimensionLocation) {",
"     *   // Displays the player's score for objective 'obj'. Each player will see their own score.",
"     *   const rawMessage = { score: { name: '*', objective: 'obj' } };",
"     *   world.sendMessage(rawMessage);",
"     * }",
"     * ```",
"     * @example sendBasicMessage.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function sendBasicMessage(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   players[0].sendMessage('Hello World!');",
"     * }",
"     * ```",
"     * @example sendPlayerMessages.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function sendPlayerMessages(targetLocation: DimensionLocation) {",
"     *   for (const player of world.getAllPlayers()) {",
"     *     // Displays 'First or Second'",
"     *     const rawMessage = { translate: 'accessibility.list.or.two', with: ['First', 'Second'] };",
"     *     player.sendMessage(rawMessage);",
"     *",
"     *     // Displays 'Hello, world!'",
"     *     player.sendMessage('Hello, world!');",
"     *",
"     *     // Displays 'Welcome, Amazing Player 1!'",
"     *     player.sendMessage({ translate: 'authentication.welcome', with: ['Amazing Player 1'] });",
"     *",
"     *     // Displays the player's score for objective 'obj'. Each player will see their own score.",
"     *     const rawMessageWithScore = { score: { name: '*', objective: 'obj' } };",
"     *     player.sendMessage(rawMessageWithScore);",
"     *",
"     *     // Displays 'Apple or Coal'",
"     *     const rawMessageWithNestedTranslations = {",
"     *       translate: 'accessibility.list.or.two',",
"     *       with: { rawtext: [{ translate: 'item.apple.name' }, { translate: 'item.coal.name' }] },",
"     *     };",
"     *     player.sendMessage(rawMessageWithNestedTranslations);",
"     *   }",
"     * }",
"     * ```",
"     * @example sendTranslatedMessage.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function sendTranslatedMessage(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   players[0].sendMessage({ translate: 'authentication.welcome', with: ['Amazing Player 1'] });",
"     * }",
"     * ```",
"     */",
"    sendMessage(message: (RawMessage | string)[] | RawMessage | string): void;",
"    /**",
"     * @remarks",
"     * Sets a gamemode override for this player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param gameMode",
"     * Active gamemode.",
"     * @throws This function can throw errors.",
"     */",
"    setGameMode(gameMode?: GameMode): void;",
"    /**",
"     * @remarks",
"     * For this player, overrides an Entity Property on the target",
"     * Entity to the provided value. This property must be client",
"     * synced. This change is not applied until the next tick and",
"     * will not apply to other players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param targetEntity",
"     * The Entity whose Entity Property is being overriden.",
"     * @param identifier",
"     * The Entity Property identifier.",
"     * @param value",
"     * The override value. The provided type must be compatible",
"     * with the type specified in the entity's definition.",
"     * @throws",
"     * Throws if the entity is invalid.",
"     * Throws if an invalid identifier is provided.",
"     * Throws if the provided value type does not match the",
"     * property type.",
"     * Throws if the provided value is outside the expected range",
"     * (int, float properties).",
"     * Throws if the provided string value does not match the set",
"     * of accepted enum values (enum properties)",
"     */",
"    setPropertyOverrideForEntity(targetEntity: Entity, identifier: string, value: boolean | number | string): void;",
"    /**",
"     * @remarks",
"     * Sets the current starting spawn point for this particular",
"     * player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setSpawnPoint(spawnPoint?: DimensionLocation): void;",
"    /**",
"     * @remarks",
"     * Creates a new particle emitter at a specified location in",
"     * the world. Only visible to the target player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param effectName",
"     * Identifier of the particle to create.",
"     * @param location",
"     * The location at which to create the particle emitter.",
"     * @param molangVariables",
"     * A set of optional, customizable variables that can be",
"     * adjusted for this particle.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationInUnloadedChunkError}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     * @example spawnParticle.ts",
"     * ```typescript",
"     * import { world, MolangVariableMap, Vector3 } from '@minecraft/server';",
"     *",
"     * world.afterEvents.playerSpawn.subscribe(event => {",
"     *     const targetLocation = event.player.location;",
"     *     for (let i = 0; i < 100; i++) {",
"     *         const molang = new MolangVariableMap();",
"     *",
"     *         molang.setColorRGB('variable.color', {",
"     *             red: Math.random(),",
"     *             green: Math.random(),",
"     *             blue: Math.random()",
"     *         });",
"     *",
"     *         const newLocation: Vector3 = {",
"     *             x: targetLocation.x + Math.floor(Math.random() * 8) - 4,",
"     *             y: targetLocation.y + Math.floor(Math.random() * 8) - 4,",
"     *             z: targetLocation.z + Math.floor(Math.random() * 8) - 4,",
"     *         };",
"     *         event.player.spawnParticle('minecraft:colored_flame_particle', newLocation, molang);",
"     *     }",
"     * });",
"     * ```",
"     */",
"    spawnParticle(effectName: string, location: Vector3, molangVariables?: MolangVariableMap): void;",
"    /**",
"     * @remarks",
"     * Sets the item cooldown time for a particular cooldown",
"     * category.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param cooldownCategory",
"     * Specifies the cooldown category to retrieve the current",
"     * cooldown for.",
"     * @param tickDuration",
"     * Duration in ticks of the item cooldown.",
"     * @throws This function can throw errors.",
"     */",
"    startItemCooldown(cooldownCategory: string, tickDuration: number): void;",
"    /**",
"     * @remarks",
"     * Stops any music tracks from playing for this particular",
"     * player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopMusic(): void;",
"}",
"/**",
" * Contains information regarding an event after a player",
" * breaks a block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PlayerBreakBlockAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns permutation information about this block before it",
"     * was broken.",
"     *",
"     */",
"    readonly brokenBlockPermutation: BlockPermutation;",
"    /**",
"     * @remarks",
"     * The item stack that was used to break the block after the",
"     * block was broken, or undefined if empty hand.",
"     *",
"     */",
"    readonly itemStackAfterBreak?: ItemStack;",
"    /**",
"     * @remarks",
"     * The item stack that was used to break the block before the",
"     * block was broken, or undefined if empty hand.",
"     *",
"     */",
"    readonly itemStackBeforeBreak?: ItemStack;",
"    /**",
"     * @remarks",
"     * Player that broke the block for this event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to when a player breaks",
" * a block.",
" */",
"export class PlayerBreakBlockAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a block is broken",
"     * by a player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerBreakBlockAfterEvent) => void,",
"        options?: BlockEventOptions,",
"    ): (arg0: PlayerBreakBlockAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a player breaks a",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerBreakBlockAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event before a player",
" * breaks a block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PlayerBreakBlockBeforeEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true, cancels the block break event.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The item stack that is being used to break the block, or",
"     * undefined if empty hand.",
"     *",
"     */",
"    itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Player breaking the block for this event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to before a player",
" * breaks a block.",
" */",
"export class PlayerBreakBlockBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before a block is broken",
"     * by a player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerBreakBlockBeforeEvent) => void,",
"        options?: BlockEventOptions,",
"    ): (arg0: PlayerBreakBlockBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before a player breaks",
"     * a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerBreakBlockBeforeEvent) => void): void;",
"}",
"/**",
" * Event data for when a player presses a button.",
" */",
"export class PlayerButtonInputAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The button this event is about.",
"     *",
"     */",
"    readonly button: InputButton;",
"    /**",
"     * @remarks",
"     * The state that this button transferred to.",
"     *",
"     */",
"    readonly newButtonState: ButtonState;",
"    /**",
"     * @remarks",
"     * The player that performed the input event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to player inputs.",
" */",
"export class PlayerButtonInputAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after the player",
"     * performs an input.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerButtonInputAfterEvent) => void,",
"        options?: InputEventOptions,",
"    ): (arg0: PlayerButtonInputAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after the player",
"     * performs an input.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerButtonInputAfterEvent) => void): void;",
"}",
"/**",
" * Represents the players cursor inventory. Used when moving",
" * items between between containers in the inventory UI. Not",
" * used with touch controls.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PlayerCursorInventoryComponent extends EntityComponent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The ItemStack currently in the players cursor inventory.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly item?: ItemStack;",
"    static readonly componentId = 'minecraft:cursor_inventory';",
"    /**",
"     * @remarks",
"     * Clears the players cursor inventory.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    clear(): void;",
"}",
"/**",
" * Contains information related to changes to a player's",
" * dimension having been changed.",
" */",
"export class PlayerDimensionChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The dimension the player is changing from.",
"     *",
"     */",
"    readonly fromDimension: Dimension;",
"    /**",
"     * @remarks",
"     * The location the player was at before changing dimensions.",
"     *",
"     */",
"    readonly fromLocation: Vector3;",
"    /**",
"     * @remarks",
"     * Handle to the player that is changing dimensions.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The dimension that the player is changing to.",
"     *",
"     */",
"    readonly toDimension: Dimension;",
"    /**",
"     * @remarks",
"     * The location the player will spawn to after changing",
"     * dimensions.",
"     *",
"     */",
"    readonly toLocation: Vector3;",
"}",
"/**",
" * Manages callbacks that are connected to successful player",
" * dimension changes.",
" */",
"export class PlayerDimensionChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Subscribes the specified callback to a player dimension",
"     * change after event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerDimensionChangeAfterEvent) => void,",
"    ): (arg0: PlayerDimensionChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes the specified callback from a player dimension",
"     * change after event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerDimensionChangeAfterEvent) => void): void;",
"}",
"export class PlayerEmoteAfterEvent {",
"    private constructor();",
"    readonly personaPieceId: string;",
"    readonly player: Player;",
"}",
"export class PlayerEmoteAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerEmoteAfterEvent) => void): (arg0: PlayerEmoteAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerEmoteAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event after a players game",
" * mode is changed.",
" */",
"export class PlayerGameModeChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The previous game mode before the change.",
"     *",
"     */",
"    readonly fromGameMode: GameMode;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The current game mode after the change.",
"     *",
"     */",
"    readonly toGameMode: GameMode;",
"}",
"/**",
" * Manages callbacks that are connected to after a players game",
" * mode is changed.",
" */",
"export class PlayerGameModeChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after a players game",
"     * mode is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerGameModeChangeAfterEvent) => void): (arg0: PlayerGameModeChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after a players game",
"     * mode is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerGameModeChangeAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event before a player",
" * interacts with an entity.",
" */",
"export class PlayerGameModeChangeBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true the game mode change will be cancelled.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The current game mode.",
"     *",
"     */",
"    readonly fromGameMode: GameMode;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The game mode being changed to.",
"     *",
"     */",
"    toGameMode: GameMode;",
"}",
"/**",
" * Manages callbacks that are connected to before a players",
" * game mode is changed.",
" */",
"export class PlayerGameModeChangeBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before a players game",
"     * mode is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerGameModeChangeBeforeEvent) => void,",
"    ): (arg0: PlayerGameModeChangeBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before a players game",
"     * mode is changed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerGameModeChangeBeforeEvent) => void): void;",
"}",
"/**",
" * Event data for when a player input mode changes.",
" */",
"export class PlayerInputModeChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The new input mode used by the player.",
"     *",
"     */",
"    readonly newInputModeUsed: InputMode;",
"    /**",
"     * @remarks",
"     * The player that had an input mode change.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The previous input mode used by the player.",
"     *",
"     */",
"    readonly previousInputModeUsed: InputMode;",
"}",
"/**",
" * Manages callbacks that are connected to player input mode.",
" */",
"export class PlayerInputModeChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after the player input",
"     * mode changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInputModeChangeAfterEvent) => void,",
"    ): (arg0: PlayerInputModeChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after the player input",
"     * mode changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInputModeChangeAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event after a players",
" * input permissions change.",
" */",
"export class PlayerInputPermissionCategoryChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The category of input permissions that have changed.",
"     *",
"     */",
"    readonly category: InputPermissionCategory;",
"    /**",
"     * @remarks",
"     * The enabled/disabled state of the players input permissions.",
"     *",
"     */",
"    readonly enabled: boolean;",
"    /**",
"     * @remarks",
"     * The player that has had their input permissions changed.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to after a players",
" * input permissions change.",
" */",
"export class PlayerInputPermissionCategoryChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after a players input",
"     * permissions change.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInputPermissionCategoryChangeAfterEvent) => void,",
"    ): (arg0: PlayerInputPermissionCategoryChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after a players input",
"     * permissions change.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInputPermissionCategoryChangeAfterEvent) => void): void;",
"}",
"/**",
" * Contains APIs to enable/disable player input permissions.",
" */",
"export class PlayerInputPermissions {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns true if an input permission is enabled.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    isPermissionCategoryEnabled(permissionCategory: InputPermissionCategory): boolean;",
"    /**",
"     * @remarks",
"     * Enable or disable an input permission. When enabled the",
"     * input will work, when disabled will not work.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setPermissionCategory(permissionCategory: InputPermissionCategory, isEnabled: boolean): void;",
"}",
"/**",
" * Contains information regarding an event after a player",
" * successfully interacts with a block.",
" */",
"export class PlayerInteractWithBlockAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The ItemStack before the interaction succeeded, or undefined",
"     * if hand is empty.",
"     *",
"     */",
"    readonly beforeItemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * The block that will be interacted with.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The face of the block that is being interacted with.",
"     *",
"     */",
"    readonly blockFace: Direction;",
"    /**",
"     * @remarks",
"     * Location relative to the bottom north-west corner of the",
"     * block where the item is placed.",
"     *",
"     */",
"    readonly faceLocation: Vector3;",
"    /**",
"     * @remarks",
"     * This value will be true if the event was triggered on",
"     * players initial interaction button press and false on events",
"     * triggered from holding the interaction button.",
"     *",
"     */",
"    readonly isFirstEvent: boolean;",
"    /**",
"     * @remarks",
"     * The ItemStack after the interaction succeeded, or undefined",
"     * if hand is empty.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to after a player",
" * interacts with a block.",
" */",
"export class PlayerInteractWithBlockAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after a player interacts",
"     * with a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInteractWithBlockAfterEvent) => void,",
"    ): (arg0: PlayerInteractWithBlockAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after a player",
"     * interacts with a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInteractWithBlockAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event before a player",
" * interacts with a block.",
" */",
"export class PlayerInteractWithBlockBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The block that will be interacted with.",
"     *",
"     */",
"    readonly block: Block;",
"    /**",
"     * @remarks",
"     * The face of the block that is being interacted with.",
"     *",
"     */",
"    readonly blockFace: Direction;",
"    /**",
"     * @remarks",
"     * If set to true the interaction will be cancelled.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * Location relative to the bottom north-west corner of the",
"     * block where the item is placed.",
"     *",
"     */",
"    readonly faceLocation: Vector3;",
"    /**",
"     * @remarks",
"     * This value will be true if the event was triggered on",
"     * players initial interaction button press and false on events",
"     * triggered from holding the interaction button.",
"     *",
"     */",
"    readonly isFirstEvent: boolean;",
"    /**",
"     * @remarks",
"     * The item stack that is being used in the interaction, or",
"     * undefined if empty hand.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to before a player",
" * interacts with a block.",
" */",
"export class PlayerInteractWithBlockBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before a player",
"     * interacts with a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInteractWithBlockBeforeEvent) => void,",
"    ): (arg0: PlayerInteractWithBlockBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before a player",
"     * interacts with a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInteractWithBlockBeforeEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event after a player",
" * successfully interacts with an entity.",
" */",
"export class PlayerInteractWithEntityAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The ItemStack before the interaction succeeded, or undefined",
"     * if hand is empty.",
"     *",
"     */",
"    readonly beforeItemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * The ItemStack after the interaction succeeded, or undefined",
"     * if hand is empty.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The entity that will be interacted with.",
"     *",
"     */",
"    readonly target: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to after a player",
" * interacts with an entity.",
" */",
"export class PlayerInteractWithEntityAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called after a player interacts",
"     * with an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInteractWithEntityAfterEvent) => void,",
"    ): (arg0: PlayerInteractWithEntityAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called after a player",
"     * interacts with an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInteractWithEntityAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event before a player",
" * interacts with an entity.",
" */",
"export class PlayerInteractWithEntityBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true the interaction will be cancelled.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The item stack that is being used in the interaction, or",
"     * undefined if empty hand.",
"     *",
"     */",
"    readonly itemStack?: ItemStack;",
"    /**",
"     * @remarks",
"     * Source Player for this event.",
"     *",
"     */",
"    readonly player: Player;",
"    /**",
"     * @remarks",
"     * The entity that will be interacted with.",
"     *",
"     */",
"    readonly target: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to before a player",
" * interacts with an entity.",
" */",
"export class PlayerInteractWithEntityBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before a player",
"     * interacts with an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerInteractWithEntityBeforeEvent) => void,",
"    ): (arg0: PlayerInteractWithEntityBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before a player",
"     * interacts with an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerInteractWithEntityBeforeEvent) => void): void;",
"}",
"/**",
" * Contains information regarding a player that has joined.",
" * See the playerSpawn event for more detailed information that",
" * could be returned after the first time a player has spawned",
" * within the game.",
" */",
"export class PlayerJoinAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Opaque string identifier of the player that joined the game.",
"     *",
"     */",
"    readonly playerId: string;",
"    /**",
"     * @remarks",
"     * Name of the player that has joined.",
"     *",
"     */",
"    readonly playerName: string;",
"}",
"/**",
" * Manages callbacks that are connected to a player joining the",
" * world.",
" */",
"export class PlayerJoinAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a player joins the",
"     * world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerJoinAfterEvent) => void): (arg0: PlayerJoinAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a player joins the",
"     * world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerJoinAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding a player that has left the",
" * world.",
" */",
"export class PlayerLeaveAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Opaque string identifier of the player that has left the",
"     * event.",
"     *",
"     */",
"    readonly playerId: string;",
"    /**",
"     * @remarks",
"     * Player that has left the world.",
"     *",
"     */",
"    readonly playerName: string;",
"}",
"/**",
" * Manages callbacks that are connected to a player leaving the",
" * world.",
" */",
"export class PlayerLeaveAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a player leaves the",
"     * world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerLeaveAfterEvent) => void): (arg0: PlayerLeaveAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a player leaves",
"     * the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerLeaveAfterEvent) => void): void;",
"}",
"/**",
" * Contains information regarding a player that is leaving the",
" * world.",
" */",
"export class PlayerLeaveBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The leaving player.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to a player leaving the",
" * world.",
" */",
"export class PlayerLeaveBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a player leaves the",
"     * world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerLeaveBeforeEvent) => void): (arg0: PlayerLeaveBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback that will be called when a player leaves",
"     * the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerLeaveBeforeEvent) => void): void;",
"}",
"/**",
" * Contains information regarding an event where a player",
" * places a block.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PlayerPlaceBlockAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Player that placed the block for this event.",
"     *",
"     */",
"    readonly player: Player;",
"}",
"/**",
" * Manages callbacks that are connected to when a block is",
" * placed by a player.",
" */",
"export class PlayerPlaceBlockAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a block is placed",
"     * by a player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PlayerPlaceBlockAfterEvent) => void,",
"        options?: BlockEventOptions,",
"    ): (arg0: PlayerPlaceBlockAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when an block is placed",
"     * by a player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerPlaceBlockAfterEvent) => void): void;",
"}",
"/**",
" * An event that contains more information about a player",
" * spawning.",
" */",
"export class PlayerSpawnAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If true, this is the initial spawn of a player after joining",
"     * the game.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    initialSpawn: boolean;",
"    /**",
"     * @remarks",
"     * Object that represents the player that joined the game.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    player: Player;",
"}",
"/**",
" * Registers an event when a player is spawned (or re-spawned",
" * after death) and fully ready within the world.",
" */",
"export class PlayerSpawnAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Registers a new event receiver for this particular type of",
"     * event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PlayerSpawnAfterEvent) => void): (arg0: PlayerSpawnAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * De-registers an event receiver for the player spawn event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PlayerSpawnAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to changes to a pressure plate",
" * pop.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PressurePlatePopAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The redstone power of the pressure plate before it was",
"     * popped.",
"     *",
"     */",
"    readonly previousRedstonePower: number;",
"    /**",
"     * @remarks",
"     * The redstone power of the pressure plate at the time of the",
"     * pop.",
"     *",
"     */",
"    readonly redstonePower: number;",
"}",
"/**",
" * Manages callbacks that are connected to when a pressure",
" * plate is popped.",
" */",
"export class PressurePlatePopAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a pressure plate is",
"     * popped.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PressurePlatePopAfterEvent) => void): (arg0: PressurePlatePopAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a pressure plate",
"     * is popped.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PressurePlatePopAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to changes to a pressure plate",
" * push.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PressurePlatePushAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The redstone power of the pressure plate before it was",
"     * pushed.",
"     *",
"     */",
"    readonly previousRedstonePower: number;",
"    /**",
"     * @remarks",
"     * The redstone power of the pressure plate at the time of the",
"     * push.",
"     *",
"     */",
"    readonly redstonePower: number;",
"    /**",
"     * @remarks",
"     * Source that triggered the pressure plate push.",
"     *",
"     */",
"    readonly source: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when a pressure",
" * plate is pushed.",
" */",
"export class PressurePlatePushAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a pressure plate is",
"     * pushed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: PressurePlatePushAfterEvent) => void): (arg0: PressurePlatePushAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a pressure plate",
"     * is pushed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PressurePlatePushAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to a projectile hitting a",
" * block.",
" */",
"export class ProjectileHitBlockAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Dimension where this projectile hit took place.",
"     *",
"     */",
"    readonly dimension: Dimension;",
"    /**",
"     * @remarks",
"     * Direction vector of the projectile as it hit a block.",
"     *",
"     */",
"    readonly hitVector: Vector3;",
"    /**",
"     * @remarks",
"     * Location where the projectile hit occurred.",
"     *",
"     */",
"    readonly location: Vector3;",
"    /**",
"     * @remarks",
"     * Entity for the projectile that hit a block.",
"     *",
"     */",
"    readonly projectile: Entity;",
"    /**",
"     * @remarks",
"     * Optional source entity that fired the projectile.",
"     *",
"     */",
"    readonly source?: Entity;",
"    /**",
"     * @remarks",
"     * Contains additional information about the block that was hit",
"     * by the projectile.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getBlockHit(): BlockHitInformation;",
"}",
"/**",
" * Manages callbacks that are connected to when a projectile",
" * hits a block.",
" */",
"export class ProjectileHitBlockAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a projectile hits a",
"     * block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ProjectileHitBlockAfterEvent) => void): (arg0: ProjectileHitBlockAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a projectile hits",
"     * a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ProjectileHitBlockAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to a projectile hitting an",
" * entity.",
" */",
"export class ProjectileHitEntityAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Dimension where this projectile hit took place.",
"     *",
"     */",
"    readonly dimension: Dimension;",
"    /**",
"     * @remarks",
"     * Direction vector of the projectile as it hit an entity.",
"     *",
"     */",
"    readonly hitVector: Vector3;",
"    /**",
"     * @remarks",
"     * Location where the projectile hit occurred.",
"     *",
"     */",
"    readonly location: Vector3;",
"    /**",
"     * @remarks",
"     * Entity for the projectile that hit an entity.",
"     *",
"     */",
"    readonly projectile: Entity;",
"    /**",
"     * @remarks",
"     * Optional source entity that fired the projectile.",
"     *",
"     */",
"    readonly source?: Entity;",
"    /**",
"     * @remarks",
"     * Contains additional information about an entity that was",
"     * hit.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getEntityHit(): EntityHitInformation;",
"}",
"/**",
" * Manages callbacks that are connected to when a projectile",
" * hits an entity.",
" */",
"export class ProjectileHitEntityAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a projectile hits",
"     * an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ProjectileHitEntityAfterEvent) => void): (arg0: ProjectileHitEntityAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a projectile hits",
"     * an entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ProjectileHitEntityAfterEvent) => void): void;",
"}",
"/**",
" * Contains objectives and participants for the scoreboard.",
" * @example updateScoreboard.ts",
" * ```typescript",
" * import { world, DisplaySlotId, ObjectiveSortOrder, DimensionLocation } from '@minecraft/server';",
" *",
" * function updateScoreboard(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const scoreboardObjectiveId = 'scoreboard_demo_objective';",
" *   const scoreboardObjectiveDisplayName = 'Demo Objective';",
" *",
" *   const players = world.getPlayers();",
" *",
" *   // Ensure a new objective.",
" *   let objective = world.scoreboard.getObjective(scoreboardObjectiveId);",
" *",
" *   if (!objective) {",
" *     objective = world.scoreboard.addObjective(scoreboardObjectiveId, scoreboardObjectiveDisplayName);",
" *   }",
" *",
" *   // get the scoreboard identity for player 0",
" *   const player0Identity = players[0].scoreboardIdentity;",
" *",
" *   if (player0Identity === undefined) {",
" *     log('Could not get a scoreboard identity for player 0.');",
" *     return -1;",
" *   }",
" *",
" *   // initialize player score to 100;",
" *   objective.setScore(player0Identity, 100);",
" *",
" *   world.scoreboard.setObjectiveAtDisplaySlot(DisplaySlotId.Sidebar, {",
" *     objective: objective,",
" *     sortOrder: ObjectiveSortOrder.Descending,",
" *   });",
" *",
" *   const playerScore = objective.getScore(player0Identity) ?? 0;",
" *",
" *   // score should now be 110.",
" *   objective.setScore(player0Identity, playerScore + 10);",
" * }",
" * ```",
" */",
"export class Scoreboard {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a new objective to the scoreboard.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     * @example updateScoreboard.ts",
"     * ```typescript",
"     * import { world, DisplaySlotId, ObjectiveSortOrder, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function updateScoreboard(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
"     *   const scoreboardObjectiveId = 'scoreboard_demo_objective';",
"     *   const scoreboardObjectiveDisplayName = 'Demo Objective';",
"     *",
"     *   const players = world.getPlayers();",
"     *",
"     *   // Ensure a new objective.",
"     *   let objective = world.scoreboard.getObjective(scoreboardObjectiveId);",
"     *",
"     *   if (!objective) {",
"     *     objective = world.scoreboard.addObjective(scoreboardObjectiveId, scoreboardObjectiveDisplayName);",
"     *   }",
"     *",
"     *   // get the scoreboard identity for player 0",
"     *   const player0Identity = players[0].scoreboardIdentity;",
"     *",
"     *   if (player0Identity === undefined) {",
"     *     log('Could not get a scoreboard identity for player 0.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   // initialize player score to 100;",
"     *   objective.setScore(player0Identity, 100);",
"     *",
"     *   world.scoreboard.setObjectiveAtDisplaySlot(DisplaySlotId.Sidebar, {",
"     *     objective: objective,",
"     *     sortOrder: ObjectiveSortOrder.Descending,",
"     *   });",
"     *",
"     *   const playerScore = objective.getScore(player0Identity) ?? 0;",
"     *",
"     *   // score should now be 110.",
"     *   objective.setScore(player0Identity, playerScore + 10);",
"     * }",
"     * ```",
"     */",
"    addObjective(objectiveId: string, displayName?: string): ScoreboardObjective;",
"    /**",
"     * @remarks",
"     * Clears the objective that occupies a display slot.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    clearObjectiveAtDisplaySlot(displaySlotId: DisplaySlotId): ScoreboardObjective | undefined;",
"    /**",
"     * @remarks",
"     * Returns a specific objective (by id).",
"     *",
"     * @param objectiveId",
"     * Identifier of the objective.",
"     */",
"    getObjective(objectiveId: string): ScoreboardObjective | undefined;",
"    /**",
"     * @remarks",
"     * Returns an objective that occupies the specified display",
"     * slot.",
"     *",
"     */",
"    getObjectiveAtDisplaySlot(displaySlotId: DisplaySlotId): ScoreboardObjectiveDisplayOptions | undefined;",
"    /**",
"     * @remarks",
"     * Returns all defined objectives.",
"     *",
"     */",
"    getObjectives(): ScoreboardObjective[];",
"    /**",
"     * @remarks",
"     * Returns all defined scoreboard identities.",
"     *",
"     */",
"    getParticipants(): ScoreboardIdentity[];",
"    /**",
"     * @remarks",
"     * Removes an objective from the scoreboard.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    removeObjective(objectiveId: ScoreboardObjective | string): boolean;",
"    /**",
"     * @remarks",
"     * Sets an objective into a display slot with specified",
"     * additional display settings.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns the previous `ScoreboardObjective` set at the",
"     * display slot, if no objective was previously set it returns",
"     * `undefined`.",
"     * @throws This function can throw errors.",
"     */",
"    setObjectiveAtDisplaySlot(",
"        displaySlotId: DisplaySlotId,",
"        objectiveDisplaySetting: ScoreboardObjectiveDisplayOptions,",
"    ): ScoreboardObjective | undefined;",
"}",
"/**",
" * Contains an identity of the scoreboard item.",
" */",
"export class ScoreboardIdentity {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the player-visible name of this identity.",
"     *",
"     */",
"    readonly displayName: string;",
"    /**",
"     * @remarks",
"     * Identifier of the scoreboard identity.",
"     *",
"     */",
"    readonly id: number;",
"    /**",
"     * @remarks",
"     * Returns true if the ScoreboardIdentity reference is still",
"     * valid.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Type of the scoreboard identity.",
"     *",
"     */",
"    readonly 'type': ScoreboardIdentityType;",
"    /**",
"     * @remarks",
"     * If the scoreboard identity is an entity or player, returns",
"     * the entity that this scoreboard item corresponds to.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getEntity(): Entity | undefined;",
"}",
"/**",
" * Contains objectives and participants for the scoreboard.",
" */",
"export class ScoreboardObjective {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the player-visible name of this scoreboard",
"     * objective.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly displayName: string;",
"    /**",
"     * @remarks",
"     * Identifier of the scoreboard objective.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Returns true if the ScoreboardObjective reference is still",
"     * valid.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * Adds a score to the given participant and objective.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param participant",
"     * Participant to apply the scoreboard value addition to.",
"     * @throws This function can throw errors.",
"     */",
"    addScore(participant: Entity | ScoreboardIdentity | string, scoreToAdd: number): number;",
"    /**",
"     * @remarks",
"     * Returns all objective participant identities.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getParticipants(): ScoreboardIdentity[];",
"    /**",
"     * @remarks",
"     * Returns a specific score for a participant.",
"     *",
"     * @param participant",
"     * Identifier of the participant to retrieve a score for.",
"     * @throws This function can throw errors.",
"     */",
"    getScore(participant: Entity | ScoreboardIdentity | string): number | undefined;",
"    /**",
"     * @remarks",
"     * Returns specific scores for this objective for all",
"     * participants.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getScores(): ScoreboardScoreInfo[];",
"    /**",
"     * @remarks",
"     * Returns if the specified identity is a participant of the",
"     * scoreboard objective.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    hasParticipant(participant: Entity | ScoreboardIdentity | string): boolean;",
"    /**",
"     * @remarks",
"     * Removes a participant from this scoreboard objective.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param participant",
"     * Participant to remove from being tracked with this",
"     * objective.",
"     * @throws This function can throw errors.",
"     */",
"    removeParticipant(participant: Entity | ScoreboardIdentity | string): boolean;",
"    /**",
"     * @remarks",
"     * Sets a score for a participant.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param participant",
"     * Identity of the participant.",
"     * @param score",
"     * New value of the score.",
"     * @throws This function can throw errors.",
"     */",
"    setScore(participant: Entity | ScoreboardIdentity | string, score: number): void;",
"}",
"/**",
" * Contains a pair of a scoreboard participant and its",
" * respective score.",
" */",
"export class ScoreboardScoreInfo {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This scoreboard participant for this score.",
"     *",
"     */",
"    readonly participant: ScoreboardIdentity;",
"    /**",
"     * @remarks",
"     * Score value of the identity for this objective.",
"     *",
"     */",
"    readonly score: number;",
"}",
"/**",
" * Contains information about user interface elements that are",
" * showing up on the screen.",
" * @example setTitle.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" *",
" * function setTitle(targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   if (players.length > 0) {",
" *     players[0].onScreenDisplay.setTitle('§o§6Fancy Title§r');",
" *   }",
" * }",
" * ```",
" * @example setTitleAndSubtitle.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" *",
" * function setTitleAndSubtitle(",
" *     targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   players[0].onScreenDisplay.setTitle('Chapter 1', {",
" *     stayDuration: 100,",
" *     fadeInDuration: 2,",
" *     fadeOutDuration: 4,",
" *     subtitle: 'Trouble in Block Town',",
" *   });",
" * }",
" * ```",
" * @example countdown.ts",
" * ```typescript",
" * import { world, system, DimensionLocation } from '@minecraft/server';",
" *",
" * function countdown(targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   players[0].onScreenDisplay.setTitle('Get ready!', {",
" *     stayDuration: 220,",
" *     fadeInDuration: 2,",
" *     fadeOutDuration: 4,",
" *     subtitle: '10',",
" *   });",
" *",
" *   let countdown = 10;",
" *",
" *   const intervalId = system.runInterval(() => {",
" *     countdown--;",
" *     players[0].onScreenDisplay.updateSubtitle(countdown.toString());",
" *",
" *     if (countdown == 0) {",
" *       system.clearRun(intervalId);",
" *     }",
" *   }, 20);",
" * }",
" * ```",
" */",
"export class ScreenDisplay {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns true if the current reference to this screen display",
"     * manager object is valid and functional.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    getHiddenHudElements(): HudElement[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    hideAllExcept(hudElements?: HudElement[]): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    isForcedHidden(hudElement: HudElement): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    resetHudElementsVisibility(): void;",
"    /**",
"     * @remarks",
"     * Set the action bar text - a piece of text that displays",
"     * beneath the title and above the hot-bar.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param text",
"     * New value for the action bar text.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     *",
"     * {@link RawMessageError}",
"     */",
"    setActionBar(text: (RawMessage | string)[] | RawMessage | string): void;",
"    /**",
"     * @remarks",
"     * Sets visibility of a particular element of the heads up",
"     * display (HUD).",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param visible",
"     * Whether to set the HUD element to invisible, or to reset it",
"     * back to its default.",
"     * @param hudElements",
"     * Optional list of HUD elements to configure visibility for.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     */",
"    setHudVisibility(visible: HudVisibility, hudElements?: HudElement[]): void;",
"    /**",
"     * @remarks",
"     * Will cause a title to show up on the player's on screen",
"     * display. Will clear the title if set to empty string. You",
"     * can optionally specify an additional subtitle as well as",
"     * fade in, stay and fade out times.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     *",
"     * {@link InvalidEntityError}",
"     *",
"     * {@link RawMessageError}",
"     * @example setTitle.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function setTitle(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   if (players.length > 0) {",
"     *     players[0].onScreenDisplay.setTitle('§o§6Fancy Title§r');",
"     *   }",
"     * }",
"     * ```",
"     * @example setTitleAndSubtitle.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function setTitleAndSubtitle(",
"     *     targetLocation: DimensionLocation",
"     * ) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   players[0].onScreenDisplay.setTitle('Chapter 1', {",
"     *     stayDuration: 100,",
"     *     fadeInDuration: 2,",
"     *     fadeOutDuration: 4,",
"     *     subtitle: 'Trouble in Block Town',",
"     *   });",
"     * }",
"     * ```",
"     * @example countdown.ts",
"     * ```typescript",
"     * import { world, system, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function countdown(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   players[0].onScreenDisplay.setTitle('Get ready!', {",
"     *     stayDuration: 220,",
"     *     fadeInDuration: 2,",
"     *     fadeOutDuration: 4,",
"     *     subtitle: '10',",
"     *   });",
"     *",
"     *   let countdown = 10;",
"     *",
"     *   const intervalId = system.runInterval(() => {",
"     *     countdown--;",
"     *     players[0].onScreenDisplay.updateSubtitle(countdown.toString());",
"     *",
"     *     if (countdown == 0) {",
"     *       system.clearRun(intervalId);",
"     *     }",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    setTitle(title: (RawMessage | string)[] | RawMessage | string, options?: TitleDisplayOptions): void;",
"    /**",
"     * @remarks",
"     * Updates the subtitle if the subtitle was previously",
"     * displayed via the setTitle method.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidEntityError}",
"     *",
"     * {@link RawMessageError}",
"     * @example countdown.ts",
"     * ```typescript",
"     * import { world, system, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function countdown(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   players[0].onScreenDisplay.setTitle('Get ready!', {",
"     *     stayDuration: 220,",
"     *     fadeInDuration: 2,",
"     *     fadeOutDuration: 4,",
"     *     subtitle: '10',",
"     *   });",
"     *",
"     *   let countdown = 10;",
"     *",
"     *   const intervalId = system.runInterval(() => {",
"     *     countdown--;",
"     *     players[0].onScreenDisplay.updateSubtitle(countdown.toString());",
"     *",
"     *     if (countdown == 0) {",
"     *       system.clearRun(intervalId);",
"     *     }",
"     *   }, 20);",
"     * }",
"     * ```",
"     */",
"    updateSubtitle(subtitle: (RawMessage | string)[] | RawMessage | string): void;",
"}",
"/**",
" * Returns additional data about a /scriptevent command",
" * invocation.",
" */",
"export class ScriptEventCommandMessageAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Identifier of this ScriptEvent command message.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * If this command was initiated via an NPC, returns the entity",
"     * that initiated the NPC dialogue.",
"     *",
"     */",
"    readonly initiator?: Entity;",
"    /**",
"     * @remarks",
"     * Optional additional data passed in with the script event",
"     * command.",
"     *",
"     */",
"    readonly message: string;",
"    /**",
"     * @remarks",
"     * Source block if this command was triggered via a block",
"     * (e.g., a commandblock.)",
"     *",
"     */",
"    readonly sourceBlock?: Block;",
"    /**",
"     * @remarks",
"     * Source entity if this command was triggered by an entity",
"     * (e.g., a NPC).",
"     *",
"     */",
"    readonly sourceEntity?: Entity;",
"    /**",
"     * @remarks",
"     * Returns the type of source that fired this command.",
"     *",
"     */",
"    readonly sourceType: ScriptEventSource;",
"}",
"/**",
" * Allows for registering an event handler that responds to",
" * inbound /scriptevent commands.",
" */",
"export class ScriptEventCommandMessageAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Registers a new ScriptEvent handler.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: ScriptEventCommandMessageAfterEvent) => void,",
"        options?: ScriptEventMessageFilterOptions,",
"    ): (arg0: ScriptEventCommandMessageAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Unsubscribes a particular handler for a ScriptEvent event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ScriptEventCommandMessageAfterEvent) => void): void;",
"}",
"/**",
" * Describes a particular seating position on this rideable",
" * entity.",
" */",
"export class Seat {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Angle in degrees that a rider is allowed to rotate while",
"     * riding this entity.",
"     *",
"     */",
"    readonly lockRiderRotation: number;",
"    /**",
"     * @remarks",
"     * A maximum number of riders that this seat can support.",
"     *",
"     */",
"    readonly maxRiderCount: number;",
"    /**",
"     * @remarks",
"     * A minimum number of riders that can be placed in this seat",
"     * position, if this seat is to be filled.",
"     *",
"     */",
"    readonly minRiderCount: number;",
"    /**",
"     * @remarks",
"     * Physical location of this seat, relative to the entity's",
"     * location.",
"     *",
"     */",
"    readonly position: Vector3;",
"    /**",
"     * @remarks",
"     * Angle in degrees to rotate riders by.",
"     *",
"     */",
"    readonly seatRotation: number;",
"}",
"/**",
" * Provides an adaptable interface for callers to subscribe to",
" * an event that fires before the game world shuts down. This",
" * event occurs after players have left, but before the world",
" * has closed.",
" */",
"export class ShutdownBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a new subscriber callback to this event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function callback that is called when this event fires.",
"     */",
"    subscribe(callback: (arg0: ShutdownEvent) => void): (arg0: ShutdownEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a subscriber callback previously subscribed to via",
"     * the subscribe method.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function closure that was previously passed to the subscribe",
"     * method.",
"     */",
"    unsubscribe(callback: (arg0: ShutdownEvent) => void): void;",
"}",
"/**",
" * The event object that gets dispatched when the game world is",
" * shutting down.",
" */",
"export class ShutdownEvent {",
"    private constructor();",
"}",
"export class StartupBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: StartupEvent) => void): (arg0: StartupEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: StartupEvent) => void): void;",
"}",
"export class StartupEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly blockComponentRegistry: BlockComponentRegistry;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemComponentRegistry: ItemComponentRegistry;",
"}",
"/**",
" * Represents a loaded structure template (.mcstructure file).",
" * Structures can be placed in a world using the /structure",
" * command or the {@link StructureManager} APIs.",
" */",
"export class Structure {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The name of the structure. The identifier must include a",
"     * namespace. For structures created via the /structure command",
"     * or structure blocks, this namespace defaults to",
"     * 'mystructure'.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Returns whether the Structure is valid. The Structure may",
"     * become invalid if it is deleted.",
"     *",
"     */",
"    readonly isValid: boolean;",
"    /**",
"     * @remarks",
"     * The dimensions of the structure. For example, a single block",
"     * structure will have a size of {x:1, y:1, z:1}",
"     *",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    readonly size: Vector3;",
"    /**",
"     * @remarks",
"     * Returns a BlockPermutation representing the block contained",
"     * within the Structure at the given location.",
"     *",
"     * @param location",
"     * The block location relative to the Structure's origin.",
"     * @returns",
"     * Returns a BlockPermutation. Returns undefined if a block",
"     * does not exist at the given location.",
"     * @throws",
"     * Throws if the location is outside the structure's bounds.",
"     * Throws if the Structure has been deleted.",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    getBlockPermutation(location: Vector3): BlockPermutation | undefined;",
"    /**",
"     * @remarks",
"     * Returns whether the block at the given location is",
"     * waterlogged.",
"     *",
"     * @param location",
"     * The block location relative to the Structure's origin.",
"     * @returns",
"     * Returns whether the block at the given location is",
"     * waterlogged. Returns false if a block does not exist at the",
"     * given location.",
"     * @throws",
"     * Throws if the location is outside the structure's bounds.",
"     * Throws if the Structure has been deleted.",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    getIsWaterlogged(location: Vector3): boolean;",
"    /**",
"     * @remarks",
"     * Creates a copy of a Structure and saves it with a new name.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The name of the newly created Structure.",
"     * @param saveMode",
"     * Determines how the Structure should be saved. Defaults to",
"     * saving to the world.",
"     * Defaults to: 1",
"     * @returns",
"     * Returns the newly created structure.",
"     * @throws",
"     * Throws if the identifier is invalid. A valid identifier must",
"     * include a namespace and must be unique.",
"     * Throws if the Structure has been deleted.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    saveAs(identifier: string, saveMode?: StructureSaveMode): Structure;",
"    /**",
"     * @remarks",
"     * Saves a modified Structure to the world file.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws",
"     * Throws if the Structure has been deleted.",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    saveToWorld(): void;",
"    /**",
"     * @remarks",
"     * Sets a BlockPermutation within a Structure.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The block location relative to the Structure's origin.",
"     * @param blockPermutation",
"     * The BlockPermutation to set.",
"     * Defaults to: null",
"     * @param waterlogged",
"     * Specifies whether the block should be waterlogged. Air and",
"     * undefined blocks cannot be waterlogged.",
"     * Defaults to: false",
"     * @throws",
"     * Throws if the type of block is StructureVoid.",
"     * Throws if the block is undefined and waterlogged is set to",
"     * true.",
"     * Throws if the block is air and waterlogged is set to true.",
"     * Throws if the location is outside the structure's bounds.",
"     * Throws if the Structure has been deleted.",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    setBlockPermutation(location: Vector3, blockPermutation?: BlockPermutation, waterlogged?: boolean): void;",
"}",
"/**",
" * Manager for Structure related APIs. Includes APIs for",
" * creating, getting, placing and deleting Structures.",
" */",
"export class StructureManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Creates an empty Structure in memory. Use {@link",
"     * Structure.setBlockPermutation} to populate the structure",
"     * with blocks and save changes with {@link Structure.saveAs}.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The name of the structure. A valid identifier must include a",
"     * namespace and must be unique.",
"     * @param size",
"     * The size of the structure. For example, to create a single",
"     * block structure the size should be {x:1, y:1, z:1}.",
"     * @param saveMode",
"     * How the Structure should be saved upon creation. Defaults to",
"     * StructureSaveMode.Memory.",
"     * Defaults to: 0",
"     * @returns",
"     * Returns the newly created Structure.",
"     * @throws",
"     * Throws if the identifier is invalid. A valid identifier must",
"     * include a namespace and must be unique.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     */",
"    createEmpty(identifier: string, size: Vector3, saveMode?: StructureSaveMode): Structure;",
"    /**",
"     * @remarks",
"     * Creates a new Structure from blocks in the world. This is",
"     * functionally equivalent to the /structure save command.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The name of the structure. A valid identifier must include a",
"     * namespace and must be unique.",
"     * @param dimension",
"     * The dimension where the blocks should be read from.",
"     * @param options",
"     * Additional options for creating a structure from the world.",
"     * @returns",
"     * Returns the newly created Structure.",
"     * @throws",
"     * Throws if the identifier is invalid. A valid identifier must",
"     * include a namespace and must be unique.",
"     * Throws if the structure bounds exceed the maximum size.",
"     * Throws if the structure bounds contains blocks outside the",
"     * world bounds.",
"     *",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     */",
"    createFromWorld(",
"        identifier: string,",
"        dimension: Dimension,",
"        from: Vector3,",
"        to: Vector3,",
"        options?: StructureCreateOptions,",
"    ): Structure;",
"    /**",
"     * @remarks",
"     * Deletes a structure from memory and from the world if it",
"     * exists.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param structure",
"     * The structure identifier or Structure object that should be",
"     * deleted. Note, a Structure object will become invalid after",
"     * it is deleted.",
"     * @returns",
"     * Returns whether the structure was removed.",
"     * @throws",
"     * Throws if a structure cannot be removed. For example, a",
"     * structure loaded from a Behavior Pack.",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     */",
"    delete(structure: string | Structure): boolean;",
"    /**",
"     * @remarks",
"     * Gets a Structure that is saved to memory or the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The name of the structure to get.",
"     * @returns",
"     * Returns a Structure if it exists, otherwise undefined.",
"     */",
"    get(identifier: string): Structure | undefined;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getWorldStructureIds(): string[];",
"    /**",
"     * @remarks",
"     * Places a structure in the world. Structures placed in",
"     * unloaded chunks will be queued for loading.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param structure",
"     * The structure's identifier or a Structure object.",
"     * @param dimension",
"     * The dimension where the Structure should be placed.",
"     * @param location",
"     * The location within the dimension where the Structure should",
"     * be placed.",
"     * @param options",
"     * Additional options for Structure placement.",
"     * @throws",
"     * Throws if the integrity value is outside of the range [0,1]",
"     * Throws if the integrity seed is invalid.",
"     * Throws if the placement location contains blocks that are",
"     * outside the world bounds.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link InvalidStructureError}",
"     */",
"    place(",
"        structure: string | Structure,",
"        dimension: Dimension,",
"        location: Vector3,",
"        options?: StructurePlaceOptions,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Places a partial jigsaw structure in the world. This is",
"     * useful for debugging connections between jigsaw blocks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param pool",
"     * The identifier of the template pool to start from.",
"     * @param targetJigsaw",
"     * The name of the jigsaw block to start from. This block must",
"     * be included in at least one of the starting pool structure",
"     * templates.",
"     * @param maxDepth",
"     * The maximum recursion depth for the jigsaw structure.",
"     * @param dimension",
"     * The dimension to place the jigsaw structure in.",
"     * @param location",
"     * The location where the jigsaw structure will begin",
"     * generating relative to the targetJigsaw block.",
"     * @param options",
"     * Optional settings to use when generating the jigsaw",
"     * structure.",
"     * @returns",
"     * Returns a {@link BlockBoundingBox} object which represents",
"     * the maximum bounds of the jigsaw structure.",
"     * @throws",
"     * Throws if maxDepth is outside of the range [1,20]",
"     * Throws if generation fails due to invalid parameters or",
"     * jigsaw configuration.",
"     * Throws if the placement location contains blocks that are",
"     * outside the world bounds.",
"     *",
"     * {@link PlaceJigsawError}",
"     */",
"    placeJigsaw(",
"        pool: string,",
"        targetJigsaw: string,",
"        maxDepth: number,",
"        dimension: Dimension,",
"        location: Vector3,",
"        options?: JigsawPlaceOptions,",
"    ): BlockBoundingBox;",
"    /**",
"     * @remarks",
"     * Places a jigsaw structure in the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param identifier",
"     * The identifier of the jigsaw structure.",
"     * @param dimension",
"     * The dimension to place the jigsaw structure in.",
"     * @param location",
"     * The location where the jigsaw structure will begin",
"     * generating. Note that the y value will be overridden by the",
"     * structure's start height unless the",
"     * ignoreStarJigsawStructurePlaceOptions ignoreStartHeight",
"     * option is set.",
"     * @param options",
"     * Optional settings to use when generating the jigsaw",
"     * structure.",
"     * @returns",
"     * Returns a {@link BlockBoundingBox} object which represents",
"     * the maximum bounds of the jigsaw structure.",
"     * @throws",
"     * Throws if generation fails due to invalid parameters or",
"     * jigsaw configuration.",
"     * Throws if the placement location contains blocks that are",
"     * outside the world bounds.",
"     *",
"     * {@link PlaceJigsawError}",
"     */",
"    placeJigsawStructure(",
"        identifier: string,",
"        dimension: Dimension,",
"        location: Vector3,",
"        options?: JigsawStructurePlaceOptions,",
"    ): BlockBoundingBox;",
"}",
"/**",
" * A class that provides system-level events and functions.",
" */",
"export class System {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns a collection of after-events for system-level",
"     * operations.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly afterEvents: SystemAfterEvents;",
"    /**",
"     * @remarks",
"     * Returns a collection of before-events for system-level",
"     * operations.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly beforeEvents: SystemBeforeEvents;",
"    /**",
"     * @remarks",
"     * Represents the current world tick of the server.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly currentTick: number;",
"    /**",
"     * @remarks",
"     * Returns true if this is a world where the editor is",
"     * currently loaded, returns false otherwise.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly isEditorWorld: boolean;",
"    /**",
"     * @remarks",
"     * Contains the device information for the server.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly serverSystemInfo: SystemInfo;",
"    /**",
"     * @remarks",
"     * Cancels the execution of a job queued via {@link",
"     * System.runJob}.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param jobId",
"     * The job ID returned from {@link System.runJob}.",
"     */",
"    clearJob(jobId: number): void;",
"    /**",
"     * @remarks",
"     * Cancels the execution of a function run that was previously",
"     * scheduled via {@link System.run}.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    clearRun(runId: number): void;",
"    /**",
"     * @remarks",
"     * Runs a specified function at the next available future time.",
"     * This is frequently used to implement delayed behaviors and",
"     * game loops. When run within the context of an event handler,",
"     * this will generally run the code at the end of the same tick",
"     * where the event occurred. When run in other code (a",
"     * system.run callout), this will run the function in the next",
"     * tick. Note, however, that depending on load on the system,",
"     * running in the same or next tick is not guaranteed.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Function callback to run at the next game tick.",
"     * @returns",
"     * An opaque identifier that can be used with the `clearRun`",
"     * function to cancel the execution of this run.",
"     * @example trapTick.ts",
"     * ```typescript",
"     * import { world, system } from '@minecraft/server';",
"     *",
"     * function trapTick() {",
"     *   try {",
"     *     // Minecraft runs at 20 ticks per second.",
"     *     if (system.currentTick % 1200 === 0) {",
"     *       world.sendMessage('Another minute passes...');",
"     *     }",
"     *   } catch (e) {",
"     *     console.warn('Error: ' + e);",
"     *   }",
"     *",
"     *   system.run(trapTick);",
"     * }",
"     * ```",
"     */",
"    run(callback: () => void): number;",
"    /**",
"     * @remarks",
"     * Runs a set of code on an interval.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Functional code that will run when this interval occurs.",
"     * @param tickInterval",
"     * An interval of every N ticks that the callback will be",
"     * called upon.",
"     * @returns",
"     * An opaque handle that can be used with the clearRun method",
"     * to stop the run of this function on an interval.",
"     * @example every30Seconds.ts",
"     * ```typescript",
"     * import { world, system, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function every30Seconds(targetLocation: DimensionLocation) {",
"     *   const intervalRunIdentifier = Math.floor(Math.random() * 10000);",
"     *",
"     *   system.runInterval(() => {",
"     *     world.sendMessage('This is an interval run ' + intervalRunIdentifier + ' sending a message every 30 seconds.');",
"     *   }, 600);",
"     * }",
"     * ```",
"     */",
"    runInterval(callback: () => void, tickInterval?: number): number;",
"    /**",
"     * @remarks",
"     * Queues a generator to run until completion.  The generator",
"     * will be given a time slice each tick, and will be run until",
"     * it yields or completes.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param generator",
"     * The instance of the generator to run.",
"     * @returns",
"     * An opaque handle that can be used with {@link",
"     * System.clearJob} to stop the run of this generator.",
"     * @example cubeGenerator.ts",
"     * ```typescript",
"     * import { system, BlockPermutation, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function cubeGenerator(targetLocation: DimensionLocation) {",
"     *   const blockPerm = BlockPermutation.resolve('minecraft:cobblestone');",
"     *",
"     *   system.runJob(blockPlacingGenerator(blockPerm, targetLocation, 15));",
"     * }",
"     *",
"     * function* blockPlacingGenerator(blockPerm: BlockPermutation, startingLocation: DimensionLocation, size: number) {",
"     *   for (let x = startingLocation.x; x < startingLocation.x + size; x++) {",
"     *     for (let y = startingLocation.y; y < startingLocation.y + size; y++) {",
"     *       for (let z = startingLocation.z; z < startingLocation.z + size; z++) {",
"     *         const block = startingLocation.dimension.getBlock({ x: x, y: y, z: z });",
"     *         if (block) {",
"     *           block.setPermutation(blockPerm);",
"     *         }",
"     *         yield;",
"     *       }",
"     *     }",
"     *   }",
"     * }",
"     * ```",
"     */",
"    runJob(generator: Generator<void, void, void>): number;",
"    /**",
"     * @remarks",
"     * Runs a set of code at a future time specified by tickDelay.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param callback",
"     * Functional code that will run when this timeout occurs.",
"     * @param tickDelay",
"     * Amount of time, in ticks, before the interval will be",
"     * called.",
"     * @returns",
"     * An opaque handle that can be used with the clearRun method",
"     * to stop the run of this function on an interval.",
"     */",
"    runTimeout(callback: () => void, tickDelay?: number): number;",
"    /**",
"     * @remarks",
"     * Causes an event to fire within script with the specified",
"     * message ID and payload.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param id",
"     * Identifier of the message to send. This is custom and",
"     * dependent on the kinds of behavior packs and content you may",
"     * have installed within the world.",
"     * @param message",
"     * Data component of the message to send. This is custom and",
"     * dependent on the kinds of behavior packs and content you may",
"     * have installed within the world. Message may not exceed 2048",
"     * characters in length.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     *",
"     * {@link NamespaceNameError}",
"     */",
"    sendScriptEvent(id: string, message: string): void;",
"    /**",
"     * @remarks",
"     * waitTicks returns a promise that resolves after the",
"     * requested number of ticks.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param ticks",
"     * The amount of ticks to wait. Minimum value is 1.",
"     * @returns",
"     * A promise that is resolved when the specified amount of",
"     * ticks have occurred.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     */",
"    waitTicks(ticks: number): Promise<void>;",
"}",
"/**",
" * Provides a set of events that fire within the broader",
" * scripting system within Minecraft.",
" */",
"export class SystemAfterEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * An event that fires when a /scriptevent command is set. This",
"     * provides a way for commands and other systems to trigger",
"     * behavior within script.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly scriptEventReceive: ScriptEventCommandMessageAfterEventSignal;",
"}",
"/**",
" * A set of events that fire before an actual action occurs. In",
" * most cases, you can potentially cancel or modify the",
" * impending event. Note that in before events any APIs that",
" * modify gameplay state will not function and will throw an",
" * error.",
" */",
"export class SystemBeforeEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly shutdown: ShutdownBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly startup: StartupBeforeEventSignal;",
"}",
"/**",
" * Contains device information, like memory tier.",
" */",
"export class SystemInfo {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Describes the memory of the device.",
"     *",
"     */",
"    readonly memoryTier: MemoryTier;",
"}",
"/**",
" * Contains information related to changes to a target block",
" * hit.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class TargetBlockHitAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The position where the source hit the block.",
"     *",
"     */",
"    readonly hitVector: Vector3;",
"    /**",
"     * @remarks",
"     * The redstone power before the block is hit.",
"     *",
"     */",
"    readonly previousRedstonePower: number;",
"    /**",
"     * @remarks",
"     * The redstone power at the time the block is hit.",
"     *",
"     */",
"    readonly redstonePower: number;",
"    /**",
"     * @remarks",
"     * Optional source that hit the target block.",
"     *",
"     */",
"    readonly source: Entity;",
"}",
"/**",
" * Manages callbacks that are connected to when a target block",
" * is hit.",
" */",
"export class TargetBlockHitAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a target block is",
"     * hit.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: TargetBlockHitAfterEvent) => void): (arg0: TargetBlockHitAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a target block is",
"     * hit.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: TargetBlockHitAfterEvent) => void): void;",
"}",
"/**",
" * Represents a trigger for firing an event.",
" */",
"export class Trigger {",
"    /**",
"     * @remarks",
"     * Event name of the trigger.",
"     *",
"     */",
"    eventName: string;",
"    /**",
"     * @remarks",
"     * Creates a new trigger.",
"     *",
"     */",
"    constructor(eventName: string);",
"}",
"/**",
" * Contains information related to changes to a trip wire trip.",
" * @example tripWireTripEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, TripWireTripAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function tripWireTripEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a tripwire",
" *   const redstone = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y - 1,",
" *     z: targetLocation.z,",
" *   });",
" *   const tripwire = targetLocation.dimension.getBlock(targetLocation);",
" *",
" *   if (redstone === undefined || tripwire === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   redstone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.RedstoneBlock));",
" *   tripwire.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.TripWire));",
" *",
" *   world.afterEvents.tripWireTrip.subscribe((tripWireTripEvent: TripWireTripAfterEvent) => {",
" *     const eventLoc = tripWireTripEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y && eventLoc.z === targetLocation.z) {",
" *       log(",
" *         'Tripwire trip event at tick ' +",
" *           system.currentTick +",
" *           (tripWireTripEvent.sources.length > 0 ? ' by entity ' + tripWireTripEvent.sources[0].id : '')",
" *       );",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class TripWireTripAfterEvent extends BlockEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Whether or not the block has redstone power.",
"     *",
"     */",
"    readonly isPowered: boolean;",
"    /**",
"     * @remarks",
"     * The sources that triggered the trip wire to trip.",
"     *",
"     */",
"    readonly sources: Entity[];",
"}",
"/**",
" * Manages callbacks that are connected to when a trip wire is",
" * tripped.",
" * @example tripWireTripEvent.ts",
" * ```typescript",
" * import { world, system, BlockPermutation, TripWireTripAfterEvent, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function tripWireTripEvent(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   // set up a tripwire",
" *   const redstone = targetLocation.dimension.getBlock({",
" *     x: targetLocation.x,",
" *     y: targetLocation.y - 1,",
" *     z: targetLocation.z,",
" *   });",
" *   const tripwire = targetLocation.dimension.getBlock(targetLocation);",
" *",
" *   if (redstone === undefined || tripwire === undefined) {",
" *     log('Could not find block at location.');",
" *     return -1;",
" *   }",
" *",
" *   redstone.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.RedstoneBlock));",
" *   tripwire.setPermutation(BlockPermutation.resolve(MinecraftBlockTypes.TripWire));",
" *",
" *   world.afterEvents.tripWireTrip.subscribe((tripWireTripEvent: TripWireTripAfterEvent) => {",
" *     const eventLoc = tripWireTripEvent.block.location;",
" *",
" *     if (eventLoc.x === targetLocation.x && eventLoc.y === targetLocation.y && eventLoc.z === targetLocation.z) {",
" *       log(",
" *         'Tripwire trip event at tick ' +",
" *           system.currentTick +",
" *           (tripWireTripEvent.sources.length > 0 ? ' by entity ' + tripWireTripEvent.sources[0].id : '')",
" *       );",
" *     }",
" *   });",
" * }",
" * ```",
" */",
"export class TripWireTripAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when a trip wire is",
"     * tripped.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: TripWireTripAfterEvent) => void): (arg0: TripWireTripAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when a trip wire is",
"     * tripped.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: TripWireTripAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to changes in weather in the",
" * environment.",
" */",
"export class WeatherChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Dimension in which the weather has changed.",
"     *",
"     */",
"    readonly dimension: string;",
"    /**",
"     * @remarks",
"     * The weather type after the weather was changed.",
"     *",
"     */",
"    readonly newWeather: WeatherType;",
"    /**",
"     * @remarks",
"     * The weather type before the weather was changed.",
"     *",
"     */",
"    readonly previousWeather: WeatherType;",
"}",
"/**",
" * Manages callbacks that are connected to weather changing.",
" */",
"export class WeatherChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called when weather changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: WeatherChangeAfterEvent) => void): (arg0: WeatherChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called when weather changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: WeatherChangeAfterEvent) => void): void;",
"}",
"/**",
" * Contains information related to changes in weather in the",
" * environment.",
" */",
"export class WeatherChangeBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * If set to true the weather change will be cancelled.",
"     *",
"     */",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * Sets the duration of the new weather (in ticks).",
"     *",
"     */",
"    duration: number;",
"    /**",
"     * @remarks",
"     * The type of weather that will be applied.",
"     *",
"     */",
"    newWeather: WeatherType;",
"    /**",
"     * @remarks",
"     * The type of weather that it was prior to the event being",
"     * fired.",
"     *",
"     */",
"    readonly previousWeather: WeatherType;",
"}",
"/**",
" * Manages callbacks that are connected to before weather",
" * changing.",
" */",
"export class WeatherChangeBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Adds a callback that will be called before weather changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: WeatherChangeBeforeEvent) => void): (arg0: WeatherChangeBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes a callback from being called before weather changes.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: WeatherChangeBeforeEvent) => void): void;",
"}",
"/**",
" * A class that wraps the state of a world - a set of",
" * dimensions and the environment of Minecraft.",
" */",
"export class World {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Contains a set of events that are applicable to the entirety",
"     * of the world.  Event callbacks are called in a deferred",
"     * manner. Event callbacks are executed in read-write mode.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly afterEvents: WorldAfterEvents;",
"    /**",
"     * @remarks",
"     * Contains a set of events that are applicable to the entirety",
"     * of the world. Event callbacks are called immediately. Event",
"     * callbacks are executed in read-only mode.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     * @example customCommand.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function customCommand(targetLocation: DimensionLocation) {",
"     *   const chatCallback = world.beforeEvents.chatSend.subscribe((eventData) => {",
"     *     if (eventData.message.includes('cancel')) {",
"     *       // Cancel event if the message contains 'cancel'",
"     *       eventData.cancel = true;",
"     *     } else {",
"     *       const args = eventData.message.split(' ');",
"     *",
"     *       if (args.length > 0) {",
"     *         switch (args[0].toLowerCase()) {",
"     *           case 'echo':",
"     *             // Send a modified version of chat message",
"     *             world.sendMessage(`Echo '${eventData.message.substring(4).trim()}'`);",
"     *             break;",
"     *           case 'help':",
"     *             world.sendMessage(`Available commands: echo <message>`);",
"     *             break;",
"     *         }",
"     *       }",
"     *     }",
"     *   });",
"     * }",
"     * ```",
"     */",
"    readonly beforeEvents: WorldBeforeEvents;",
"    /**",
"     * @remarks",
"     * The game rules that apply to the world.",
"     *",
"     */",
"    readonly gameRules: GameRules;",
"    readonly isHardcore: boolean;",
"    /**",
"     * @remarks",
"     * Returns the general global scoreboard that applies to the",
"     * world.",
"     *",
"     */",
"    readonly scoreboard: Scoreboard;",
"    /**",
"     * @remarks",
"     * Returns the manager for {@link Structure} related APIs.",
"     *",
"     */",
"    readonly structureManager: StructureManager;",
"    /**",
"     * @remarks",
"     * Clears the set of dynamic properties declared for this",
"     * behavior pack within the world.",
"     *",
"     */",
"    clearDynamicProperties(): void;",
"    /**",
"     * @remarks",
"     * Returns the absolute time since the start of the world.",
"     *",
"     */",
"    getAbsoluteTime(): number;",
"    /**",
"     * @remarks",
"     * Returns an array of all active players within the world.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getAllPlayers(): Player[];",
"    /**",
"     * @remarks",
"     * Returns the current day.",
"     *",
"     * @returns",
"     * The current day, determined by the world time divided by the",
"     * number of ticks per day. New worlds start at day 0.",
"     */",
"    getDay(): number;",
"    /**",
"     * @remarks",
"     * Returns the default Overworld spawn location.",
"     *",
"     * @returns",
"     * The default Overworld spawn location. By default, the Y",
"     * coordinate is 32767, indicating a player's spawn height is",
"     * not fixed and will be determined by surrounding blocks.",
"     */",
"    getDefaultSpawnLocation(): Vector3;",
"    /**",
"     * @remarks",
"     * Gets the difficulty from the world.",
"     *",
"     * @returns",
"     * Returns the world difficulty.",
"     */",
"    getDifficulty(): Difficulty;",
"    /**",
"     * @remarks",
"     * Returns a dimension object.",
"     *",
"     * @param dimensionId",
"     * The name of the dimension. For example, 'overworld',",
"     * 'nether' or 'the_end'.",
"     * @returns",
"     * The requested dimension",
"     * @throws",
"     * Throws if the given dimension name is invalid",
"     */",
"    getDimension(dimensionId: string): Dimension;",
"    /**",
"     * @remarks",
"     * Returns a property value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @returns",
"     * Returns the value for the property, or undefined if the",
"     * property has not been set.",
"     * @throws",
"     * Throws if the given dynamic property identifier is not",
"     * defined.",
"     * @example incrementDynamicProperty.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function incrementDynamicProperty(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   let number = world.getDynamicProperty('samplelibrary:number');",
"     *",
"     *   log('Current value is: ' + number);",
"     *",
"     *   if (number === undefined) {",
"     *     number = 0;",
"     *   }",
"     *",
"     *   if (typeof number !== 'number') {",
"     *     log('Number is of an unexpected type.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   world.setDynamicProperty('samplelibrary:number', number + 1);",
"     * }",
"     * ```",
"     * @example incrementDynamicPropertyInJsonBlob.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function incrementDynamicPropertyInJsonBlob(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   let paintStr = world.getDynamicProperty('samplelibrary:longerjson');",
"     *   let paint: { color: string; intensity: number } | undefined = undefined;",
"     *",
"     *   log('Current value is: ' + paintStr);",
"     *",
"     *   if (paintStr === undefined) {",
"     *     paint = {",
"     *       color: 'purple',",
"     *       intensity: 0,",
"     *     };",
"     *   } else {",
"     *     if (typeof paintStr !== 'string') {",
"     *       log('Paint is of an unexpected type.');",
"     *       return -1;",
"     *     }",
"     *",
"     *     try {",
"     *       paint = JSON.parse(paintStr);",
"     *     } catch (e) {",
"     *       log('Error parsing serialized struct.');",
"     *       return -1;",
"     *     }",
"     *   }",
"     *",
"     *   if (!paint) {",
"     *     log('Error parsing serialized struct.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   paint.intensity++;",
"     *   paintStr = JSON.stringify(paint); // be very careful to ensure your serialized JSON str cannot exceed limits",
"     *   world.setDynamicProperty('samplelibrary:longerjson', paintStr);",
"     * }",
"     * ```",
"     */",
"    getDynamicProperty(identifier: string): boolean | number | string | Vector3 | undefined;",
"    /**",
"     * @remarks",
"     * Gets a set of dynamic property identifiers that have been",
"     * set in this world.",
"     *",
"     * @returns",
"     * A string array of active dynamic property identifiers.",
"     */",
"    getDynamicPropertyIds(): string[];",
"    /**",
"     * @remarks",
"     * Gets the total byte count of dynamic properties. This could",
"     * potentially be used for your own analytics to ensure you're",
"     * not storing gigantic sets of dynamic properties.",
"     *",
"     */",
"    getDynamicPropertyTotalByteCount(): number;",
"    /**",
"     * @remarks",
"     * Returns an entity based on the provided id.",
"     *",
"     * @param id",
"     * The id of the entity.",
"     * @returns",
"     * The requested entity object.",
"     * @throws",
"     * Throws if the given entity id is invalid.",
"     */",
"    getEntity(id: string): Entity | undefined;",
"    /**",
"     * @remarks",
"     * Returns the MoonPhase for the current time.",
"     *",
"     */",
"    getMoonPhase(): MoonPhase;",
"    /**",
"     * @remarks",
"     * Returns a set of players based on a set of conditions",
"     * defined via the EntityQueryOptions set of filter criteria.",
"     *",
"     * @param options",
"     * Additional options that can be used to filter the set of",
"     * players returned.",
"     * @returns",
"     * A player array.",
"     * @throws",
"     * Throws if the provided EntityQueryOptions are invalid.",
"     */",
"    getPlayers(options?: EntityQueryOptions): Player[];",
"    /**",
"     * @remarks",
"     * Returns the time of day.",
"     *",
"     * @returns",
"     * The time of day, in ticks, between 0 and 24000.",
"     */",
"    getTimeOfDay(): number;",
"    /**",
"     * @remarks",
"     * Plays a particular music track for all players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     * @example playMusicAndSound.ts",
"     * ```typescript",
"     * import { world, MusicOptions, WorldSoundOptions, PlayerSoundOptions, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function playMusicAndSound(targetLocation: DimensionLocation) {",
"     *   const players = world.getPlayers();",
"     *",
"     *   const musicOptions: MusicOptions = {",
"     *     fade: 0.5,",
"     *     loop: true,",
"     *     volume: 1.0,",
"     *   };",
"     *   world.playMusic('music.menu', musicOptions);",
"     *",
"     *   const worldSoundOptions: WorldSoundOptions = {",
"     *     pitch: 0.5,",
"     *     volume: 4.0,",
"     *   };",
"     *   world.playSound('ambient.weather.thunder', targetLocation, worldSoundOptions);",
"     *",
"     *   const playerSoundOptions: PlayerSoundOptions = {",
"     *     pitch: 1.0,",
"     *     volume: 1.0,",
"     *   };",
"     *",
"     *   players[0].playSound('bucket.fill_water', playerSoundOptions);",
"     * }",
"     * ```",
"     */",
"    playMusic(trackId: string, musicOptions?: MusicOptions): void;",
"    /**",
"     * @remarks",
"     * Queues an additional music track for players. If a track is",
"     * not playing, a music track will play.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param trackId",
"     * Identifier of the music track to play.",
"     * @param musicOptions",
"     * Additional options for the music track.",
"     * @throws",
"     * An error will be thrown if volume is less than 0.0.",
"     * An error will be thrown if fade is less than 0.0.",
"     *",
"     */",
"    queueMusic(trackId: string, musicOptions?: MusicOptions): void;",
"    /**",
"     * @remarks",
"     * Sends a message to all players.",
"     *",
"     * @param message",
"     * The message to be displayed.",
"     * @throws",
"     * This method can throw if the provided {@link RawMessage} is",
"     * in an invalid format. For example, if an empty `name` string",
"     * is provided to `score`.",
"     */",
"    sendMessage(message: (RawMessage | string)[] | RawMessage | string): void;",
"    /**",
"     * @remarks",
"     * Sets the world time.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param absoluteTime",
"     * The world time, in ticks.",
"     */",
"    setAbsoluteTime(absoluteTime: number): void;",
"    /**",
"     * @remarks",
"     * Sets a default spawn location for all players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param spawnLocation",
"     * Location of the spawn point. Note that this is assumed to be",
"     * within the overworld dimension.",
"     * @throws",
"     * Throws if the provided spawn location is out of bounds.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link LocationOutOfWorldBoundariesError}",
"     */",
"    setDefaultSpawnLocation(spawnLocation: Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets the worlds difficulty.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param difficulty",
"     * The difficulty we want to set the world to.",
"     */",
"    setDifficulty(difficulty: Difficulty): void;",
"    /**",
"     * @remarks",
"     * Sets a specified property to a value.",
"     *",
"     * @param identifier",
"     * The property identifier.",
"     * @param value",
"     * Data value of the property to set.",
"     * @throws",
"     * Throws if the given dynamic property identifier is not",
"     * defined.",
"     * @example incrementDynamicProperty.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function incrementDynamicProperty(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   let number = world.getDynamicProperty('samplelibrary:number');",
"     *",
"     *   log('Current value is: ' + number);",
"     *",
"     *   if (number === undefined) {",
"     *     number = 0;",
"     *   }",
"     *",
"     *   if (typeof number !== 'number') {",
"     *     log('Number is of an unexpected type.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   world.setDynamicProperty('samplelibrary:number', number + 1);",
"     * }",
"     * ```",
"     * @example incrementDynamicPropertyInJsonBlob.ts",
"     * ```typescript",
"     * import { world, DimensionLocation } from '@minecraft/server';",
"     *",
"     * function incrementDynamicPropertyInJsonBlob(",
"     *   log: (message: string, status?: number) => void,",
"     *   targetLocation: DimensionLocation",
"     * ) {",
"     *   let paintStr = world.getDynamicProperty('samplelibrary:longerjson');",
"     *   let paint: { color: string; intensity: number } | undefined = undefined;",
"     *",
"     *   log('Current value is: ' + paintStr);",
"     *",
"     *   if (paintStr === undefined) {",
"     *     paint = {",
"     *       color: 'purple',",
"     *       intensity: 0,",
"     *     };",
"     *   } else {",
"     *     if (typeof paintStr !== 'string') {",
"     *       log('Paint is of an unexpected type.');",
"     *       return -1;",
"     *     }",
"     *",
"     *     try {",
"     *       paint = JSON.parse(paintStr);",
"     *     } catch (e) {",
"     *       log('Error parsing serialized struct.');",
"     *       return -1;",
"     *     }",
"     *   }",
"     *",
"     *   if (!paint) {",
"     *     log('Error parsing serialized struct.');",
"     *     return -1;",
"     *   }",
"     *",
"     *   paint.intensity++;",
"     *   paintStr = JSON.stringify(paint); // be very careful to ensure your serialized JSON str cannot exceed limits",
"     *   world.setDynamicProperty('samplelibrary:longerjson', paintStr);",
"     * }",
"     * ```",
"     */",
"    setDynamicProperty(identifier: string, value?: boolean | number | string | Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets the time of day.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param timeOfDay",
"     * The time of day, in ticks, between 0 and 24000.",
"     * @throws",
"     * Throws if the provided time of day is not within the valid",
"     * range.",
"     */",
"    setTimeOfDay(timeOfDay: number | TimeOfDay): void;",
"    /**",
"     * @remarks",
"     * Stops any music tracks from playing.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    stopMusic(): void;",
"}",
"/**",
" * Contains a set of events that are available across the scope",
" * of the World.",
" */",
"export class WorldAfterEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This event fires for each BlockLocation destroyed by an",
"     * explosion. It is fired after the blocks have already been",
"     * destroyed.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly blockExplode: BlockExplodeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a button is pushed.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly buttonPush: ButtonPushAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event is fired when an entity event has been triggered",
"     * that will update the component definition state of an",
"     * entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly dataDrivenEntityTrigger: DataDrivenEntityTriggerAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an effect, like poisoning, is added to",
"     * an entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly effectAdd: EffectAddAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an entity dies.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityDie: EntityDieAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when entity health changes in any degree.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityHealthChanged: EntityHealthChangedAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an entity hits (that is, melee",
"     * attacks) a block.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityHitBlock: EntityHitBlockAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an entity hits (that is, melee",
"     * attacks) another entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityHitEntity: EntityHitEntityAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an entity is hurt (takes damage).",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityHurt: EntityHurtAfterEventSignal;",
"    /**",
"     * @remarks",
"     * Fires when an entity is loaded.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityLoad: EntityLoadAfterEventSignal;",
"    /**",
"     * @remarks",
"     * Fires when an entity is removed (for example, potentially",
"     * unloaded, or removed after being killed).",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityRemove: EntityRemoveAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an entity is spawned.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entitySpawn: EntitySpawnAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event is fired after an explosion occurs.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly explosion: ExplosionAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a world.gameRules property has",
"     * changed.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly gameRuleChange: GameRuleChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a chargeable item completes charging.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemCompleteUse: ItemCompleteUseAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a chargeable item is released from",
"     * charging.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemReleaseUse: ItemReleaseUseAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a chargeable item starts charging.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemStartUse: ItemStartUseAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player successfully uses an item or",
"     * places a block by pressing the Use Item / Place Block",
"     * button. If multiple blocks are placed, this event will only",
"     * occur once at the beginning of the block placement. Note:",
"     * This event cannot be used with Hoe or Axe items.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemStartUseOn: ItemStartUseOnAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a chargeable item stops charging.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemStopUse: ItemStopUseAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player releases the Use Item / Place",
"     * Block button after successfully using an item. Note: This",
"     * event cannot be used with Hoe or Axe items.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemStopUseOn: ItemStopUseOnAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an item is successfully used by a",
"     * player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemUse: ItemUseAfterEventSignal;",
"    /**",
"     * @remarks",
"     * A lever has been pulled.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly leverAction: LeverActionAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a piston expands or retracts.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly pistonActivate: PistonActivateAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires for a block that is broken by a player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerBreakBlock: PlayerBreakBlockAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an {@link InputButton} state is",
"     * changed.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerButtonInput: PlayerButtonInputAfterEventSignal;",
"    /**",
"     * @remarks",
"     * Fires when a player moved to a different dimension.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerDimensionChange: PlayerDimensionChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerEmote: PlayerEmoteAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerGameModeChange: PlayerGameModeChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player's {@link InputMode} changes.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInputModeChange: PlayerInputModeChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a players input permissions change.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInputPermissionCategoryChange: PlayerInputPermissionCategoryChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * An event for when a player interacts with a block.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInteractWithBlock: PlayerInteractWithBlockAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player interacts with an entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInteractWithEntity: PlayerInteractWithEntityAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player joins a world.  See also",
"     * playerSpawn for another related event you can trap for when",
"     * a player is spawned the first time within a world.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerJoin: PlayerJoinAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player leaves a world.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerLeave: PlayerLeaveAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires for a block that is placed by a player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerPlaceBlock: PlayerPlaceBlockAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a player spawns or respawns. Note that",
"     * an additional flag within this event will tell you whether",
"     * the player is spawning right after join vs. a respawn.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerSpawn: PlayerSpawnAfterEventSignal;",
"    /**",
"     * @remarks",
"     * A pressure plate has popped back up (i.e., there are no",
"     * entities on the pressure plate.)",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly pressurePlatePop: PressurePlatePopAfterEventSignal;",
"    /**",
"     * @remarks",
"     * A pressure plate has pushed (at least one entity has moved",
"     * onto a pressure plate.)",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly pressurePlatePush: PressurePlatePushAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a projectile hits a block.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly projectileHitBlock: ProjectileHitBlockAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when a projectile hits an entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly projectileHitEntity: ProjectileHitEntityAfterEventSignal;",
"    /**",
"     * @remarks",
"     * A target block was hit.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly targetBlockHit: TargetBlockHitAfterEventSignal;",
"    /**",
"     * @remarks",
"     * A trip wire was tripped.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly tripWireTrip: TripWireTripAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event will be triggered when the weather changes within",
"     * Minecraft.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly weatherChange: WeatherChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly worldLoad: WorldLoadAfterEventSignal;",
"}",
"/**",
" * A set of events that fire before an actual action occurs. In",
" * most cases, you can potentially cancel or modify the",
" * impending event. Note that in before events any APIs that",
" * modify gameplay state will not function and will throw an",
" * error. (e.g., dimension.spawnEntity)",
" */",
"export class WorldBeforeEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This event is triggered after an event has been added to an",
"     * entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly effectAdd: EffectAddBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * Fires before an entity is removed from the world (for",
"     * example, unloaded or removed after being killed.)",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly entityRemove: EntityRemoveBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This event is fired after an explosion occurs.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly explosion: ExplosionBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires when an item is successfully used by a",
"     * player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly itemUse: ItemUseBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This event fires before a block is broken by a player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerBreakBlock: PlayerBreakBlockBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerGameModeChange: PlayerGameModeChangeBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * Fires before a player interacts with a block.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInteractWithBlock: PlayerInteractWithBlockBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * Fires before a player interacts with an entity.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerInteractWithEntity: PlayerInteractWithEntityBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * Fires when a player leaves the game.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly playerLeave: PlayerLeaveBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly weatherChange: WeatherChangeBeforeEventSignal;",
"}",
"export class WorldLoadAfterEvent {",
"    private constructor();",
"}",
"export class WorldLoadAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: WorldLoadAfterEvent) => void): (arg0: WorldLoadAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: WorldLoadAfterEvent) => void): void;",
"}",
"/**",
" * A BlockBoundingBox is an interface to an object which",
" * represents an AABB aligned rectangle.",
" * The BlockBoundingBox assumes that it was created in a valid",
" * state (min <= max) but cannot guarantee it (unless it was",
" * created using the associated {@link",
" * @minecraft/server.BlockBoundingBoxUtils} utility functions.",
" * The min/max coordinates represent the diametrically opposite",
" * corners of the rectangle.",
" * The BlockBoundingBox is not a representation of blocks - it",
" * has no association with any type, it is just a mathematical",
" * construct - so a rectangle with",
" * ( 0,0,0 ) -> ( 0,0,0 )",
" * has a size of ( 0,0,0 ) (unlike the very similar {@link",
" * BlockVolume} object)",
" */",
"export interface BlockBoundingBox {",
"    /**",
"     * @remarks",
"     * A {@link Vector3} that represents the largest corner of the",
"     * rectangle",
"     *",
"     */",
"    max: Vector3;",
"    /**",
"     * @remarks",
"     * A {@link Vector3} that represents the smallest corner of the",
"     * rectangle",
"     *",
"     */",
"    min: Vector3;",
"}",
"/**",
" * Contains a set of events that will be raised for a block.",
" * This object must be bound using the BlockRegistry.",
" */",
"export interface BlockCustomComponent {",
"    /**",
"     * @remarks",
"     * This function will be called before a player places the",
"     * block.",
"     *",
"     */",
"    beforeOnPlayerPlace?: (arg0: BlockComponentPlayerPlaceBeforeEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an entity falls onto the",
"     * block that this custom component is bound to.",
"     *",
"     */",
"    onEntityFallOn?: (arg0: BlockComponentEntityFallOnEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when the block that this custom",
"     * component is bound to is placed.",
"     *",
"     */",
"    onPlace?: (arg0: BlockComponentOnPlaceEvent, arg1: CustomComponentParameters) => void;",
"    onPlayerBreak?: (arg0: BlockComponentPlayerBreakEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when a player sucessfully",
"     * interacts with the block that this custom component is bound",
"     * to.",
"     *",
"     */",
"    onPlayerInteract?: (arg0: BlockComponentPlayerInteractEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when a block randomly ticks.",
"     *",
"     */",
"    onRandomTick?: (arg0: BlockComponentRandomTickEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an entity steps off the",
"     * block that this custom component is bound to.",
"     *",
"     */",
"    onStepOff?: (arg0: BlockComponentStepOffEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an entity steps onto the",
"     * block that this custom component is bound to.",
"     *",
"     */",
"    onStepOn?: (arg0: BlockComponentStepOnEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when a block ticks.",
"     *",
"     */",
"    onTick?: (arg0: BlockComponentTickEvent, arg1: CustomComponentParameters) => void;",
"}",
"/**",
" * Contains optional parameters for registering a block event.",
" */",
"export interface BlockEventOptions {",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire if the",
"     * impacted block's type matches this parameter.",
"     *",
"     */",
"    blockTypes?: string[];",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire if the",
"     * impacted block's permutation matches this parameter.",
"     *",
"     */",
"    permutations?: BlockPermutation[];",
"}",
"/**",
" * Contains additional options for a block fill operation.",
" */",
"export interface BlockFillOptions {",
"    /**",
"     * @remarks",
"     * When specified, the fill operation will include / exclude",
"     * the blocks added to the block filter.",
"     *",
"     */",
"    blockFilter?: BlockFilter;",
"    /**",
"     * @remarks",
"     * When true fillBlocks will not error if part of the fill",
"     * volume is outside of loaded chunks bounds. Instead it will",
"     * just fill the blocks that are inside the loaded chunk bounds",
"     * and ignoring blocks outside.",
"     *",
"     */",
"    ignoreChunkBoundErrors?: boolean;",
"}",
"/**",
" * Options to include or exclude blocks based on type, tag or",
" * permutation. If no include options are added it will select",
" * all blocks that are not rejected by the exclude options. If",
" * at least one include option is added the block must match",
" * one of the include options to not be rejected.",
" */",
"export interface BlockFilter {",
"    /**",
"     * @remarks",
"     * Array of block permutations that the filter should reject if",
"     * any matches.",
"     *",
"     */",
"    excludePermutations?: BlockPermutation[];",
"    /**",
"     * @remarks",
"     * Array of block tags that the filter should reject if any",
"     * matches.",
"     *",
"     */",
"    excludeTags?: string[];",
"    /**",
"     * @remarks",
"     * Array of block types that the filter should reject if any",
"     * matches.",
"     *",
"     */",
"    excludeTypes?: string[];",
"    /**",
"     * @remarks",
"     * Array of block permutations that the filter should select if",
"     * at least one matches.",
"     *",
"     */",
"    includePermutations?: BlockPermutation[];",
"    /**",
"     * @remarks",
"     * Array of block tags that the filter should select if at",
"     * least one matches.",
"     *",
"     */",
"    includeTags?: string[];",
"    /**",
"     * @remarks",
"     * Array of block types that the filter should select if at",
"     * least one matches.",
"     *",
"     */",
"    includeTypes?: string[];",
"}",
"/**",
" * Contains more information for events where a block is hit.",
" */",
"export interface BlockHitInformation {",
"    /**",
"     * @remarks",
"     * Block that was hit.",
"     *",
"     */",
"    block: Block;",
"    /**",
"     * @remarks",
"     * Face of the block that was hit.",
"     *",
"     */",
"    face: Direction;",
"    /**",
"     * @remarks",
"     * Location relative to the bottom north-west corner of the",
"     * block.",
"     *",
"     */",
"    faceLocation: Vector3;",
"}",
"/**",
" * Contains information for block raycast hit results.",
" */",
"export interface BlockRaycastHit {",
"    /**",
"     * @remarks",
"     * Block that was hit.",
"     *",
"     */",
"    block: Block;",
"    /**",
"     * @remarks",
"     * Face of the block that was hit.",
"     *",
"     */",
"    face: Direction;",
"    /**",
"     * @remarks",
"     * Hit location relative to the bottom north-west corner of the",
"     * block.",
"     *",
"     */",
"    faceLocation: Vector3;",
"}",
"/**",
" * Contains additional options for configuring a block raycast",
" * query.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface BlockRaycastOptions extends BlockFilter {",
"    /**",
"     * @remarks",
"     * If true, liquid blocks will be considered as blocks that",
"     * 'stop' the raycast.",
"     *",
"     */",
"    includeLiquidBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * If true, passable blocks like vines and flowers will be",
"     * considered as blocks that 'stop' the raycast.",
"     *",
"     */",
"    includePassableBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * Maximum distance, in blocks, to process the raycast.",
"     *",
"     */",
"    maxDistance?: number;",
"}",
"/**",
" * Used to initiate a full-screen color fade.",
" */",
"export interface CameraFadeOptions {",
"    /**",
"     * @remarks",
"     * Fade color to use.",
"     *",
"     */",
"    fadeColor?: RGB;",
"    /**",
"     * @remarks",
"     * Time in seconds for the fade-in, hold, and fade-out seconds.",
"     *",
"     */",
"    fadeTime?: CameraFadeTimeOptions;",
"}",
"/**",
" * Contains timings for a fade transition.",
" */",
"export interface CameraFadeTimeOptions {",
"    /**",
"     * @remarks",
"     * Time, in seconds, for a fade-in.",
"     *",
"     */",
"    fadeInTime: number;",
"    /**",
"     * @remarks",
"     * Time, in seconds, for a fade-out.",
"     *",
"     */",
"    fadeOutTime: number;",
"    /**",
"     * @remarks",
"     * Time, in seconds, to hold the full screen color.",
"     *",
"     */",
"    holdTime: number;",
"}",
"/**",
" * Options to control pivot points and offsets of the third",
" * person boom preset.",
" */",
"export interface CameraFixedBoomOptions {",
"    /**",
"     * @remarks",
"     * Changes the pivot point to be <x, y, z> away from the",
"     * player.",
"     *",
"     */",
"    entityOffset?: Vector3;",
"    /**",
"     * @remarks",
"     * Offsets the camera from center by <x, y>.",
"     *",
"     */",
"    viewOffset?: Vector2;",
"}",
"export interface CameraSetFacingOptions {",
"    easeOptions?: EaseOptions;",
"    facingEntity: Entity;",
"    location?: Vector3;",
"}",
"export interface CameraSetLocationOptions {",
"    easeOptions?: EaseOptions;",
"    location: Vector3;",
"}",
"export interface CameraSetPosOptions {",
"    easeOptions?: EaseOptions;",
"    facingLocation: Vector3;",
"    location?: Vector3;",
"}",
"export interface CameraSetRotOptions {",
"    easeOptions?: EaseOptions;",
"    location?: Vector3;",
"    rotation: Vector2;",
"}",
"/**",
" * Used to target an entity with a free camera.",
" */",
"export interface CameraTargetOptions {",
"    /**",
"     * @remarks",
"     * Set an <x, y, z> offset from the target entity's center.",
"     *",
"     */",
"    offsetFromTargetCenter?: Vector3;",
"    /**",
"     * @remarks",
"     * The singular entity you want to target.",
"     *",
"     */",
"    targetEntity: Entity;",
"}",
"/**",
" * Contains a set of updates to the component definition state",
" * of an entity.",
" */",
"export interface DefinitionModifier {",
"    /**",
"     * @remarks",
"     * Retrieves the list of component groups that will be added",
"     * via this definition modification.",
"     *",
"     */",
"    addedComponentGroups: string[];",
"    /**",
"     * @remarks",
"     * The list of component groups that will be removed via this",
"     * definition modification.",
"     *",
"     */",
"    removedComponentGroups: string[];",
"}",
"/**",
" * An exact coordinate within the world, including its",
" * dimension and location.",
" */",
"export interface DimensionLocation {",
"    /**",
"     * @remarks",
"     * Dimension that this coordinate is associated with.",
"     *",
"     */",
"    dimension: Dimension;",
"    /**",
"     * @remarks",
"     * X component of this dimension-location.",
"     *",
"     */",
"    x: number;",
"    /**",
"     * @remarks",
"     * Y component of this dimension-location.",
"     *",
"     */",
"    y: number;",
"    /**",
"     * @remarks",
"     * Z component of this dimension-location.",
"     *",
"     */",
"    z: number;",
"}",
"/**",
" * Contains options associated with easing between positions",
" * and/or rotations.",
" */",
"export interface EaseOptions {",
"    /**",
"     * @remarks",
"     * Time for the ease operation.",
"     *",
"     */",
"    easeTime?: number;",
"    /**",
"     * @remarks",
"     * Type of ease operation to use.",
"     *",
"     */",
"    easeType?: EasingType;",
"}",
"/**",
" * This interface represents a specific leveled enchantment",
" * that is applied to an item.",
" */",
"export interface Enchantment {",
"    /**",
"     * @remarks",
"     * The level of this enchantment instance.",
"     *",
"     */",
"    level: number;",
"    /**",
"     * @remarks",
"     * The enchantment type of this instance.",
"     *",
"     */",
"    type: EnchantmentType;",
"}",
"/**",
" * Additional options for when damage has been applied via a",
" * projectile.",
" */",
"export interface EntityApplyDamageByProjectileOptions {",
"    /**",
"     * @remarks",
"     * Optional entity that fired the projectile.",
"     *",
"     */",
"    damagingEntity?: Entity;",
"    /**",
"     * @remarks",
"     * Projectile that caused damage.",
"     *",
"     */",
"    damagingProjectile: Entity;",
"}",
"/**",
" * Additional descriptions and metadata for a damage event.",
" */",
"export interface EntityApplyDamageOptions {",
"    /**",
"     * @remarks",
"     * Underlying cause of the damage.",
"     *",
"     */",
"    cause: EntityDamageCause;",
"    /**",
"     * @remarks",
"     * Optional entity that caused the damage.",
"     *",
"     */",
"    damagingEntity?: Entity;",
"}",
"/**",
" * Provides information about how damage has been applied to an",
" * entity.",
" */",
"export interface EntityDamageSource {",
"    /**",
"     * @remarks",
"     * Cause enumeration of damage.",
"     *",
"     */",
"    cause: EntityDamageCause;",
"    /**",
"     * @remarks",
"     * Optional entity that caused the damage.",
"     *",
"     */",
"    damagingEntity?: Entity;",
"    /**",
"     * @remarks",
"     * Optional projectile that may have caused damage.",
"     *",
"     */",
"    damagingProjectile?: Entity;",
"}",
"/**",
" * Specifies additional filters that are used in registering a",
" * data driven trigger event for entities.",
" */",
"export interface EntityDataDrivenTriggerEventOptions {",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire for entities",
"     * that match the entities within this collection.",
"     *",
"     */",
"    entities?: Entity[];",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire if the",
"     * impacted entities' type matches this parameter.",
"     *",
"     */",
"    entityTypes?: string[];",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire if the",
"     * impacted triggered event matches one of the events listed in",
"     * this parameter.",
"     *",
"     */",
"    eventTypes?: string[];",
"}",
"/**",
" * Contains additional options for entity effects.",
" */",
"export interface EntityEffectOptions {",
"    /**",
"     * @remarks",
"     * The strength of the effect.",
"     *",
"     */",
"    amplifier?: number;",
"    /**",
"     * @remarks",
"     * If true, will show particles when effect is on the entity.",
"     *",
"     */",
"    showParticles?: boolean;",
"}",
"/**",
" * Contains optional parameters for registering an entity",
" * event.",
" */",
"export interface EntityEventOptions {",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire for entities",
"     * that match the entities within this collection.",
"     *",
"     */",
"    entities?: Entity[];",
"    /**",
"     * @remarks",
"     * If this value is set, this event will only fire if the",
"     * impacted entities' type matches this parameter.",
"     *",
"     */",
"    entityTypes?: string[];",
"}",
"/**",
" * Contains options for filtering entities.",
" */",
"export interface EntityFilter {",
"    /**",
"     * @remarks",
"     * Excludes entities that match one or more of the specified",
"     * families.",
"     *",
"     */",
"    excludeFamilies?: string[];",
"    /**",
"     * @remarks",
"     * Excludes entities if have a specific gamemode that matches",
"     * the specified gamemode.",
"     *",
"     */",
"    excludeGameModes?: GameMode[];",
"    /**",
"     * @remarks",
"     * Excludes entities that have a name that match one of the",
"     * specified values.",
"     *",
"     */",
"    excludeNames?: string[];",
"    /**",
"     * @remarks",
"     * Excludes entities with a tag that matches one of the",
"     * specified values.",
"     *",
"     */",
"    excludeTags?: string[];",
"    /**",
"     * @remarks",
"     * Excludes entities if they are one of the specified types.",
"     *",
"     */",
"    excludeTypes?: string[];",
"    /**",
"     * @remarks",
"     * If specified, includes entities that match all of the",
"     * specified families.",
"     *",
"     */",
"    families?: string[];",
"    /**",
"     * @remarks",
"     * If specified, includes entities with a gamemode that matches",
"     * the specified gamemode.",
"     *",
"     */",
"    gameMode?: GameMode;",
"    /**",
"     * @remarks",
"     * If specified, will only include entities that have at most",
"     * this horizontal rotation.",
"     *",
"     */",
"    maxHorizontalRotation?: number;",
"    /**",
"     * @remarks",
"     * If defined, only players that have at most this level are",
"     * returned.",
"     *",
"     */",
"    maxLevel?: number;",
"    /**",
"     * @remarks",
"     * If specified, only entities that have at most this vertical",
"     * rotation are returned.",
"     *",
"     */",
"    maxVerticalRotation?: number;",
"    /**",
"     * @remarks",
"     * If specified, will only include entities that have at a",
"     * minimum this horizontal rotation.",
"     *",
"     */",
"    minHorizontalRotation?: number;",
"    /**",
"     * @remarks",
"     * If defined, only players that have at least this level are",
"     * returned.",
"     *",
"     */",
"    minLevel?: number;",
"    /**",
"     * @remarks",
"     * If specified, will only include entities that have at least",
"     * this vertical rotation.",
"     *",
"     */",
"    minVerticalRotation?: number;",
"    /**",
"     * @remarks",
"     * Includes entities with the specified name.",
"     *",
"     */",
"    name?: string;",
"    propertyOptions?: EntityQueryPropertyOptions[];",
"    /**",
"     * @remarks",
"     * Gets/sets a collection of EntityQueryScoreOptions objects",
"     * with filters for specific scoreboard objectives.",
"     *",
"     */",
"    scoreOptions?: EntityQueryScoreOptions[];",
"    /**",
"     * @remarks",
"     * Includes entities that match all of the specified tags.",
"     *",
"     */",
"    tags?: string[];",
"    /**",
"     * @remarks",
"     * If defined, entities that match this type are included.",
"     *",
"     */",
"    type?: string;",
"}",
"/**",
" * Contains additional information about an entity that was",
" * hit.",
" */",
"export interface EntityHitInformation {",
"    /**",
"     * @remarks",
"     * Entity that was hit.",
"     *",
"     */",
"    entity?: Entity;",
"}",
"/**",
" * Contains options for selecting entities within an area.",
" * @example blockConditional.ts",
" * ```typescript",
" * import { DimensionLocation } from '@minecraft/server';",
" *",
" * function blockConditional(targetLocation: DimensionLocation) {",
" *   targetLocation.dimension",
" *     .getEntities({",
" *       type: 'fox',",
" *     })",
" *     .filter((entity) => {",
" *       const block = targetLocation.dimension.getBlock({",
" *         x: entity.location.x,",
" *         y: entity.location.y - 1,",
" *         z: entity.location.z,",
" *       });",
" *",
" *       return block !== undefined && block.matches('minecraft:stone');",
" *     })",
" *     .forEach((entity) => {",
" *       targetLocation.dimension.spawnEntity('salmon', entity.location);",
" *     });",
" * }",
" * ```",
" * @example findEntitiesHavingPropertyEqualsTo.ts",
" * ```typescript",
" * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
" *",
" * function findEntitiesHavingPropertyEqualsTo(",
" *     targetLocation: DimensionLocation",
" * ) {",
" *   // Minecraft bees have a has_nectar boolean property",
" *   const queryOption: EntityQueryOptions = {",
" *     propertyOptions: [{ propertyId: 'minecraft:has_nectar', value: { equals: true } }],",
" *   };",
" *",
" *   const entities = targetLocation.dimension.getEntities(queryOption);",
" * }",
" * ```",
" * @example playSoundChained.ts",
" * ```typescript",
" * import { DimensionLocation } from '@minecraft/server';",
" *",
" * function playSoundChained(targetLocation: DimensionLocation) {",
" *   const targetPlayers = targetLocation.dimension.getPlayers();",
" *   const originEntities = targetLocation.dimension.getEntities({",
" *     type: 'armor_stand',",
" *     name: 'myArmorStand',",
" *     tags: ['dummyTag1'],",
" *     excludeTags: ['dummyTag2'],",
" *   });",
" *",
" *   originEntities.forEach((entity) => {",
" *     targetPlayers.forEach((player) => {",
" *       player.playSound('raid.horn');",
" *     });",
" *   });",
" * }",
" * ```",
" * @example setScoreboardChained.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" *",
" * function setScoreboardChained(",
" *     targetLocation: DimensionLocation",
" * ) {",
" *   const objective = world.scoreboard.addObjective('scoreObjective1', 'dummy');",
" *   targetLocation.dimension",
" *     .getEntities({",
" *       type: 'armor_stand',",
" *       name: 'myArmorStand',",
" *     })",
" *     .forEach((entity) => {",
" *       if (entity.scoreboardIdentity !== undefined) {",
" *         objective.setScore(entity.scoreboardIdentity, -1);",
" *       }",
" *     });",
" * }",
" * ```",
" * @example summonMobChained.ts",
" * ```typescript",
" * import { DimensionLocation } from '@minecraft/server';",
" *",
" * function summonMobChained(targetLocation: DimensionLocation) {",
" *   const armorStandArray = targetLocation.dimension.getEntities({",
" *     type: 'armor_stand',",
" *   });",
" *   const playerArray = targetLocation.dimension.getPlayers({",
" *     location: { x: 0, y: -60, z: 0 },",
" *     closest: 4,",
" *     maxDistance: 15,",
" *   });",
" *   armorStandArray.forEach((entity) => {",
" *     playerArray.forEach((player) => {",
" *       targetLocation.dimension.spawnEntity('pig', {",
" *         x: player.location.x + 1,",
" *         y: player.location.y,",
" *         z: player.location.z,",
" *       });",
" *     });",
" *   });",
" * }",
" * ```",
" * @example bounceSkeletons.ts",
" * ```typescript",
" * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
" *",
" * function bounceSkeletons(targetLocation: DimensionLocation) {",
" *   const mobs = ['creeper', 'skeleton', 'sheep'];",
" *",
" *   // create some sample mob data",
" *   for (let i = 0; i < 10; i++) {",
" *     targetLocation.dimension.spawnEntity(mobs[i % mobs.length], targetLocation);",
" *   }",
" *",
" *   const eqo: EntityQueryOptions = {",
" *     type: 'skeleton',",
" *   };",
" *",
" *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
" *     entity.applyKnockback(0, 0, 0, 1);",
" *   }",
" * }",
" * ```",
" * @example tagsQuery.ts",
" * ```typescript",
" * import { EntityQueryOptions, DimensionLocation } from '@minecraft/server';",
" *",
" * function tagsQuery(targetLocation: DimensionLocation) {",
" *   const mobs = ['creeper', 'skeleton', 'sheep'];",
" *",
" *   // create some sample mob data",
" *   for (let i = 0; i < 10; i++) {",
" *     const mobTypeId = mobs[i % mobs.length];",
" *     const entity = targetLocation.dimension.spawnEntity(mobTypeId, targetLocation);",
" *     entity.addTag('mobparty.' + mobTypeId);",
" *   }",
" *",
" *   const eqo: EntityQueryOptions = {",
" *     tags: ['mobparty.skeleton'],",
" *   };",
" *",
" *   for (const entity of targetLocation.dimension.getEntities(eqo)) {",
" *     entity.kill();",
" *   }",
" * }",
" * ```",
" * @example testThatEntityIsFeatherItem.ts",
" * ```typescript",
" * import { EntityItemComponent, EntityComponentTypes, DimensionLocation } from '@minecraft/server';",
" *",
" * function testThatEntityIsFeatherItem(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const items = targetLocation.dimension.getEntities({",
" *     location: targetLocation,",
" *     maxDistance: 20,",
" *   });",
" *",
" *   for (const item of items) {",
" *     const itemComp = item.getComponent(EntityComponentTypes.Item) as EntityItemComponent;",
" *",
" *     if (itemComp) {",
" *       if (itemComp.itemStack.typeId.endsWith('feather')) {",
" *         log('Success! Found a feather', 1);",
" *       }",
" *     }",
" *   }",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface EntityQueryOptions extends EntityFilter {",
"    /**",
"     * @remarks",
"     * Limits the number of entities to return, opting for the",
"     * closest N entities as specified by this property. The",
"     * location value must also be specified on the query options",
"     * object.",
"     *",
"     */",
"    closest?: number;",
"    /**",
"     * @remarks",
"     * Limits the number of entities to return, opting for the",
"     * farthest N entities as specified by this property. The",
"     * location value must also be specified on the query options",
"     * object.",
"     *",
"     */",
"    farthest?: number;",
"    /**",
"     * @remarks",
"     * Adds a seed location to the query that is used in",
"     * conjunction with closest, farthest, limit, volume, and",
"     * distance properties.",
"     *",
"     */",
"    location?: Vector3;",
"    /**",
"     * @remarks",
"     * If specified, includes entities that are less than this",
"     * distance away from the location specified in the location",
"     * property.",
"     *",
"     */",
"    maxDistance?: number;",
"    /**",
"     * @remarks",
"     * If specified, includes entities that are least this distance",
"     * away from the location specified in the location property.",
"     *",
"     */",
"    minDistance?: number;",
"    /**",
"     * @remarks",
"     * In conjunction with location, specified a cuboid volume of",
"     * entities to include.",
"     *",
"     */",
"    volume?: Vector3;",
"}",
"export interface EntityQueryPropertyOptions {",
"    exclude?: boolean;",
"    propertyId: string;",
"    value?:",
"        | boolean",
"        | string",
"        | EqualsComparison",
"        | GreaterThanComparison",
"        | GreaterThanOrEqualsComparison",
"        | LessThanComparison",
"        | LessThanOrEqualsComparison",
"        | NotEqualsComparison",
"        | RangeComparison;",
"}",
"/**",
" * Contains additional options for filtering players based on",
" * their score for an objective.",
" */",
"export interface EntityQueryScoreOptions {",
"    /**",
"     * @remarks",
"     * If set to true, entities and players within this score range",
"     * are excluded from query results.",
"     *",
"     */",
"    exclude?: boolean;",
"    /**",
"     * @remarks",
"     * If defined, only players that have a score equal to or under",
"     * maxScore are included.",
"     *",
"     */",
"    maxScore?: number;",
"    /**",
"     * @remarks",
"     * If defined, only players that have a score equal to or over",
"     * minScore are included.",
"     *",
"     */",
"    minScore?: number;",
"    /**",
"     * @remarks",
"     * Identifier of the scoreboard objective to filter on.",
"     *",
"     */",
"    objective?: string;",
"}",
"/**",
" * Contains information for entity raycast hit results.",
" */",
"export interface EntityRaycastHit {",
"    /**",
"     * @remarks",
"     * Distance from ray origin to entity bounds.",
"     *",
"     */",
"    distance: number;",
"    /**",
"     * @remarks",
"     * Entity that was hit.",
"     *",
"     */",
"    entity: Entity;",
"}",
"/**",
" * Contains additional options for an entity raycast operation.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface EntityRaycastOptions extends EntityFilter {",
"    /**",
"     * @remarks",
"     * If true, blocks will not be considered as blocks that 'stop'",
"     * the raycast.",
"     *",
"     */",
"    ignoreBlockCollision?: boolean;",
"    /**",
"     * @remarks",
"     * If true, liquid blocks will be considered as blocks that",
"     * 'stop' the raycast.",
"     *",
"     */",
"    includeLiquidBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * If true, passable blocks like vines and flowers will be",
"     * considered as blocks that 'stop' the raycast.",
"     *",
"     */",
"    includePassableBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * Maximum distance, in blocks, to process the raycast.",
"     *",
"     */",
"    maxDistance?: number;",
"}",
"/**",
" * Equal to operator.",
" */",
"export interface EqualsComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    equals: boolean | number | string;",
"}",
"/**",
" * Additional configuration options for the {@link",
" * Dimension.createExplosion} method.",
" * @example createNoBlockExplosion.ts",
" * ```typescript",
" * import { DimensionLocation } from '@minecraft/server';",
" * import { Vector3Utils } from '@minecraft/math';",
" *",
" * function createNoBlockExplosion(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const explodeNoBlocksLoc = Vector3Utils.floor(Vector3Utils.add(targetLocation, { x: 1, y: 2, z: 1 }));",
" *",
" *   log('Creating an explosion of radius 15 that does not break blocks.');",
" *   targetLocation.dimension.createExplosion(explodeNoBlocksLoc, 15, { breaksBlocks: false });",
" * }",
" * ```",
" * @example createExplosions.ts",
" * ```typescript",
" * import { DimensionLocation } from '@minecraft/server';",
" * import { Vector3Utils } from '@minecraft/math';",
" *",
" * function createExplosions(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const explosionLoc = Vector3Utils.add(targetLocation, { x: 0.5, y: 0.5, z: 0.5 });",
" *",
" *   log('Creating an explosion of radius 15 that causes fire.');",
" *   targetLocation.dimension.createExplosion(explosionLoc, 15, { causesFire: true });",
" *",
" *   const belowWaterLoc = Vector3Utils.add(targetLocation, { x: 3, y: 1, z: 3 });",
" *",
" *   log('Creating an explosion of radius 10 that can go underwater.');",
" *   targetLocation.dimension.createExplosion(belowWaterLoc, 10, { allowUnderwater: true });",
" * }",
" * ```",
" */",
"export interface ExplosionOptions {",
"    /**",
"     * @remarks",
"     * Whether parts of the explosion also impact underwater.",
"     *",
"     */",
"    allowUnderwater?: boolean;",
"    /**",
"     * @remarks",
"     * Whether the explosion will break blocks within the blast",
"     * radius.",
"     *",
"     */",
"    breaksBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * If true, the explosion is accompanied by fires within or",
"     * near the blast radius.",
"     *",
"     */",
"    causesFire?: boolean;",
"    /**",
"     * @remarks",
"     * Optional source of the explosion.",
"     *",
"     */",
"    source?: Entity;",
"}",
"/**",
" * Greater than operator.",
" */",
"export interface GreaterThanComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    greaterThan: number;",
"}",
"/**",
" * Greater than or equal to operator.",
" */",
"export interface GreaterThanOrEqualsComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    greaterThanOrEquals: number;",
"}",
"/**",
" * An interface that is passed into {@link",
" * @minecraft/Server.PlayerButtonInputAfterEventSignal.subscribe}",
" * that filters out which events are passed to the provided",
" * callback.",
" */",
"export interface InputEventOptions {",
"    /**",
"     * @remarks",
"     * The buttons the callback should be called for. If undefined,",
"     * the callback will be called for all buttons.",
"     *",
"     */",
"    buttons?: InputButton[];",
"    /**",
"     * @remarks",
"     * The state the callback should be called for. If undefined,",
"     * the callback will be called for all button states.",
"     *",
"     */",
"    state?: ButtonState;",
"}",
"/**",
" * Contains a set of events that will be raised for an item.",
" * This object must be bound using the ItemComponentRegistry.",
" */",
"export interface ItemCustomComponent {",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is hitting an entity and about to take durability",
"     * damage.",
"     *",
"     */",
"    onBeforeDurabilityDamage?: (",
"        arg0: ItemComponentBeforeDurabilityDamageEvent,",
"        arg1: CustomComponentParameters,",
"    ) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component's use duration was completed.",
"     *",
"     */",
"    onCompleteUse?: (arg0: ItemComponentCompleteUseEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is eaten by an entity.",
"     *",
"     */",
"    onConsume?: (arg0: ItemComponentConsumeEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is used to hit another entity.",
"     *",
"     */",
"    onHitEntity?: (arg0: ItemComponentHitEntityEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is used to mine a block.",
"     *",
"     */",
"    onMineBlock?: (arg0: ItemComponentMineBlockEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is used by a player.",
"     *",
"     */",
"    onUse?: (arg0: ItemComponentUseEvent, arg1: CustomComponentParameters) => void;",
"    /**",
"     * @remarks",
"     * This function will be called when an item containing this",
"     * component is used on a block.",
"     *",
"     */",
"    onUseOn?: (arg0: ItemComponentUseOnEvent, arg1: CustomComponentParameters) => void;",
"}",
"/**",
" * Provides additional options for {@link",
" * StructureManager.placeJigsaw}.",
" */",
"export interface JigsawPlaceOptions {",
"    /**",
"     * @remarks",
"     * Whether entities should be included in the structure.",
"     * Defaults to true.",
"     *",
"     */",
"    includeEntities?: boolean;",
"    /**",
"     * @remarks",
"     * Whether the jigsaw blocks should be kept when generating the",
"     * structure. Defaults to false.",
"     *",
"     */",
"    keepJigsaws?: boolean;",
"}",
"/**",
" * Provides additional options for {@link",
" * StructureManager.placeJigsawStructure}.",
" */",
"export interface JigsawStructurePlaceOptions {",
"    /**",
"     * @remarks",
"     * Whether the start height defined in the jigsaw structure",
"     * definition should be ignored and overridden with the",
"     * specified y coordinate. Defaults to false.",
"     *",
"     */",
"    ignoreStartHeight?: boolean;",
"    /**",
"     * @remarks",
"     * Whether entities should be included in the structure.",
"     * Defaults to true.",
"     *",
"     */",
"    includeEntities?: boolean;",
"    /**",
"     * @remarks",
"     * Whether the jigsaw blocks should be kept when generating the",
"     * structure. Defaults to false.",
"     *",
"     */",
"    keepJigsaws?: boolean;",
"}",
"/**",
" * Less than operator.",
" */",
"export interface LessThanComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    lessThan: number;",
"}",
"/**",
" * Less than or equal to operator.",
" */",
"export interface LessThanOrEqualsComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    lessThanOrEquals: number;",
"}",
"/**",
" * Additional configuration options for {@link",
" * World.playMusic}/{@link World.queueMusic} methods.",
" */",
"export interface MusicOptions {",
"    /**",
"     * @remarks",
"     * Specifies a fade overlap for music at the end of play.",
"     *",
"     */",
"    fade?: number;",
"    /**",
"     * @remarks",
"     * If set to true, this music track will play repeatedly.",
"     *",
"     */",
"    loop?: boolean;",
"    /**",
"     * @remarks",
"     * Relative volume level of the music.",
"     *",
"     */",
"    volume?: number;",
"}",
"/**",
" * Not equal to operator.",
" */",
"export interface NotEqualsComparison {",
"    /**",
"     * @remarks",
"     * Threshold value compared against.",
"     *",
"     */",
"    notEquals: boolean | number | string;",
"}",
"/**",
" * Contains additional options for how an animation is played.",
" */",
"export interface PlayAnimationOptions {",
"    /**",
"     * @remarks",
"     * Amount of time to fade out after an animation stops.",
"     *",
"     */",
"    blendOutTime?: number;",
"    /**",
"     * @remarks",
"     * Specifies a controller to use that has been defined on the",
"     * entity.",
"     *",
"     */",
"    controller?: string;",
"    /**",
"     * @remarks",
"     * Specifies the state to transition to.",
"     *",
"     */",
"    nextState?: string;",
"    /**",
"     * @remarks",
"     * A list of players the animation will be visible to.",
"     *",
"     */",
"    players?: Player[];",
"    /**",
"     * @remarks",
"     * Specifies a Molang expression for when this animation should",
"     * complete.",
"     *",
"     */",
"    stopExpression?: string;",
"}",
"/**",
" * Additional options for how a sound plays for a player.",
" */",
"export interface PlayerSoundOptions {",
"    /**",
"     * @remarks",
"     * Location of the sound; if not specified, the sound is played",
"     * near a player.",
"     *",
"     */",
"    location?: Vector3;",
"    /**",
"     * @remarks",
"     * Optional pitch of the sound.",
"     *",
"     */",
"    pitch?: number;",
"    /**",
"     * @remarks",
"     * Optional volume of the sound.",
"     *",
"     */",
"    volume?: number;",
"}",
"/**",
" * Optional arguments for",
" * @minecraft/server.EntityProjectileComponent.shoot.",
" */",
"export interface ProjectileShootOptions {",
"    /**",
"     * @remarks",
"     * Controls the accuracy of the shot. A value of 0 is perfect",
"     * accuracy.",
"     *",
"     */",
"    uncertainty?: number;",
"}",
"/**",
" * Operator represents a lower/upper bound structure for",
" * expressing a potential range of numbers.",
" */",
"export interface RangeComparison {",
"    /**",
"     * @remarks",
"     * Lower bound within a range.",
"     *",
"     */",
"    lowerBound: number;",
"    /**",
"     * @remarks",
"     * Upper bound within a range.",
"     *",
"     */",
"    upperBound: number;",
"}",
"/**",
" * Defines a JSON structure that is used for more flexible.",
" * @example addTranslatedSign.ts",
" * ```typescript",
" * import { DimensionLocation, world, BlockPermutation, BlockComponentTypes } from '@minecraft/server';",
" *",
" * function placeTranslatedSign(location: DimensionLocation, text: string) {",
" *     const signBlock = location.dimension.getBlock(location);",
" *",
" *     if (!signBlock) {",
" *         console.warn('Could not find a block at specified location.');",
" *         return;",
" *     }",
" *     const signPerm = BlockPermutation.resolve('minecraft:standing_sign', { ground_sign_direction: 8 });",
" *     signBlock.setPermutation(signPerm);",
" *",
" *     const signComponent = signBlock.getComponent(BlockComponentTypes.Sign);",
" *     if (signComponent) {",
" *         signComponent.setText({ translate: 'item.skull.player.name', with: [text] });",
" *     } else {",
" *         console.error('Could not find a sign component on the block.');",
" *     }",
" * }",
" *",
" * placeTranslatedSign(",
" *     {",
" *         dimension: world.getDimension('overworld'),",
" *         x: 0,",
" *         y: 0,",
" *         z: 0,",
" *     },",
" *     'Steve',",
" * );",
" * ```",
" * @example showTranslatedMessageForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { MessageFormResponse, MessageFormData } from '@minecraft/server-ui';",
" *",
" * function showTranslatedMessageForm(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   const messageForm = new MessageFormData()",
" *     .title({ translate: 'permissions.removeplayer' })",
" *     .body({ translate: 'accessibility.list.or.two', with: ['Player 1', 'Player 2'] })",
" *     .button1('Player 1')",
" *     .button2('Player 2');",
" *",
" *   messageForm",
" *     .show(players[0])",
" *     .then((formData: MessageFormResponse) => {",
" *       // player canceled the form, or another dialog was up and open.",
" *       if (formData.canceled || formData.selection === undefined) {",
" *         return;",
" *       }",
" *",
" *       log(`You selected ${formData.selection === 0 ? 'Player 1' : 'Player 2'}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" * @example addTranslatedSign.ts",
" * ```typescript",
" * import { world, BlockPermutation, BlockSignComponent, BlockComponentTypes, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftBlockTypes } from '@minecraft/vanilla-data';",
" *",
" * function addTranslatedSign(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const dim = players[0].dimension;",
" *",
" *   const signBlock = dim.getBlock(targetLocation);",
" *",
" *   if (!signBlock) {",
" *     log('Could not find a block at specified location.');",
" *     return -1;",
" *   }",
" *   const signPerm = BlockPermutation.resolve(MinecraftBlockTypes.StandingSign, { ground_sign_direction: 8 });",
" *",
" *   signBlock.setPermutation(signPerm);",
" *",
" *   const signComponent = signBlock.getComponent(BlockComponentTypes.Sign) as BlockSignComponent;",
" *",
" *   signComponent?.setText({ translate: 'item.skull.player.name', with: [players[0].name] });",
" * }",
" * ```",
" */",
"export interface RawMessage {",
"    /**",
"     * @remarks",
"     * Provides a raw-text equivalent of the current message.",
"     *",
"     */",
"    rawtext?: RawMessage[];",
"    /**",
"     * @remarks",
"     * Provides a token that will get replaced with the value of a",
"     * score.",
"     *",
"     */",
"    score?: RawMessageScore;",
"    /**",
"     * @remarks",
"     * Provides a string literal value to use.",
"     *",
"     */",
"    text?: string;",
"    /**",
"     * @remarks",
"     * Provides a translation token where, if the client has an",
"     * available resource in the players' language which matches",
"     * the token, will get translated on the client.",
"     *",
"     */",
"    translate?: string;",
"    /**",
"     * @remarks",
"     * Arguments for the translation token. Can be either an array",
"     * of strings or RawMessage containing an array of raw text",
"     * objects.",
"     *",
"     */",
"    with?: string[] | RawMessage;",
"}",
"/**",
" * Provides a description of a score token to use within a raw",
" * message.",
" */",
"export interface RawMessageScore {",
"    /**",
"     * @remarks",
"     * Name of the score value to match.",
"     *",
"     */",
"    name?: string;",
"    /**",
"     * @remarks",
"     * Name of the score value to match.",
"     *",
"     */",
"    objective?: string;",
"}",
"/**",
" * A `RawMessage` with only the `rawtext` property. When a",
" * `RawMessage` is serialized the contents are put into a",
" * rawtext property, so this is useful when reading saved",
" * RawMessages. See `BlockSignComponent.setText` and",
" * `BlockSignComponent.getRawText` for examples.",
" */",
"export interface RawText {",
"    /**",
"     * @remarks",
"     * A serialization of the current value of an associated sign.",
"     *",
"     */",
"    rawtext?: RawMessage[];",
"}",
"/**",
" * Represents a fully customizable color within Minecraft.",
" */",
"export interface RGB {",
"    /**",
"     * @remarks",
"     * Determines a color's blue component. Valid values are",
"     * between 0 and 1.0.",
"     *",
"     */",
"    blue: number;",
"    /**",
"     * @remarks",
"     * Determines a color's green component. Valid values are",
"     * between 0 and 1.0.",
"     *",
"     */",
"    green: number;",
"    /**",
"     * @remarks",
"     * Determines a color's red component. Valid values are between",
"     * 0 and 1.0.",
"     *",
"     */",
"    red: number;",
"}",
"/**",
" * Represents a fully customizable color within Minecraft.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface RGBA extends RGB {",
"    /**",
"     * @remarks",
"     * Determines a color's alpha (opacity) component. Valid values",
"     * are between 0 (transparent) and 1.0 (opaque).",
"     *",
"     */",
"    alpha: number;",
"}",
"/**",
" * Contains additional options for how a scoreboard should be",
" * displayed within its display slot.",
" */",
"export interface ScoreboardObjectiveDisplayOptions {",
"    /**",
"     * @remarks",
"     * Objective to be displayed.",
"     *",
"     */",
"    objective: ScoreboardObjective;",
"    /**",
"     * @remarks",
"     * The sort order to display the objective items within.",
"     *",
"     */",
"    sortOrder?: ObjectiveSortOrder;",
"}",
"/**",
" * Contains additional options for registering a script event",
" * event callback.",
" */",
"export interface ScriptEventMessageFilterOptions {",
"    /**",
"     * @remarks",
"     * Optional list of namespaces to filter inbound script event",
"     * messages.",
"     *",
"     */",
"    namespaces: string[];",
"}",
"/**",
" * Contains additional options for spawning an Entity.",
" */",
"export interface SpawnEntityOptions {",
"    /**",
"     * @remarks",
"     * Optional spawn event to send to the entity after it is",
"     * spawned.",
"     *",
"     */",
"    spawnEvent?: string;",
"}",
"/**",
" * Provides additional options for {@link",
" * StructureManager.createFromWorld}",
" */",
"export interface StructureCreateOptions {",
"    /**",
"     * @remarks",
"     * Whether blocks should be included in the structure. Defaults",
"     * to true.",
"     *",
"     */",
"    includeBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * Whether entities should be included in the structure.",
"     * Defaults to true.",
"     *",
"     */",
"    includeEntities?: boolean;",
"    /**",
"     * @remarks",
"     * How the Structure should be saved. Defaults to",
"     * StructureSaveMode.World.",
"     *",
"     */",
"    saveMode?: StructureSaveMode;",
"}",
"/**",
" * Provides additional options for {@link",
" * StructureManager.place}",
" */",
"export interface StructurePlaceOptions {",
"    /**",
"     * @remarks",
"     * How the Structure should be animated when placed.",
"     *",
"     */",
"    animationMode?: StructureAnimationMode;",
"    /**",
"     * @remarks",
"     * How many seconds the animation should take.",
"     *",
"     */",
"    animationSeconds?: number;",
"    /**",
"     * @remarks",
"     * Whether blocks should be included in the structure. Defaults",
"     * to true.",
"     *",
"     */",
"    includeBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * Whether entities should be included in the structure.",
"     * Defaults to true.",
"     *",
"     */",
"    includeEntities?: boolean;",
"    /**",
"     * @remarks",
"     * What percentage of blocks should be placed. A value of 1",
"     * will place 100% of the blocks while a value of 0 will place",
"     * none. The blocks are chosen randomly based on the {@link",
"     * StructurePlaceOptions.integritySeed}.",
"     *",
"     */",
"    integrity?: number;",
"    /**",
"     * @remarks",
"     * Seed that determines which blocks are randomly chosen to be",
"     * placed. Defaults to a random seed.",
"     *",
"     */",
"    integritySeed?: string;",
"    /**",
"     * @remarks",
"     * Which axes the Structure should be mirrored on when placed.",
"     * Defaults to StructureMirrorAxis.None.",
"     *",
"     */",
"    mirror?: StructureMirrorAxis;",
"    /**",
"     * @remarks",
"     * How the Structure should be rotated when placed. Defaults to",
"     * AxisAlignedRotation.None.",
"     *",
"     */",
"    rotation?: StructureRotation;",
"    /**",
"     * @remarks",
"     * Whether the structure should be waterlogged when placed.",
"     * Defaults to false. If true, blocks will become waterlogged",
"     * when placed in water.",
"     *",
"     */",
"    waterlogged?: boolean;",
"}",
"/**",
" * Contains additional options for teleporting an entity.",
" * @example teleport.ts",
" * ```typescript",
" * import { system, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function teleport(targetLocation: DimensionLocation) {",
" *   const cow = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Cow, targetLocation);",
" *",
" *   system.runTimeout(() => {",
" *     cow.teleport(",
" *       { x: targetLocation.x + 2, y: targetLocation.y + 2, z: targetLocation.z + 2 },",
" *       {",
" *         facingLocation: targetLocation,",
" *       }",
" *     );",
" *   }, 20);",
" * }",
" * ```",
" * @example teleportMovement.ts",
" * ```typescript",
" * import { system, DimensionLocation } from '@minecraft/server';",
" * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function teleportMovement(targetLocation: DimensionLocation) {",
" *   const pig = targetLocation.dimension.spawnEntity(MinecraftEntityTypes.Pig, targetLocation);",
" *",
" *   let inc = 1;",
" *   const runId = system.runInterval(() => {",
" *     pig.teleport(",
" *       { x: targetLocation.x + inc / 4, y: targetLocation.y + inc / 4, z: targetLocation.z + inc / 4 },",
" *       {",
" *         facingLocation: targetLocation,",
" *       }",
" *     );",
" *",
" *     if (inc > 100) {",
" *       system.clearRun(runId);",
" *     }",
" *     inc++;",
" *   }, 4);",
" * }",
" * ```",
" */",
"export interface TeleportOptions {",
"    /**",
"     * @remarks",
"     * Whether to check whether blocks will block the entity after",
"     * teleport.",
"     *",
"     */",
"    checkForBlocks?: boolean;",
"    /**",
"     * @remarks",
"     * Dimension to potentially move the entity to.  If not",
"     * specified, the entity is teleported within the dimension",
"     * that they reside.",
"     *",
"     */",
"    dimension?: Dimension;",
"    /**",
"     * @remarks",
"     * Location that the entity should be facing after teleport.",
"     *",
"     */",
"    facingLocation?: Vector3;",
"    /**",
"     * @remarks",
"     * Whether to retain the entities velocity after teleport.",
"     *",
"     */",
"    keepVelocity?: boolean;",
"    /**",
"     * @remarks",
"     * Rotation of the entity after teleport.",
"     *",
"     */",
"    rotation?: Vector2;",
"}",
"/**",
" * Contains additional options for displaying a title and",
" * optional subtitle.",
" */",
"export interface TitleDisplayOptions {",
"    /**",
"     * @remarks",
"     * Fade-in duration for the title and subtitle, in ticks. There",
"     * are 20 ticks per second. Use {@link TicksPerSecond} constant",
"     * to convert between ticks and seconds.",
"     *",
"     */",
"    fadeInDuration: number;",
"    /**",
"     * @remarks",
"     * Fade-out time for the title and subtitle, in ticks. There",
"     * are 20 ticks per second. Use {@link TicksPerSecond} constant",
"     * to convert between ticks and seconds.",
"     *",
"     */",
"    fadeOutDuration: number;",
"    /**",
"     * @remarks",
"     * Amount of time for the title and subtitle to stay in place,",
"     * in ticks. There are 20 ticks per second. Use {@link",
"     * TicksPerSecond} constant to convert between ticks and",
"     * seconds.",
"     *",
"     */",
"    stayDuration: number;",
"    /**",
"     * @remarks",
"     * Optional subtitle text.",
"     *",
"     */",
"    subtitle?: (RawMessage | string)[] | RawMessage | string;",
"}",
"/**",
" * Represents a two-directional vector.",
" */",
"export interface Vector2 {",
"    /**",
"     * @remarks",
"     * X component of the two-dimensional vector.",
"     *",
"     */",
"    x: number;",
"    /**",
"     * @remarks",
"     * Y component of the two-dimensional vector.",
"     *",
"     */",
"    y: number;",
"}",
"/**",
" * Contains a description of a vector.",
" */",
"export interface Vector3 {",
"    /**",
"     * @remarks",
"     * X component of this vector.",
"     *",
"     */",
"    x: number;",
"    /**",
"     * @remarks",
"     * Y component of this vector.",
"     *",
"     */",
"    y: number;",
"    /**",
"     * @remarks",
"     * Z component of this vector.",
"     *",
"     */",
"    z: number;",
"}",
"export interface VectorXZ {",
"    x: number;",
"    z: number;",
"}",
"/**",
" * Contains additional options for a playSound occurrence.",
" */",
"export interface WorldSoundOptions {",
"    /**",
"     * @remarks",
"     * Pitch of the sound played.",
"     *",
"     */",
"    pitch?: number;",
"    /**",
"     * @remarks",
"     * Relative volume and space by which this sound is heard.",
"     *",
"     */",
"    volume?: number;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockCustomComponentAlreadyRegisteredError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockCustomComponentReloadNewComponentError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockCustomComponentReloadNewEventError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class BlockCustomComponentReloadVersionError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class CommandError extends Error {",
"    private constructor();",
"}",
"/**",
" * Error thrown if {@link @minecraft/server.ContainerRules} are",
" * broken on container operations.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ContainerRulesError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class CustomComponentInvalidRegistryError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class CustomComponentNameError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    reason: CustomComponentNameErrorReason;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EnchantmentLevelOutOfBoundsError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EnchantmentTypeNotCompatibleError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class EnchantmentTypeUnknownIdError extends Error {",
"    private constructor();",
"}",
"/**",
" * The container slot is invalid. This can occur when the",
" * owning container is destroyed or unloaded.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidContainerSlotError extends Error {",
"    private constructor();",
"}",
"/**",
" * The error called when an entity is invalid. This can occur",
" * when accessing components on a removed entity.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidEntityError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The id of the entity that is now invalid.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    id: string;",
"    /**",
"     * @remarks",
"     * The type of the entity that is now invalid.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    type: string;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidIteratorError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown when a Structure is invalid. A structure becomes",
" * invalid when it is deleted.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidStructureError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown when trying to register an item custom component with",
" * a name that has already been registered.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCustomComponentAlreadyRegisteredError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown after using the /reload command when trying to",
" * register a previously unregistered item custom component.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCustomComponentReloadNewComponentError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown after using the /reload command when trying to",
" * register a previously registered item custom component that",
" * handles a new event.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCustomComponentReloadNewEventError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown after using the /reload command when trying to",
" * register a previously registered item custom component with",
" * a newer API version.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ItemCustomComponentReloadVersionError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown when the chunk for provided location or bounding area",
" * is not loaded.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class LocationInUnloadedChunkError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown when a provided location or bounding area is outside",
" * the minimum or maximum dimension height.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class LocationOutOfWorldBoundariesError extends Error {",
"    private constructor();",
"}",
"/**",
" * Thrown when a name requires a namespace and an error occurs",
" * when validating that namespace",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class NamespaceNameError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    reason: NamespaceNameErrorReason;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class PlaceJigsawError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class RawMessageError extends Error {",
"    private constructor();",
"}",
"/**",
" * Error thrown when the specified area contains one or more",
" * unloaded chunks.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class UnloadedChunksError extends Error {",
"    private constructor();",
"}",
"export const HudElementsCount = 13;",
"export const HudVisibilityCount = 2;",
"/**",
" * @remarks",
" * Holds the number of MoonPhases",
" *",
" */",
"export const MoonPhaseCount = 8;",
"/**",
" * @remarks",
" * How many times the server ticks in one in-game day.",
" *",
" */",
"export const TicksPerDay = 24000;",
"/**",
" * @remarks",
" * How many times the server ticks per second of real time.",
" *",
" */",
"export const TicksPerSecond = 20;",
"/**",
" * @remarks",
" * A class that provides system-level events and functions.",
" *",
" */",
"export const system: System;",
"/**",
" * @remarks",
" * A class that wraps the state of a world - a set of",
" * dimensions and the environment of Minecraft.",
" *",
" */",
"export const world: World;",
""]},{"name":"@minecraft/server-gametest","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @beta",
" * @packageDocumentation",
" * The @minecraft/server-gametest module provides scriptable",
" * APIs for scaffolding and testing content experiences in",
" * Minecraft.",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server-gametest',",
" *   'version': '1.0.0-beta'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"import * as minecraftserver from '@minecraft/server';",
"export enum GameTestErrorType {",
"    Assert = 'Assert',",
"    AssertAtPosition = 'AssertAtPosition',",
"    ExecutionTimeout = 'ExecutionTimeout',",
"    ExhaustedAttempts = 'ExhaustedAttempts',",
"    FailConditionsMet = 'FailConditionsMet',",
"    LevelStateModificationFailed = 'LevelStateModificationFailed',",
"    MethodNotImplemented = 'MethodNotImplemented',",
"    SimulatedPlayerOutOfBounds = 'SimulatedPlayerOutOfBounds',",
"    Unknown = 'Unknown',",
"    Waiting = 'Waiting',",
"}",
"export enum LookDuration {",
"    Continuous = 'Continuous',",
"    Instant = 'Instant',",
"    UntilMove = 'UntilMove',",
"}",
"/**",
" * Returns information about whether this fence is connected to",
" * other fences in several directions.",
" */",
"export class FenceConnectivity {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Represents whether this fence block is connected to another",
"     * fence to the east (x + 1).",
"     *",
"     */",
"    readonly east: boolean;",
"    /**",
"     * @remarks",
"     * Represents whether this fence block is connected to another",
"     * fence to the north (z - 1).",
"     *",
"     */",
"    readonly north: boolean;",
"    /**",
"     * @remarks",
"     * Represents whether this fence block is connected to another",
"     * fence to the south (z + 1).",
"     *",
"     */",
"    readonly south: boolean;",
"    /**",
"     * @remarks",
"     * Represents whether this fence block is connected to another",
"     * fence to the west (x - 1).",
"     *",
"     */",
"    readonly west: boolean;",
"}",
"/**",
" * Executes a set of steps defined via chained .thenXyz",
" * methods, sequentially. This facilitates a 'script' of",
" * GameTest setup methods and assertions over time.",
" */",
"export class GameTestSequence {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Runs the given callback as a step within a GameTest",
"     * sequence. Exceptions thrown within the callback will end",
"     * sequence execution.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Callback function to execute.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenExecute(callback: () => void): GameTestSequence;",
"    /**",
"     * @remarks",
"     * After a delay, runs the given callback as a step within a",
"     * GameTest sequence. Exceptions thrown within the callback",
"     * will end sequence execution.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param delayTicks",
"     * Number of ticks to wait before executing the callback.",
"     * @param callback",
"     * Callback function to execute.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenExecuteAfter(delayTicks: number, callback: () => void): GameTestSequence;",
"    /**",
"     * @remarks",
"     * Runs the given callback every tick for the given number of",
"     * ticks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Callback function to execute.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenExecuteFor(tickCount: number, callback: () => void): GameTestSequence;",
"    /**",
"     * @remarks",
"     * Causes the test to fail if this step in the GameTest",
"     * sequence is reached.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param errorMessage",
"     * Error message summarizing the failure condition.",
"     */",
"    thenFail(errorMessage: string): void;",
"    /**",
"     * @remarks",
"     * Idles the GameTest sequence for the specified delayTicks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param delayTicks",
"     * Number of ticks to delay for this step in the GameTest",
"     * sequence.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenIdle(delayTicks: number): GameTestSequence;",
"    /**",
"     * @remarks",
"     * Marks the GameTest a success if this step is reached in the",
"     * GameTest sequence.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    thenSucceed(): void;",
"    /**",
"     * @remarks",
"     * Executes the given callback every tick until it succeeds.",
"     * Exceptions thrown within the callback will end sequence",
"     * execution.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Testing callback function to execute. Typically, this",
"     * function will have .assertXyz functions within it.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenWait(callback: () => void): GameTestSequence;",
"    /**",
"     * @remarks",
"     * After a delay from the previous step, executes the given",
"     * callback every tick until it succeeds. Exceptions thrown",
"     * within the callback will end sequence execution.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param delayTicks",
"     * Tick (after the previous step in the GameTest sequence) to",
"     * run the callback at.",
"     * @param callback",
"     * Testing callback function to execute. Typically, this",
"     * function will have .assertXyz functions within it.",
"     * @returns",
"     * Returns a GameTestSequence object where additional .thenXyz",
"     * method steps can be added.",
"     */",
"    thenWaitAfter(delayTicks: number, callback: () => void): GameTestSequence;",
"}",
"export class NavigationResult {",
"    private constructor();",
"    readonly isFullPath: boolean;",
"    getPath(): minecraftserver.Vector3[];",
"}",
"/**",
" * A utility class to set GameTest parameters for a test.",
" * Methods can be chained together to set multiple properties.",
" */",
"export class RegistrationBuilder {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Sets the batch for the test to run in.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param batchName",
"     * Name of the batch for the test.",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    batch(batchName: string): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Sets the maximum number of times a test will try to rerun if",
"     * it fails.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    maxAttempts(attemptCount: number): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Sets the maximum number of ticks a test will run for before",
"     * timing out and failing.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    maxTicks(tickCount: number): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Size around the GameTest, in blocks, that should be reserved",
"     * for the test when running multiple tests together.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param paddingBlocks",
"     * Size, in blocks, around the GameTest where additional",
"     * GameTests should not be created.",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    padding(paddingBlocks: number): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Whether this test is required to pass as part of its broader",
"     * set of tests.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param isRequired",
"     * If set to true, the test must pass in order for the entire",
"     * run of tests to pass.",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    required(isRequired: boolean): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Sets the number of successful test runs to be considered",
"     * successful.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    requiredSuccessfulAttempts(attemptCount: number): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * If true, runs the test in all four rotations when run via",
"     * /gametest runset.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    rotateTest(rotate: boolean): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Sets the number of ticks for a test to wait before executing",
"     * when the structure is spawned.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     */",
"    setupTicks(tickCount: number): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Overrides the default structure placement with a specific",
"     * location and dimension. If height (y) is set to",
"     * Dimension.heightRange.max, the structure will snap to the",
"     * ground. If the dimension is not specified, it will run in",
"     * the dimension the command was run from.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftcommon.InvalidArgumentError}",
"     */",
"    structureLocation(",
"        structureLocation: minecraftserver.Vector3,",
"        structureDimension?: minecraftserver.DimensionType | string,",
"    ): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Sets the name of the structure for a test to use. 'xyz:bar'",
"     * will load `/structures/xyz/bar.mcstructure` from the",
"     * behavior pack stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     * @example phantomsShouldFlyFromCats.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function phantomsShouldFlyFromCats(test: Test) {",
"     *   test.spawn(MinecraftEntityTypes.Cat, { x: 4, y: 3, z: 3 });",
"     *   test.spawn(MinecraftEntityTypes.Phantom, { x: 4, y: 3, z: 3 });",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Phantom, { x: 4, y: 6, z: 3 }, true);",
"     * }",
"     *",
"     * register('MobBehaviorTests', 'phantoms_should_fly_from_cats', phantomsShouldFlyFromCats)",
"     *   .structureName('gametests:glass_cells');",
"     * ```",
"     */",
"    structureName(structureName: string): RegistrationBuilder;",
"    /**",
"     * @remarks",
"     * Adds a tag to a test. You can run all tests with a given tag",
"     * with `/gametest runset <tag>`.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @returns",
"     * RegistrationBuilder object where additional configuration",
"     * methods can be called.",
"     * @example phantomsShouldFlyFromCats.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function phantomsShouldFlyFromCats(test: Test) {",
"     *   test.spawn(MinecraftEntityTypes.Cat, { x: 4, y: 3, z: 3 });",
"     *   test.spawn(MinecraftEntityTypes.Phantom, { x: 4, y: 3, z: 3 });",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Phantom, { x: 4, y: 6, z: 3 }, true);",
"     * }",
"     *",
"     * register('MobBehaviorTests', 'phantoms_should_fly_from_cats', phantomsShouldFlyFromCats)",
"     *   .structureName('gametests:glass_cells');",
"     * ```",
"     */",
"    tag(tag: string): RegistrationBuilder;",
"}",
"/**",
" * Implements a class that can be used for testing sculk",
" * spreading behaviors. This sculk spreader class can drive the",
" * growth of sculk around a particular block.",
" */",
"export class SculkSpreader {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Gets the maximum charge of a sculk spreader.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly maxCharge: number;",
"    /**",
"     * @remarks",
"     * Adds a cursor - which is a notional waypoint that the sculk",
"     * will spread in the direction of.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    addCursorsWithOffset(offset: minecraftserver.Vector3, charge: number): void;",
"    /**",
"     * @remarks",
"     * Retrieves the current position of the specified cursor.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getCursorPosition(index: number): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Returns a number of overall cursors for this sculk spreader.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getNumberOfCursors(): number;",
"    /**",
"     * @remarks",
"     * Gets the total current charge of the sculk spreader.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getTotalCharge(): number;",
"}",
"/**",
" * A simulated player can be used within GameTests to represent",
" * how a player moves throughout the world and to support",
" * testing of how entities and the environment will react to a",
" * player. This type derives much of its structure and methods",
" * from the {@link minecraftserver.Player} type. Note that many",
" * types of events that may be available for entities more",
" * broadly, such as item use events, may not fire in the same",
" * capacity for simulated players.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class SimulatedPlayer extends minecraftserver.Player {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Rotation of the head across pitch and yaw angles.",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly headRotation: minecraftserver.Vector2;",
"    /**",
"     * @remarks",
"     * Returns whether the simulated player is sprinting.",
"     *",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    isSprinting: boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to make an attack 'swipe'.",
"     * Returns true if the attack was performed - for example, the",
"     * player was not on cooldown and had a valid target. Target",
"     * selection is performed by raycasting from the player's head.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    attack(): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to attack the provided target.",
"     * Returns true if the attack was performed - for example, the",
"     * player was not on cooldown and had a valid target. The",
"     * attack can be performed at any distance and does not require",
"     * line of sight to the target entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    attackEntity(entity: minecraftserver.Entity): boolean;",
"    /**",
"     * @remarks",
"     * Destroys the block at blockLocation, respecting the rules of",
"     * the server player's game mode. The block will be hit until",
"     * broken, an item is used or stopBreakingBlock is called.",
"     * Returns true if the block at blockLocation is solid.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to interact with.",
"     * @param direction",
"     * Direction to place the specified item within.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    breakBlock(blockLocation: minecraftserver.Vector3, direction?: minecraftserver.Direction): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    chat(message: string): void;",
"    /**",
"     * @remarks",
"     * Simulates and performs a disconnection of the simulated",
"     * player from the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    disconnect(): void;",
"    /**",
"     * @remarks",
"     * Drops the simulated player's selected item",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    dropSelectedItem(): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to start flying as though they",
"     * were flying in creative mode. For flying with Elytra, see",
"     * function glide.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    fly(): void;",
"    /**",
"     * @remarks",
"     * Gives the simulated player a particular item stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * Item to give.",
"     * @param selectSlot",
"     * Whether to set the selected slot once given.",
"     * Defaults to: false",
"     * @throws This function can throw errors.",
"     */",
"    giveItem(itemStack: minecraftserver.ItemStack, selectSlot?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to start gliding. Elytra must be",
"     * equipped and the player must be in the air.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns true if the simulated player begins to glide.",
"     * Returns false if the player is already gliding, or the",
"     * player does not have Elytra equipped, is in water or is on",
"     * the ground.",
"     * @throws This function can throw errors.",
"     */",
"    glide(): boolean;",
"    /**",
"     * @remarks",
"     * Performs a raycast from the player’s head and interacts with",
"     * the first intersected block or entity. Returns true if the",
"     * interaction was successful. Maximum range is 6 blocks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    interact(): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to interact with a block. The",
"     * block at the specified block location must be solid. Returns",
"     * true if the interaction was performed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to interact with.",
"     * @param direction",
"     * Direction to place the specified item within.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    interactWithBlock(blockLocation: minecraftserver.Vector3, direction?: minecraftserver.Direction): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to interact with a mob. Returns",
"     * true if the interaction was performed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entity",
"     * Entity to interact with.",
"     * @throws This function can throw errors.",
"     */",
"    interactWithEntity(entity: minecraftserver.Entity): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to jump.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * True if a jump was performed.",
"     * @throws This function can throw errors.",
"     */",
"    jump(): boolean;",
"    /**",
"     * @remarks",
"     * Rotates the simulated player's head/body to look at the",
"     * given block location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param duration",
"     * Defaults to: 2",
"     * @throws This function can throw errors.",
"     */",
"    lookAtBlock(blockLocation: minecraftserver.Vector3, duration?: LookDuration): void;",
"    /**",
"     * @remarks",
"     * Rotates the simulated player's head/body to look at the",
"     * given entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param duration",
"     * Defaults to: 2",
"     * @throws This function can throw errors.",
"     */",
"    lookAtEntity(entity: minecraftserver.Entity, duration?: LookDuration): void;",
"    /**",
"     * @remarks",
"     * Rotates the simulated player's head/body to look at the",
"     * given location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param duration",
"     * Defaults to: 2",
"     * @throws This function can throw errors.",
"     */",
"    lookAtLocation(location: minecraftserver.Vector3, duration?: LookDuration): void;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to walk in the given direction",
"     * relative to the GameTest.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param speed",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    move(westEast: number, northSouth: number, speed?: number): void;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to walk in the given direction",
"     * relative to the player's current rotation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param speed",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    moveRelative(leftRight: number, backwardForward: number, speed?: number): void;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to move to the given block",
"     * location in a straight line. If a move or navigation is",
"     * already playing, this will override the last",
"     * move/navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    moveToBlock(blockLocation: minecraftserver.Vector3, options?: MoveToOptions): void;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to move to the given location in",
"     * a straight line. If a move or navigation is already playing,",
"     * this will override the last move/navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    moveToLocation(location: minecraftserver.Vector3, options?: MoveToOptions): void;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to move to a specific block",
"     * location using navigation. If a move or navigation is",
"     * already playing, this will override the last move/walk. Note",
"     * that if the simulated player gets stuck, that simulated",
"     * player will stop. The player must be touching the ground in",
"     * order to start navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param speed",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    navigateToBlock(blockLocation: minecraftserver.Vector3, speed?: number): NavigationResult;",
"    /**",
"     * @remarks",
"     * Will use navigation to follow the selected entity to within",
"     * a one block radius. If a move or navigation is already",
"     * playing, this will override the last move/navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param speed",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    navigateToEntity(entity: minecraftserver.Entity, speed?: number): NavigationResult;",
"    /**",
"     * @remarks",
"     * Orders the simulated player to move to a specific location",
"     * using navigation. If a move or navigation is already",
"     * playing, this will override the last move/walk. Note that if",
"     * the simulated player gets stuck, that simulated player will",
"     * stop. The player must be touching the ground in order to",
"     * start navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param speed",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    navigateToLocation(location: minecraftserver.Vector3, speed?: number): NavigationResult;",
"    /**",
"     * @remarks",
"     * Use navigation to follow the route provided via the",
"     * locations parameter. If a move or navigation is already",
"     * playing, this will override the last move/navigation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param locations",
"     * A list of locations to use for routing.",
"     * @param speed",
"     * Net speed to use for doing the navigation.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     */",
"    navigateToLocations(locations: minecraftserver.Vector3[], speed?: number): void;",
"    /**",
"     * @remarks",
"     * Respawns the particular simulated player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    respawn(): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to turn by the provided angle,",
"     * relative to the player's current rotation.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    rotateBody(angleInDegrees: number): void;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to turn to face the provided",
"     * angle, relative to the GameTest.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setBodyRotation(angleInDegrees: number): void;",
"    /**",
"     * @remarks",
"     * Sets a particular item for the simulated player.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * Item to set.",
"     * @param slot",
"     * Slot to place the given item in.",
"     * @param selectSlot",
"     * Whether to set the selected slot once set.",
"     * Defaults to: false",
"     * @throws This function can throw errors.",
"     */",
"    setItem(itemStack: minecraftserver.ItemStack, slot: number, selectSlot?: boolean): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param slot",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     */",
"    startBuild(slot?: number): void;",
"    /**",
"     * @remarks",
"     * Stops destroying the block that is currently being hit.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopBreakingBlock(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopBuild(): void;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to stop flying.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopFlying(): void;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to stop gliding.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopGliding(): void;",
"    /**",
"     * @remarks",
"     * Stops interacting with entities or blocks.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopInteracting(): void;",
"    /**",
"     * @remarks",
"     * Stops moving/walking/following if the simulated player is",
"     * moving.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopMoving(): void;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to stop swimming.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    stopSwimming(): void;",
"    /**",
"     * @remarks",
"     * Stops using the currently active item.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns the item that was in use. Undefined if no item was",
"     * in use.",
"     * @throws This function can throw errors.",
"     */",
"    stopUsingItem(): minecraftserver.ItemStack | undefined;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to start swimming.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    swim(): void;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to use an item. Does not consume",
"     * the item. Returns false if the item is on cooldown.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * Item to use.",
"     * @throws This function can throw errors.",
"     */",
"    useItem(itemStack: minecraftserver.ItemStack): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to hold and use an item in their",
"     * inventory.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param slot",
"     * Index of the inventory slot.",
"     * @throws This function can throw errors.",
"     */",
"    useItemInSlot(slot: number): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to use an item in their",
"     * inventory on a block. The block at the specified block",
"     * location must be solid. Returns true if the item was used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param slot",
"     * Index of the slot to use.",
"     * @param blockLocation",
"     * Location to use the item upon.",
"     * @param direction",
"     * Direction to place the specified item within.",
"     * Defaults to: 1",
"     * @param faceLocation",
"     * Location relative to the bottom north-west corner of the",
"     * block where the item is placed.",
"     * Defaults to: null",
"     * @throws This function can throw errors.",
"     */",
"    useItemInSlotOnBlock(",
"        slot: number,",
"        blockLocation: minecraftserver.Vector3,",
"        direction?: minecraftserver.Direction,",
"        faceLocation?: minecraftserver.Vector3,",
"    ): boolean;",
"    /**",
"     * @remarks",
"     * Causes the simulated player to use an item on a block. The",
"     * block at the specified block location must be solid. Returns",
"     * true if the item was used.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * Item to use.",
"     * @param blockLocation",
"     * Location to use the item upon.",
"     * @param direction",
"     * Direction to place the specified item within.",
"     * Defaults to: 1",
"     * @param faceLocation",
"     * Location relative to the bottom north-west corner of the",
"     * block where the item is placed.",
"     * Defaults to: null",
"     * @throws This function can throw errors.",
"     */",
"    useItemOnBlock(",
"        itemStack: minecraftserver.ItemStack,",
"        blockLocation: minecraftserver.Vector3,",
"        direction?: minecraftserver.Direction,",
"        faceLocation?: minecraftserver.Vector3,",
"    ): boolean;",
"}",
"/**",
" * These well-known tags can be used to classify different",
" * tests into suites to run.",
" */",
"export class Tags {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Indicates that the tagged test should be a part of all",
"     * suites.",
"     *",
"     */",
"    static readonly suiteAll = 'suite:all';",
"    /**",
"     * @remarks",
"     * Indicates that the tagged test should be a part of an",
"     * internal (debug) test suite.",
"     *",
"     */",
"    static readonly suiteDebug = 'suite:debug';",
"    /**",
"     * @remarks",
"     * Indicates that the tagged test should be a part of the",
"     * default test suite.",
"     *",
"     */",
"    static readonly suiteDefault = 'suite:default';",
"    /**",
"     * @remarks",
"     * Indicates that the tagged test should be a part of a suite",
"     * of disabled tests.",
"     *",
"     */",
"    static readonly suiteDisabled = 'suite:disabled';",
"    static readonly suiteNextUpdate = 'suite:nextupdate';",
"}",
"/**",
" * Main class for GameTest functions, with helpers and data for",
" * manipulating the respective test. Note that all methods of",
" * this class expect BlockLocations and Locations relative to",
" * the GameTest structure block.",
" */",
"export class Test {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Tests that the condition specified in _condition_ is true.",
"     * If not, an error with the specified _message_ is thrown.",
"     *",
"     * @param condition",
"     * Expression of the condition to evaluate.",
"     * @param message",
"     * Message that is passed if the _condition_ does not evaluate",
"     * to true.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assert(condition: boolean, message: string): void;",
"    /**",
"     * @remarks",
"     * Tests that a block of the specified type is present at the",
"     * specified location. If it is not, an exception is thrown.",
"     *",
"     * @param blockType",
"     * Expected block type.",
"     * @param blockLocation",
"     * Location of the block to test at.",
"     * @param isPresent",
"     * If true, this function tests whether a block of the",
"     * specified type is at the location. If false, tests that a",
"     * block of the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertBlockPresent(",
"        blockType: minecraftserver.BlockType | string,",
"        blockLocation: minecraftserver.Vector3,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that a block has a particular state value at the",
"     * specified location. If it does not have that state value, an",
"     * exception is thrown.",
"     *",
"     * @param blockLocation",
"     * Location of the block to test at.",
"     * @param callback",
"     * Callback function that contains additional tests based on",
"     * the block at the specified location.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertBlockState(blockLocation: minecraftserver.Vector3, callback: (arg0: minecraftserver.Block) => boolean): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity can reach a particular location.",
"     * Depending on the value of canReach, throws an exception if",
"     * the condition is not met.",
"     *",
"     * @param mob",
"     * Entity that you wish to test the location against.",
"     * @param blockLocation",
"     * Structure-relative location to test whether the specified",
"     * mob can reach.",
"     * @param canReach",
"     * If true, tests whether the mob can reach the location. If",
"     * false, tests whether the mob is not able to reach the",
"     * location.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertCanReachLocation(",
"        mob: minecraftserver.Entity,",
"        blockLocation: minecraftserver.Vector3,",
"        canReach?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that a container (e.g., a chest) at the specified",
"     * location contains a specified of item stack. If not, an",
"     * error is thrown.",
"     *",
"     * @param itemStack",
"     * Represents the type of item to check for. The specified",
"     * container must contain at least 1 item matching the item",
"     * type defined in _itemStack_.",
"     * @param blockLocation",
"     * Location of the block with a container (for example, a",
"     * chest) to test the contents of.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertContainerContains(itemStack: minecraftserver.ItemStack, blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * Tests that a container (e.g., a chest) at the specified",
"     * location is empty. If not, an error is thrown.",
"     *",
"     * @param blockLocation",
"     * Location of the block with a container (for example, a",
"     * chest) to test is empty of contents.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertContainerEmpty(blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity has a specific piece of armor equipped.",
"     * If not, an error is thrown.",
"     *",
"     * @param entityTypeIdentifier",
"     * Identifier of the entity to match (e.g.,",
"     * 'minecraft:skeleton').",
"     * @param armorSlot",
"     * Container slot index to test.",
"     * @param armorName",
"     * Name of the armor to look for.",
"     * @param armorData",
"     * Data value integer to look for.",
"     * @param blockLocation",
"     * Location of the entity with armor to test for.",
"     * @param hasArmor",
"     * Whether or not the entity is expected to have the specified",
"     * armor equipped.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityHasArmor(",
"        entityTypeIdentifier: string,",
"        armorSlot: number,",
"        armorName: string,",
"        armorData: number,",
"        blockLocation: minecraftserver.Vector3,",
"        hasArmor?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity has a particular component. If not, an",
"     * exception is thrown.",
"     *",
"     * @param entityTypeIdentifier",
"     * Identifier of the specified entity (e.g.,",
"     * 'minecraft:skeleton'). If the namespace is not specified,",
"     * 'minecraft:' is assumed.",
"     * @param componentIdentifier",
"     * Identifier of the component to check for. If the namespace",
"     * is not specified, 'minecraft:' is assumed.",
"     * @param blockLocation",
"     * Location of the block with a container (for example, a",
"     * chest.)",
"     * @param hasComponent",
"     * Determines whether to test that the component exists, or",
"     * does not.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityHasComponent(",
"        entityTypeIdentifier: string,",
"        componentIdentifier: string,",
"        blockLocation: minecraftserver.Vector3,",
"        hasComponent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Depending on the value for isPresent, tests that a",
"     * particular entity is present or not present at the specified",
"     * location. Depending on the value of isPresent, if the entity",
"     * is found or not found, an error is thrown.",
"     *",
"     * @param entity",
"     * Specific entity to test for.",
"     * @param blockLocation",
"     * Location of the entity to test for.",
"     * @param isPresent",
"     * Whether to test that an entity is present or not present at",
"     * the specified location.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityInstancePresent(",
"        entity: minecraftserver.Entity,",
"        blockLocation: minecraftserver.Vector3,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity instance is present within the GameTest",
"     * area. If not, an exception is thrown.",
"     *",
"     * @param entity",
"     * Entity instance to test for.",
"     * @param isPresent",
"     * If true, this function tests whether the specified entity is",
"     * present in the GameTest area. If false, tests that the",
"     * specified entity is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     * @example simpleMobTest.ts",
"     * ```typescript",
"     * import * as gameTest from '@minecraft/server-gametest';",
"     *",
"     * gameTest",
"     *     .register('StarterTests', 'simpleMobTest', (test: gameTest.Test) => {",
"     *         const attackerId = 'fox';",
"     *         const victimId = 'chicken';",
"     *",
"     *         test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *         const victim = test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *         test.assertEntityInstancePresentInArea(victim, true);",
"     *",
"     *         test.succeedWhen(() => {",
"     *             test.assertEntityInstancePresentInArea(victim, false);",
"     *         });",
"     *     })",
"     *     .maxTicks(400)",
"     *     .structureName('gametests:mediumglass');",
"     * ```",
"     */",
"    assertEntityInstancePresentInArea(entity: minecraftserver.Entity, isPresent?: boolean): void;",
"    /**",
"     * @remarks",
"     * Depending on the value of isPresent, tests for the presence",
"     * or non-presence of entity of a specified type at a",
"     * particular location. If the condition is not met, an",
"     * exception is thrown.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to test for (e.g., 'minecraft:skeleton'). If",
"     * an entity namespace is not specified, 'minecraft:' is",
"     * assumed.",
"     * @param blockLocation",
"     * Location of the entity to test for.",
"     * @param searchDistance",
"     * The distance to search for the entity from the",
"     * blockLocation.",
"     * Defaults to: 0",
"     * @param isPresent",
"     * If true, this function tests whether an entity of the",
"     * specified type is present. If false, tests that an entity of",
"     * the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityPresent(",
"        entityTypeIdentifier: string,",
"        blockLocation: minecraftserver.Vector3,",
"        searchDistance?: number,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity of a specified type is present within",
"     * the GameTest area. If not, an exception is thrown.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to test for (e.g., 'minecraft:skeleton'). If",
"     * an entity namespace is not specified, 'minecraft:' is",
"     * assumed.",
"     * @param isPresent",
"     * If true, this function tests whether an entity of the",
"     * specified type is present in the GameTest area. If false,",
"     * tests that an entity of the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     * @example simpleMobTest.ts",
"     * ```typescript",
"     * import * as gameTest from '@minecraft/server-gametest';",
"     *",
"     * gameTest",
"     *     .register('StarterTests', 'simpleMobTest', (test: gameTest.Test) => {",
"     *         const attackerId = 'fox';",
"     *         const victimId = 'chicken';",
"     *",
"     *         test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *         test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *         test.assertEntityPresentInArea(victimId, true);",
"     *",
"     *         test.succeedWhen(() => {",
"     *             test.assertEntityPresentInArea(victimId, false);",
"     *         });",
"     *     })",
"     *     .maxTicks(400)",
"     *     .structureName('gametests:mediumglass');",
"     * ```",
"     * @example simpleMobGameTest.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function simpleMobGameTest(test: Test) {",
"     *   const attackerId = MinecraftEntityTypes.Fox;",
"     *   const victimId = MinecraftEntityTypes.Chicken;",
"     *",
"     *   test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *   test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *   test.assertEntityPresentInArea(victimId, true);",
"     *",
"     *   test.succeedWhen(() => {",
"     *     test.assertEntityPresentInArea(victimId, false);",
"     *   });",
"     * }",
"     * register('StarterTests', 'simpleMobTest', simpleMobGameTest).maxTicks(400).structureName('gametests:mediumglass');",
"     * ```",
"     */",
"    assertEntityPresentInArea(entityTypeIdentifier: string, isPresent?: boolean): void;",
"    /**",
"     * @remarks",
"     * Tests that an entity (e.g., a skeleton) at the specified",
"     * location has a particular piece of data. If not, an error is",
"     * thrown.",
"     *",
"     * @param blockLocation",
"     * Location of the entity to look for.",
"     * @param entityTypeIdentifier",
"     * Identifier of the entity (e.g., 'minecraft:skeleton') to",
"     * look for. Note if no namespace is specified, 'minecraft:' is",
"     * assumed.",
"     * @param callback",
"     * Callback function where facets of the selected entity can be",
"     * tested for. If this callback function returns false or no",
"     * entity with the specified identifier is found, an exception",
"     * is thrown.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityState(",
"        blockLocation: minecraftserver.Vector3,",
"        entityTypeIdentifier: string,",
"        callback: (arg0: minecraftserver.Entity) => boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Depending on the value of isTouching, tests that an entity",
"     * of a specified type is touching or connected to another",
"     * entity. If the condition is not met, an exception is thrown.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to test for (e.g., 'minecraft:skeleton'). If",
"     * an entity namespace is not specified, 'minecraft:' is",
"     * assumed.",
"     * @param location",
"     * Location of the entity to test for.",
"     * @param isTouching",
"     * If true, this function tests whether the entity is touching",
"     * the specified location. If false, tests that an entity is",
"     * not testing the specified location.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertEntityTouching(entityTypeIdentifier: string, location: minecraftserver.Vector3, isTouching?: boolean): void;",
"    /**",
"     * @remarks",
"     * Depending on the value of isWaterlogged, tests that a block",
"     * at a location contains water. If the condition is not met,",
"     * an error is thrown. Pure water blocks are not considered to",
"     * be waterlogged.",
"     *",
"     * @param blockLocation",
"     * Location of the block to test for.",
"     * @param isWaterlogged",
"     * Whether to test that the block at _position_ is expected to",
"     * be waterlogged.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertIsWaterlogged(blockLocation: minecraftserver.Vector3, isWaterlogged?: boolean): void;",
"    /**",
"     * @remarks",
"     * Tests that items of a particular type and count are present",
"     * within an area. If not, an error is thrown.",
"     *",
"     * @param itemType",
"     * Type of item to look for.",
"     * @param blockLocation",
"     * Location to search around for the specified set of items.",
"     * @param searchDistance",
"     * Range, in blocks, to aggregate a count of items around. If",
"     * 0, will only search the particular block at _position_.",
"     * @param count",
"     * Number of items, at minimum, to look and test for.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertItemEntityCountIs(",
"        itemType: minecraftserver.ItemType | string,",
"        blockLocation: minecraftserver.Vector3,",
"        searchDistance: number,",
"        count: number,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Depending on the value of isPresent, tests whether a",
"     * particular item entity is present or not at a particular",
"     * location. If the condition is not met, an exception is",
"     * thrown.",
"     *",
"     * @param itemType",
"     * Type of item to test for.",
"     * @param blockLocation",
"     * Location of the item entity to test for.",
"     * @param searchDistance",
"     * Radius in blocks to look for the item entity.",
"     * Defaults to: 0",
"     * @param isPresent",
"     * If true, this function tests whether an item entity of the",
"     * specified type is present. If false, tests that an item",
"     * entity of the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertItemEntityPresent(",
"        itemType: minecraftserver.ItemType | string,",
"        blockLocation: minecraftserver.Vector3,",
"        searchDistance?: number,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests that Redstone power at a particular location matches a",
"     * particular value. If not, an exception is thrown.",
"     *",
"     * @param blockLocation",
"     * Location to test.",
"     * @param power",
"     * Expected power level.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    assertRedstonePower(blockLocation: minecraftserver.Vector3, power: number): void;",
"    /**",
"     * @remarks",
"     * Destroys a block at a particular location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to destroy.",
"     * @param dropResources",
"     * Whether to add resources exposed with a particular drop.",
"     * Defaults to: false",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    destroyBlock(blockLocation: minecraftserver.Vector3, dropResources?: boolean): void;",
"    /**",
"     * @remarks",
"     * Marks the current test as a failure case.",
"     *",
"     * @param errorMessage",
"     * Error message summarizing the failure condition.",
"     * @throws This function can throw errors.",
"     */",
"    fail(errorMessage: string): void;",
"    /**",
"     * @remarks",
"     * Runs the given callback. If the callback does not throw an",
"     * exception, the test is marked as a failure.",
"     *",
"     * @param callback",
"     * Callback function that runs. If the function runs",
"     * successfully, the test is marked as a failure. Typically,",
"     * this function will have .assertXyz method calls within it.",
"     * @throws This function can throw errors.",
"     */",
"    failIf(callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Gets a block at the specified block location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to retrieve.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    getBlock(blockLocation: minecraftserver.Vector3): minecraftserver.Block;",
"    /**",
"     * @remarks",
"     * Gets the dimension of this test.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    getDimension(): minecraftserver.Dimension;",
"    /**",
"     * @remarks",
"     * If the block at the specified block location is a fence,",
"     * this returns a helper object with details on how a fence is",
"     * connected.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to retrieve.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    getFenceConnectivity(blockLocation: minecraftserver.Vector3): FenceConnectivity;",
"    /**",
"     * @remarks",
"     * Retrieves a sculk spreader object that can be used to",
"     * control and manage how sculk grows from a block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location of the block to retrieve a sculk spreader from.",
"     * @returns",
"     * Returns the SculkSpreader or undefined if no SculkSpreader",
"     * is present on the block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    getSculkSpreader(blockLocation: minecraftserver.Vector3): SculkSpreader | undefined;",
"    /**",
"     * @remarks",
"     * Returns the direction of the current test - see the {@link",
"     * minecraftserver.Direction} enum for more information on",
"     * potential values (north, east, south, west - values 2-5).",
"     *",
"     */",
"    getTestDirection(): minecraftserver.Direction;",
"    /**",
"     * @remarks",
"     * This asynchronous function will wait for the specified time",
"     * in ticks before continuing execution.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tickDelay",
"     * Amount of time to wait, in ticks.",
"     */",
"    idle(tickDelay: number): Promise<void>;",
"    /**",
"     * @remarks",
"     * Kills all entities within the GameTest structure.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    killAllEntities(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    onPlayerJump(mob: minecraftserver.Entity, jumpAmount: number): void;",
"    /**",
"     * @remarks",
"     * Presses a button at a block location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location to push the button at.",
"     * @throws",
"     * Will throw an error if a button is not present at the",
"     * specified position.",
"     *",
"     * {@link GameTestError}",
"     */",
"    pressButton(blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * Displays the specified message to all players.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param text",
"     * Message to display.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    print(text: string): void;",
"    /**",
"     * @remarks",
"     * Pulls a lever at a block location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location to pull the lever at.",
"     * @throws",
"     * Will throw an error if a lever is not present at the",
"     * specified position.",
"     *",
"     * {@link GameTestError}",
"     */",
"    pullLever(blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * Sends a Redstone pulse at a particular location by creating",
"     * a temporary Redstone block.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location to pulse Redstone at.",
"     * @param duration",
"     * Number of ticks to pulse Redstone.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    pulseRedstone(blockLocation: minecraftserver.Vector3, duration: number): void;",
"    /**",
"     * @remarks",
"     * From a BlockLocation, returns a new BlockLocation with",
"     * coordinates relative to the current GameTest structure",
"     * block. For example, the relative coordinates for the block",
"     * above the structure block are (0, 1, 0). Rotation of the",
"     * GameTest structure is also taken into account.",
"     *",
"     * @param worldBlockLocation",
"     * Absolute location in the world to convert to a relative",
"     * location.",
"     * @returns",
"     * A location relative to the GameTest command block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    relativeBlockLocation(worldBlockLocation: minecraftserver.Vector3): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * From a location, returns a new location with coordinates",
"     * relative to the current GameTest structure block. For",
"     * example, the relative coordinates for the block above the",
"     * structure block are (0, 1, 0). Rotation of the GameTest",
"     * structure is also taken into account.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param worldLocation",
"     * Absolute location in the world to convert to a relative",
"     * location.",
"     * @returns",
"     * A location relative to the GameTest command block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    relativeLocation(worldLocation: minecraftserver.Vector3): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Removes a simulated player from the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param simulatedPlayer",
"     * Simulated player to remove.",
"     */",
"    removeSimulatedPlayer(simulatedPlayer: SimulatedPlayer): void;",
"    /**",
"     * @remarks",
"     * Returns a relative direction given the current rotation of",
"     * the current test. Passing in Direction.south will return the",
"     * test direction; Passing in Direction.north will return the",
"     * opposite of the test direction, and so on.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param direction",
"     * Direction to translate into a direction relative to the",
"     * GameTest facing. Passing in Direction.south will return the",
"     * test direction; Passing in Direction.north will return the",
"     * opposite of the test direction, and so on.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    rotateDirection(direction: minecraftserver.Direction): minecraftserver.Direction;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    rotateVector(vector: minecraftserver.Vector3): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Runs a specific callback after a specified delay of ticks",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param delayTicks",
"     * Number of ticks to delay before running the specified",
"     * callback.",
"     * @param callback",
"     * Callback function to execute.",
"     * @throws This function can throw errors.",
"     */",
"    runAfterDelay(delayTicks: number, callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Runs the given callback after a delay of _tick_ ticks from",
"     * the start of the GameTest.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tick",
"     * Tick (after the start of the GameTest) to run the callback",
"     * at.",
"     * @param callback",
"     * Callback function to execute.",
"     * @throws This function can throw errors.",
"     */",
"    runAtTickTime(tick: number, callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Sets a block to a particular configuration (a",
"     * BlockPermutation) at the specified block location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockData",
"     * Permutation that contains the configuration data for a",
"     * block.",
"     * @param blockLocation",
"     * Location of the block to set.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    setBlockPermutation(blockData: minecraftserver.BlockPermutation, blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * Sets a block to a particular type at the specified block",
"     * location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockType",
"     * Type of block to set.",
"     * @param blockLocation",
"     * Location of the block to set.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     * @example minibiomes.ts",
"     * ```typescript",
"     * import { EntityComponentTypes } from '@minecraft/server';",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftBlockTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function minibiomes(test: Test) {",
"     *   const minecart = test.spawn(MinecraftEntityTypes.Minecart, { x: 9, y: 7, z: 7 });",
"     *   const pig = test.spawn(MinecraftEntityTypes.Pig, { x: 9, y: 7, z: 7 });",
"     *",
"     *   test.setBlockType(MinecraftBlockTypes.Cobblestone, { x: 10, y: 7, z: 7 });",
"     *",
"     *   const minecartRideableComp = minecart.getComponent(EntityComponentTypes.Rideable);",
"     *",
"     *   minecartRideableComp?.addRider(pig);",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Pig, { x: 8, y: 3, z: 1 }, true);",
"     * }",
"     * register('ChallengeTests', 'minibiomes', minibiomes).structureName('gametests:minibiomes').maxTicks(160);",
"     * ```",
"     */",
"    setBlockType(blockType: minecraftserver.BlockType | string, blockLocation: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * For blocks that are fluid containers - like a cauldron -",
"     * changes the type of fluid within that container.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * Location of the fluid container block.",
"     * @param type",
"     * Type of fluid to set. See {@link minecraftserver.FluidType}",
"     * for a list of values.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    setFluidContainer(location: minecraftserver.Vector3, type: minecraftserver.FluidType): void;",
"    /**",
"     * @remarks",
"     * Sets the fuse of an explodable entity.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entity",
"     * Entity that is explodable.",
"     * @param fuseLength",
"     * Length of time, in ticks, before the entity explodes.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    setTntFuse(entity: minecraftserver.Entity, fuseLength: number): void;",
"    /**",
"     * @remarks",
"     * Spawns an entity at a location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to create. If no namespace is provided,",
"     * 'minecraft:' is assumed. Note that an optional initial spawn",
"     * event can be specified between less than/greater than signs",
"     * (e.g., namespace:entityType<spawnEvent>).",
"     * @returns",
"     * The spawned entity. If the entity cannot be spawned, returns",
"     * undefined.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     * @example simpleMobTest.ts",
"     * ```typescript",
"     * import * as gameTest from '@minecraft/server-gametest';",
"     *",
"     * gameTest",
"     *     .register('StarterTests', 'simpleMobTest', (test: gameTest.Test) => {",
"     *         const attackerId = 'fox';",
"     *         const victimId = 'chicken';",
"     *",
"     *         test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *         test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *         test.assertEntityPresentInArea(victimId, true);",
"     *",
"     *         test.succeedWhen(() => {",
"     *             test.assertEntityPresentInArea(victimId, false);",
"     *         });",
"     *     })",
"     *     .maxTicks(400)",
"     *     .structureName('gametests:mediumglass');",
"     * ```",
"     * @example simpleMobGameTest.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function simpleMobGameTest(test: Test) {",
"     *   const attackerId = MinecraftEntityTypes.Fox;",
"     *   const victimId = MinecraftEntityTypes.Chicken;",
"     *",
"     *   test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *   test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *   test.assertEntityPresentInArea(victimId, true);",
"     *",
"     *   test.succeedWhen(() => {",
"     *     test.assertEntityPresentInArea(victimId, false);",
"     *   });",
"     * }",
"     * register('StarterTests', 'simpleMobTest', simpleMobGameTest).maxTicks(400).structureName('gametests:mediumglass');",
"     * ```",
"     * @example phantomsShouldFlyFromCats.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function phantomsShouldFlyFromCats(test: Test) {",
"     *   test.spawn(MinecraftEntityTypes.Cat, { x: 4, y: 3, z: 3 });",
"     *   test.spawn(MinecraftEntityTypes.Phantom, { x: 4, y: 3, z: 3 });",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Phantom, { x: 4, y: 6, z: 3 }, true);",
"     * }",
"     *",
"     * register('MobBehaviorTests', 'phantoms_should_fly_from_cats', phantomsShouldFlyFromCats)",
"     *   .structureName('gametests:glass_cells');",
"     * ```",
"     * @example minibiomes.ts",
"     * ```typescript",
"     * import { EntityComponentTypes } from '@minecraft/server';",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftBlockTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function minibiomes(test: Test) {",
"     *   const minecart = test.spawn(MinecraftEntityTypes.Minecart, { x: 9, y: 7, z: 7 });",
"     *   const pig = test.spawn(MinecraftEntityTypes.Pig, { x: 9, y: 7, z: 7 });",
"     *",
"     *   test.setBlockType(MinecraftBlockTypes.Cobblestone, { x: 10, y: 7, z: 7 });",
"     *",
"     *   const minecartRideableComp = minecart.getComponent(EntityComponentTypes.Rideable);",
"     *",
"     *   minecartRideableComp?.addRider(pig);",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Pig, { x: 8, y: 3, z: 1 }, true);",
"     * }",
"     * register('ChallengeTests', 'minibiomes', minibiomes).structureName('gametests:minibiomes').maxTicks(160);",
"     * ```",
"     */",
"    spawn(entityTypeIdentifier: string, blockLocation: minecraftserver.Vector3): minecraftserver.Entity;",
"    /**",
"     * @remarks",
"     * Spawns an entity at a location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to create. If no namespace is provided,",
"     * 'minecraft:' is assumed. Note that an optional initial spawn",
"     * event can be specified between less than/greater than signs",
"     * (e.g., namespace:entityType<spawnEvent>).",
"     * @returns",
"     * The spawned entity. If the entity cannot be spawned, returns",
"     * undefined.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spawnAtLocation(entityTypeIdentifier: string, location: minecraftserver.Vector3): minecraftserver.Entity;",
"    /**",
"     * @remarks",
"     * Spawns an item entity at a specified location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param itemStack",
"     * ItemStack that describes the item entity to create.",
"     * @param location",
"     * Location to create the item entity at.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spawnItem(itemStack: minecraftserver.ItemStack, location: minecraftserver.Vector3): minecraftserver.Entity;",
"    /**",
"     * @remarks",
"     * Creates a new simulated player within the world.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location where to spawn the simulated player.",
"     * @param name",
"     * Name to give the new simulated player.",
"     * Defaults to: 'Simulated Player'",
"     * @param gameMode",
"     * Defaults to: 0",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spawnSimulatedPlayer(",
"        blockLocation: minecraftserver.Vector3,",
"        name?: string,",
"        gameMode?: minecraftserver.GameMode,",
"    ): SimulatedPlayer;",
"    /**",
"     * @remarks",
"     * Spawns an entity at a location without any AI behaviors.",
"     * This method is frequently used in conjunction with methods",
"     * like .walkTo to create predictable mob actions.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * Location where the entity should be spawned.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spawnWithoutBehaviors(entityTypeIdentifier: string, blockLocation: minecraftserver.Vector3): minecraftserver.Entity;",
"    /**",
"     * @remarks",
"     * Spawns an entity at a location without any AI behaviors.",
"     * This method is frequently used in conjunction with methods",
"     * like .walkTo to create predictable mob actions.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * Location where the entity should be spawned.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spawnWithoutBehaviorsAtLocation(",
"        entityTypeIdentifier: string,",
"        location: minecraftserver.Vector3,",
"    ): minecraftserver.Entity;",
"    /**",
"     * @remarks",
"     * Tests that a particular item entity is present at a",
"     * particular location. If not, an exception is thrown.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockLocation",
"     * BlockLocation containing a multiface block.",
"     * @param fromFace",
"     * Face to spread from. This face must already be set.",
"     * @param direction",
"     * Direction to spread. Use the Minecraft.Direction enum to",
"     * specify a direction.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    spreadFromFaceTowardDirection(",
"        blockLocation: minecraftserver.Vector3,",
"        fromFace: minecraftserver.Direction,",
"        direction: minecraftserver.Direction,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Creates a new GameTestSequence - A set of steps that play",
"     * out sequentially within a GameTest.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * A new GameTestSequence with chaining methods that facilitate",
"     * creating a set of steps.",
"     */",
"    startSequence(): GameTestSequence;",
"    /**",
"     * @remarks",
"     * Marks the current test as a success case.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    succeed(): void;",
"    /**",
"     * @remarks",
"     * Runs the given callback. If the callback does not throw an",
"     * exception, the test is marked as a success.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Callback function that runs. If the function runs",
"     * successfully, the test is marked as a success. Typically,",
"     * this function will have .assertXyz method calls within it.",
"     * @throws This function can throw errors.",
"     */",
"    succeedIf(callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Marks the test as a success at the specified tick.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tick",
"     * Tick after the start of the GameTest to mark the test as",
"     * successful.",
"     * @throws This function can throw errors.",
"     */",
"    succeedOnTick(tick: number): void;",
"    /**",
"     * @remarks",
"     * Runs the given callback at _tick_ ticks after the start of",
"     * the test. If the callback does not throw an exception, the",
"     * test is marked as a failure.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param tick",
"     * Tick after the start of the GameTest to run the testing",
"     * callback at.",
"     * @param callback",
"     * Callback function that runs. If the function runs",
"     * successfully, the test is marked as a success.",
"     * @throws This function can throw errors.",
"     */",
"    succeedOnTickWhen(tick: number, callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Runs the given callback every tick. When the callback",
"     * successfully executes, the test is marked as a success.",
"     * Specifically, the test will succeed when the callback does",
"     * not throw an exception.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Testing callback function that runs. If the function runs",
"     * successfully, the test is marked as a success.",
"     * @throws This function can throw errors.",
"     * @example simpleMobGameTest.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function simpleMobGameTest(test: Test) {",
"     *   const attackerId = MinecraftEntityTypes.Fox;",
"     *   const victimId = MinecraftEntityTypes.Chicken;",
"     *",
"     *   test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
"     *   test.spawn(victimId, { x: 2, y: 2, z: 2 });",
"     *",
"     *   test.assertEntityPresentInArea(victimId, true);",
"     *",
"     *   test.succeedWhen(() => {",
"     *     test.assertEntityPresentInArea(victimId, false);",
"     *   });",
"     * }",
"     * register('StarterTests', 'simpleMobTest', simpleMobGameTest).maxTicks(400).structureName('gametests:mediumglass');",
"     * ```",
"     */",
"    succeedWhen(callback: () => void): void;",
"    /**",
"     * @remarks",
"     * Depending on the condition of isPresent, tests for the",
"     * presence of a block of a particular type on every tick. When",
"     * the specified block of a type is found or not found",
"     * (depending on isPresent), the test is marked as a success.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param blockType",
"     * Type of block to test for.",
"     * @param blockLocation",
"     * Location of the block to test at.",
"     * @param isPresent",
"     * If true, this function tests whether a block of the",
"     * specified type is present. If false, tests that a block of",
"     * the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    succeedWhenBlockPresent(",
"        blockType: minecraftserver.BlockType | string,",
"        blockLocation: minecraftserver.Vector3,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Tests for the presence of a component on every tick.",
"     * Depending on the value of hasComponent, when the specified",
"     * component is found, the test is marked as a success.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to look for. If no namespace is specified,",
"     * 'minecraft:' is assumed.",
"     * @param componentIdentifier",
"     * Type of component to test for the presence of. If no",
"     * namespace is specified, 'minecraft:' is assumed.",
"     * @param blockLocation",
"     * Block location of the entity to test.",
"     * @param hasComponent",
"     * If true, this function tests for the presence of a",
"     * component. If false, this function tests for the lack of a",
"     * component.",
"     * @throws This function can throw errors.",
"     */",
"    succeedWhenEntityHasComponent(",
"        entityTypeIdentifier: string,",
"        componentIdentifier: string,",
"        blockLocation: minecraftserver.Vector3,",
"        hasComponent: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Depending on the value of isPresent, tests for the presence",
"     * of an entity on every tick. When an entity of the specified",
"     * type is found or not found (depending on isPresent), the",
"     * test is marked as a success.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param entityTypeIdentifier",
"     * Type of entity to test for (e.g., 'minecraft:skeleton'). If",
"     * an entity namespace is not specified, 'minecraft:' is",
"     * assumed.",
"     * @param blockLocation",
"     * Location of the entity to test for.",
"     * @param isPresent",
"     * If true, this function tests whether an entity of the",
"     * specified type is present. If false, tests that an entity of",
"     * the specified type is not present.",
"     * Defaults to: true",
"     * @throws This function can throw errors.",
"     * @example phantomsShouldFlyFromCats.ts",
"     * ```typescript",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function phantomsShouldFlyFromCats(test: Test) {",
"     *   test.spawn(MinecraftEntityTypes.Cat, { x: 4, y: 3, z: 3 });",
"     *   test.spawn(MinecraftEntityTypes.Phantom, { x: 4, y: 3, z: 3 });",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Phantom, { x: 4, y: 6, z: 3 }, true);",
"     * }",
"     *",
"     * register('MobBehaviorTests', 'phantoms_should_fly_from_cats', phantomsShouldFlyFromCats)",
"     *   .structureName('gametests:glass_cells');",
"     * ```",
"     * @example minibiomes.ts",
"     * ```typescript",
"     * import { EntityComponentTypes } from '@minecraft/server';",
"     * import { Test, register } from '@minecraft/server-gametest';",
"     * import { MinecraftBlockTypes, MinecraftEntityTypes } from '@minecraft/vanilla-data';",
"     *",
"     * function minibiomes(test: Test) {",
"     *   const minecart = test.spawn(MinecraftEntityTypes.Minecart, { x: 9, y: 7, z: 7 });",
"     *   const pig = test.spawn(MinecraftEntityTypes.Pig, { x: 9, y: 7, z: 7 });",
"     *",
"     *   test.setBlockType(MinecraftBlockTypes.Cobblestone, { x: 10, y: 7, z: 7 });",
"     *",
"     *   const minecartRideableComp = minecart.getComponent(EntityComponentTypes.Rideable);",
"     *",
"     *   minecartRideableComp?.addRider(pig);",
"     *",
"     *   test.succeedWhenEntityPresent(MinecraftEntityTypes.Pig, { x: 8, y: 3, z: 1 }, true);",
"     * }",
"     * register('ChallengeTests', 'minibiomes', minibiomes).structureName('gametests:minibiomes').maxTicks(160);",
"     * ```",
"     */",
"    succeedWhenEntityPresent(",
"        entityTypeIdentifier: string,",
"        blockLocation: minecraftserver.Vector3,",
"        isPresent?: boolean,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Triggers a block event from a fixed list of available block",
"     * events.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param event",
"     * Event to trigger. Valid values include minecraft:drip,",
"     * minecraft:grow_stalagtite, minecraft:grow_stalagmite,",
"     * minecraft:grow_up, minecraft:grow_down and",
"     * minecraft:grow_sideways.",
"     * @param eventParameters",
"     * Defaults to: []",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    triggerInternalBlockEvent(blockLocation: minecraftserver.Vector3, event: string, eventParameters?: number[]): void;",
"    /**",
"     * @remarks",
"     * This asynchronous function will wait until the code in the",
"     * specified callback successfully completes. until can be used",
"     * in conjunction with .assert functions to evaluate that a",
"     * condition is true.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param callback",
"     * Function with code to evaluate.",
"     */",
"    until(callback: () => void): Promise<void>;",
"    /**",
"     * @remarks",
"     * Forces a mob to walk to a particular location. Usually used",
"     * in conjunction with methods like .spawnWithoutBehaviors to",
"     * have more predictable mob behaviors. Mobs will stop",
"     * navigation as soon as they intersect the target location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param mob",
"     * Mob entity to give orders to.",
"     * @param blockLocation",
"     * Location where the entity should be walk to.",
"     * @param speedModifier",
"     * Adjustable modifier to the mob's walking speed.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    walkTo(mob: minecraftserver.Entity, blockLocation: minecraftserver.Vector3, speedModifier?: number): void;",
"    /**",
"     * @remarks",
"     * Forces a mob to walk to a particular location. Usually used",
"     * in conjunction with methods like .spawnWithoutBehaviors to",
"     * have more predictable mob behaviors. Mobs will stop",
"     * navigation as soon as they intersect the target location.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param mob",
"     * Mob entity to give orders to.",
"     * @param location",
"     * Location where the entity should be walk to.",
"     * @param speedModifier",
"     * Adjustable modifier to the mob's walking speed.",
"     * Defaults to: 1",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    walkToLocation(mob: minecraftserver.Entity, location: minecraftserver.Vector3, speedModifier?: number): void;",
"    /**",
"     * @remarks",
"     * From a BlockLocation with coordinates relative to the",
"     * GameTest structure block, returns a new BlockLocation with",
"     * coordinates relative to world. Rotation of the GameTest",
"     * structure is also taken into account.",
"     *",
"     * @param relativeBlockLocation",
"     * Location relative to the GameTest command block.",
"     * @returns",
"     * An absolute location relative to the GameTest command block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    worldBlockLocation(relativeBlockLocation: minecraftserver.Vector3): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * From a location with coordinates relative to the GameTest",
"     * structure block, returns a new location with coordinates",
"     * relative to world. Rotation of the GameTest structure is",
"     * also taken into account.",
"     *",
"     * @param relativeLocation",
"     * Location relative to the GameTest command block.",
"     * @returns",
"     * An absolute location relative to the GameTest command block.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link GameTestError}",
"     */",
"    worldLocation(relativeLocation: minecraftserver.Vector3): minecraftserver.Vector3;",
"}",
"export interface GameTestErrorContext {",
"    absolutePosition: minecraftserver.Vector3;",
"    relativePosition: minecraftserver.Vector3;",
"    tickCount: number;",
"}",
"export interface MoveToOptions {",
"    faceTarget?: boolean;",
"    speed?: number;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class GameTestError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    context?: GameTestErrorContext;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    messageParameters: string[];",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    type: GameTestErrorType;",
"}",
"/**",
" * @remarks",
" * Registers a new GameTest function. This GameTest will become",
" * available in Minecraft via /gametest run",
" * [testClassName]:[testName].",
" *",
" * This function can't be called in read-only mode.",
" *",
" * This function can be called in early-execution mode.",
" *",
" * @param testClassName",
" * Name of the class of tests this test should be a part of.",
" * @param testName",
" * Name of this specific test.",
" * @param testFunction",
" * Implementation of the test function.",
" * @returns",
" * Returns a {@link RegistrationBuilder} object where",
" * additional options for this test can be specified via",
" * builder methods.",
" * @example simpleMobGameTest.ts",
" * ```typescript",
" * import { Test, register } from '@minecraft/server-gametest';",
" * import { MinecraftEntityTypes } from '@minecraft/vanilla-data';",
" *",
" * function simpleMobGameTest(test: Test) {",
" *   const attackerId = MinecraftEntityTypes.Fox;",
" *   const victimId = MinecraftEntityTypes.Chicken;",
" *",
" *   test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
" *   test.spawn(victimId, { x: 2, y: 2, z: 2 });",
" *",
" *   test.assertEntityPresentInArea(victimId, true);",
" *",
" *   test.succeedWhen(() => {",
" *     test.assertEntityPresentInArea(victimId, false);",
" *   });",
" * }",
" * register('StarterTests', 'simpleMobTest', simpleMobGameTest).maxTicks(400).structureName('gametests:mediumglass');",
" * ```",
" */",
"export function register(",
"    testClassName: string,",
"    testName: string,",
"    testFunction: (arg0: Test) => void,",
"): RegistrationBuilder;",
"/**",
" * @remarks",
" * Registers a new GameTest function that is designed for",
" * asynchronous execution. This GameTest will become available",
" * in Minecraft via /gametest run [testClassName]:[testName].",
" *",
" * This function can't be called in read-only mode.",
" *",
" * This function can be called in early-execution mode.",
" *",
" * @param testClassName",
" * Name of the class of tests this test should be a part of.",
" * @param testName",
" * Name of this specific test.",
" * @param testFunction",
" * Implementation of the test function.",
" * @returns",
" * Returns a {@link RegistrationBuilder} object where",
" * additional options for this test can be specified via",
" * builder methods.",
" * @example simpleMobAsyncTest.ts",
" * ```typescript",
" * import * as gameTest from '@minecraft/server-gametest';",
" *",
" * gameTest",
" *     .registerAsync('StarterTests', 'simpleMobTest', async (test: gameTest.Test) => {",
" *         const attackerId = 'fox';",
" *         const victimId = 'chicken';",
" *",
" *         test.spawn(attackerId, { x: 5, y: 2, z: 5 });",
" *         test.spawn(victimId, { x: 2, y: 2, z: 2 });",
" *",
" *         test.assertEntityPresentInArea(victimId, true);",
" *",
" *         test.succeedWhen(() => {",
" *             test.assertEntityPresentInArea(victimId, false);",
" *         });",
" *     })",
" *     .maxTicks(400)",
" *     .structureName('gametests:mediumglass');",
" * ```",
" */",
"export function registerAsync(",
"    testClassName: string,",
"    testName: string,",
"    testFunction: (arg0: Test) => Promise<void>,",
"): RegistrationBuilder;",
""]},{"name":"@minecraft/server-ui","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @packageDocumentation",
" * The `@minecraft/server-ui` module contains types for",
" * expressing simple dialog-based user experiences.",
" *",
" *   * {@link ActionFormData} contain a list of buttons with",
" * captions and images that can be used for presenting a set of",
" * options to a player.",
" *   * {@link MessageFormData} are simple two-button message",
" * experiences that are functional for Yes/No or OK/Cancel",
" * questions.",
" *   * {@link ModalFormData} allow for a more flexible",
" * 'questionnaire-style' list of controls that can be used to",
" * take input.",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server-ui',",
" *   'version': '2.0.0'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"import * as minecraftserver from '@minecraft/server';",
"export enum FormCancelationReason {",
"    UserBusy = 'UserBusy',",
"    UserClosed = 'UserClosed',",
"}",
"export enum FormRejectReason {",
"    MalformedResponse = 'MalformedResponse',",
"    PlayerQuit = 'PlayerQuit',",
"    ServerShutdown = 'ServerShutdown',",
"}",
"/**",
" * Builds a simple player form with buttons that let the player",
" * take action.",
" * @example showActionForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ActionFormData, ActionFormResponse } from '@minecraft/server-ui';",
" *",
" * function showActionForm(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const playerList = world.getPlayers();",
" *",
" *   if (playerList.length >= 1) {",
" *     const form = new ActionFormData()",
" *       .title('Test Title')",
" *       .body('Body text here!')",
" *       .button('btn 1')",
" *       .button('btn 2')",
" *       .button('btn 3')",
" *       .button('btn 4')",
" *       .button('btn 5');",
" *",
" *     form.show(playerList[0]).then((result: ActionFormResponse) => {",
" *       if (result.canceled) {",
" *         log('Player exited out of the dialog. Note that if the chat window is up, dialogs are automatically canceled.');",
" *         return -1;",
" *       } else {",
" *         log('Your result was: ' + result.selection);",
" *       }",
" *     });",
" *   }",
" * }",
" * ```",
" * @example showFavoriteMonth.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ActionFormData, ActionFormResponse } from '@minecraft/server-ui';",
" *",
" * function showFavoriteMonth(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   if (players.length >= 1) {",
" *     const form = new ActionFormData()",
" *       .title('Months')",
" *       .body('Choose your favorite month!')",
" *       .button('January')",
" *       .button('February')",
" *       .button('March')",
" *       .button('April')",
" *       .button('May');",
" *",
" *     form.show(players[0]).then((response: ActionFormResponse) => {",
" *       if (response.selection === 3) {",
" *         log('I like April too!');",
" *         return -1;",
" *       }",
" *     });",
" *   }",
" * }",
" * ```",
" */",
"export class ActionFormData {",
"    /**",
"     * @remarks",
"     * Method that sets the body text for the modal form.",
"     *",
"     */",
"    body(bodyText: minecraftserver.RawMessage | string): ActionFormData;",
"    /**",
"     * @remarks",
"     * Adds a button to this form with an icon from a resource",
"     * pack.",
"     *",
"     */",
"    button(text: minecraftserver.RawMessage | string, iconPath?: string): ActionFormData;",
"    /**",
"     * @remarks",
"     * Adds a section divider to the form.",
"     *",
"     */",
"    divider(): ActionFormData;",
"    /**",
"     * @remarks",
"     * Adds a header to the form.",
"     *",
"     * @param text",
"     * Text to display.",
"     */",
"    header(text: minecraftserver.RawMessage | string): ActionFormData;",
"    /**",
"     * @remarks",
"     * Adds a label to the form.",
"     *",
"     * @param text",
"     * Text to display.",
"     */",
"    label(text: minecraftserver.RawMessage | string): ActionFormData;",
"    /**",
"     * @remarks",
"     * Creates and shows this modal popup form. Returns",
"     * asynchronously when the player confirms or cancels the",
"     * dialog.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param player",
"     * Player to show this dialog to.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftserver.InvalidEntityError}",
"     *",
"     * {@link minecraftserver.RawMessageError}",
"     */",
"    show(player: minecraftserver.Player): Promise<ActionFormResponse>;",
"    /**",
"     * @remarks",
"     * This builder method sets the title for the modal dialog.",
"     *",
"     */",
"    title(titleText: minecraftserver.RawMessage | string): ActionFormData;",
"}",
"/**",
" * Returns data about the player results from a modal action",
" * form.",
" * @example showActionForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ActionFormData, ActionFormResponse } from '@minecraft/server-ui';",
" *",
" * function showActionForm(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const playerList = world.getPlayers();",
" *",
" *   if (playerList.length >= 1) {",
" *     const form = new ActionFormData()",
" *       .title('Test Title')",
" *       .body('Body text here!')",
" *       .button('btn 1')",
" *       .button('btn 2')",
" *       .button('btn 3')",
" *       .button('btn 4')",
" *       .button('btn 5');",
" *",
" *     form.show(playerList[0]).then((result: ActionFormResponse) => {",
" *       if (result.canceled) {",
" *         log('Player exited out of the dialog. Note that if the chat window is up, dialogs are automatically canceled.');",
" *         return -1;",
" *       } else {",
" *         log('Your result was: ' + result.selection);",
" *       }",
" *     });",
" *   }",
" * }",
" * ```",
" * @example showFavoriteMonth.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ActionFormData, ActionFormResponse } from '@minecraft/server-ui';",
" *",
" * function showFavoriteMonth(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   if (players.length >= 1) {",
" *     const form = new ActionFormData()",
" *       .title('Months')",
" *       .body('Choose your favorite month!')",
" *       .button('January')",
" *       .button('February')",
" *       .button('March')",
" *       .button('April')",
" *       .button('May');",
" *",
" *     form.show(players[0]).then((response: ActionFormResponse) => {",
" *       if (response.selection === 3) {",
" *         log('I like April too!');",
" *         return -1;",
" *       }",
" *     });",
" *   }",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ActionFormResponse extends FormResponse {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the index of the button that was pushed.",
"     *",
"     */",
"    readonly selection?: number;",
"}",
"/**",
" * Base type for a form response.",
" */",
"export class FormResponse {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Contains additional details as to why a form was canceled.",
"     *",
"     */",
"    readonly cancelationReason?: FormCancelationReason;",
"    /**",
"     * @remarks",
"     * If true, the form was canceled by the player (e.g., they",
"     * selected the pop-up X close button).",
"     *",
"     */",
"    readonly canceled: boolean;",
"}",
"/**",
" * Builds a simple two-button modal dialog.",
" * @example showBasicMessageForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { MessageFormResponse, MessageFormData } from '@minecraft/server-ui';",
" *",
" * function showBasicMessageForm(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   const messageForm = new MessageFormData()",
" *     .title('Message Form Example')",
" *     .body('This shows a simple example using §o§7MessageFormData§r.')",
" *     .button1('Button 1')",
" *     .button2('Button 2');",
" *",
" *   messageForm",
" *     .show(players[0])",
" *     .then((formData: MessageFormResponse) => {",
" *       // player canceled the form, or another dialog was up and open.",
" *       if (formData.canceled || formData.selection === undefined) {",
" *         return;",
" *       }",
" *",
" *       log(`You selected ${formData.selection === 0 ? 'Button 1' : 'Button 2'}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" * @example showTranslatedMessageForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { MessageFormResponse, MessageFormData } from '@minecraft/server-ui';",
" *",
" * function showTranslatedMessageForm(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   const messageForm = new MessageFormData()",
" *     .title({ translate: 'permissions.removeplayer' })",
" *     .body({ translate: 'accessibility.list.or.two', with: ['Player 1', 'Player 2'] })",
" *     .button1('Player 1')",
" *     .button2('Player 2');",
" *",
" *   messageForm",
" *     .show(players[0])",
" *     .then((formData: MessageFormResponse) => {",
" *       // player canceled the form, or another dialog was up and open.",
" *       if (formData.canceled || formData.selection === undefined) {",
" *         return;",
" *       }",
" *",
" *       log(`You selected ${formData.selection === 0 ? 'Player 1' : 'Player 2'}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" */",
"export class MessageFormData {",
"    /**",
"     * @remarks",
"     * Method that sets the body text for the modal form.",
"     *",
"     */",
"    body(bodyText: minecraftserver.RawMessage | string): MessageFormData;",
"    /**",
"     * @remarks",
"     * Method that sets the text for the first button of the",
"     * dialog.",
"     *",
"     */",
"    button1(text: minecraftserver.RawMessage | string): MessageFormData;",
"    /**",
"     * @remarks",
"     * This method sets the text for the second button on the",
"     * dialog.",
"     *",
"     */",
"    button2(text: minecraftserver.RawMessage | string): MessageFormData;",
"    /**",
"     * @remarks",
"     * Creates and shows this modal popup form. Returns",
"     * asynchronously when the player confirms or cancels the",
"     * dialog.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param player",
"     * Player to show this dialog to.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftserver.InvalidEntityError}",
"     *",
"     * {@link minecraftserver.RawMessageError}",
"     */",
"    show(player: minecraftserver.Player): Promise<MessageFormResponse>;",
"    /**",
"     * @remarks",
"     * This builder method sets the title for the modal dialog.",
"     *",
"     */",
"    title(titleText: minecraftserver.RawMessage | string): MessageFormData;",
"}",
"/**",
" * Returns data about the player results from a modal message",
" * form.",
" * @example showBasicMessageForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { MessageFormResponse, MessageFormData } from '@minecraft/server-ui';",
" *",
" * function showBasicMessageForm(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   const messageForm = new MessageFormData()",
" *     .title('Message Form Example')",
" *     .body('This shows a simple example using §o§7MessageFormData§r.')",
" *     .button1('Button 1')",
" *     .button2('Button 2');",
" *",
" *   messageForm",
" *     .show(players[0])",
" *     .then((formData: MessageFormResponse) => {",
" *       // player canceled the form, or another dialog was up and open.",
" *       if (formData.canceled || formData.selection === undefined) {",
" *         return;",
" *       }",
" *",
" *       log(`You selected ${formData.selection === 0 ? 'Button 1' : 'Button 2'}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" * @example showTranslatedMessageForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { MessageFormResponse, MessageFormData } from '@minecraft/server-ui';",
" *",
" * function showTranslatedMessageForm(",
" *   log: (message: string, status?: number) => void,",
" *   targetLocation: DimensionLocation",
" * ) {",
" *   const players = world.getPlayers();",
" *",
" *   const messageForm = new MessageFormData()",
" *     .title({ translate: 'permissions.removeplayer' })",
" *     .body({ translate: 'accessibility.list.or.two', with: ['Player 1', 'Player 2'] })",
" *     .button1('Player 1')",
" *     .button2('Player 2');",
" *",
" *   messageForm",
" *     .show(players[0])",
" *     .then((formData: MessageFormResponse) => {",
" *       // player canceled the form, or another dialog was up and open.",
" *       if (formData.canceled || formData.selection === undefined) {",
" *         return;",
" *       }",
" *",
" *       log(`You selected ${formData.selection === 0 ? 'Player 1' : 'Player 2'}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class MessageFormResponse extends FormResponse {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns the index of the button that was pushed.",
"     *",
"     */",
"    readonly selection?: number;",
"}",
"/**",
" * Used to create a fully customizable pop-up form for a",
" * player.",
" * @example showBasicModalForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ModalFormData } from '@minecraft/server-ui';",
" *",
" * function showBasicModalForm(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const modalForm = new ModalFormData().title('Example Modal Controls for §o§7ModalFormData§r');",
" *",
" *   modalForm.toggle('Toggle w/o default');",
" *   modalForm.toggle('Toggle w/ default', true);",
" *",
" *   modalForm.slider('Slider w/o default', 0, 50, 5);",
" *   modalForm.slider('Slider w/ default', 0, 50, 5, 30);",
" *",
" *   modalForm.dropdown('Dropdown w/o default', ['option 1', 'option 2', 'option 3']);",
" *   modalForm.dropdown('Dropdown w/ default', ['option 1', 'option 2', 'option 3'], 2);",
" *",
" *   modalForm.textField('Input w/o default', 'type text here');",
" *   modalForm.textField('Input w/ default', 'type text here', 'this is default');",
" *",
" *   modalForm",
" *     .show(players[0])",
" *     .then((formData) => {",
" *       players[0].sendMessage(`Modal form results: ${JSON.stringify(formData.formValues, undefined, 2)}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" */",
"export class ModalFormData {",
"    /**",
"     * @remarks",
"     * Adds a section divider to the form.",
"     *",
"     */",
"    divider(): ModalFormData;",
"    /**",
"     * @remarks",
"     * Adds a dropdown with choices to the form.",
"     *",
"     * @param label",
"     * The label to display for the dropdown.",
"     * @param items",
"     * The selectable items for the dropdown.",
"     * @param dropdownOptions",
"     * The optional additional values for the dropdown creation.",
"     */",
"    dropdown(",
"        label: minecraftserver.RawMessage | string,",
"        items: (minecraftserver.RawMessage | string)[],",
"        dropdownOptions?: ModalFormDataDropdownOptions,",
"    ): ModalFormData;",
"    /**",
"     * @remarks",
"     * Adds a header to the form.",
"     *",
"     * @param text",
"     * Text to display.",
"     */",
"    header(text: minecraftserver.RawMessage | string): ModalFormData;",
"    /**",
"     * @remarks",
"     * Adds a label to the form.",
"     *",
"     * @param text",
"     * Text to display.",
"     */",
"    label(text: minecraftserver.RawMessage | string): ModalFormData;",
"    /**",
"     * @remarks",
"     * Creates and shows this modal popup form. Returns",
"     * asynchronously when the player confirms or cancels the",
"     * dialog.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param player",
"     * Player to show this dialog to.",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.EngineError}",
"     *",
"     * {@link minecraftserver.InvalidEntityError}",
"     *",
"     * {@link minecraftserver.RawMessageError}",
"     */",
"    show(player: minecraftserver.Player): Promise<ModalFormResponse>;",
"    /**",
"     * @remarks",
"     * Adds a numeric slider to the form.",
"     *",
"     * @param label",
"     * The label to display for the slider.",
"     * @param minimumValue",
"     * The minimum selectable possible value.",
"     * @param maximumValue",
"     * The maximum selectable possible value.",
"     * @param sliderOptions",
"     * The optional additional values for the slider creation.",
"     */",
"    slider(",
"        label: minecraftserver.RawMessage | string,",
"        minimumValue: number,",
"        maximumValue: number,",
"        sliderOptions?: ModalFormDataSliderOptions,",
"    ): ModalFormData;",
"    submitButton(submitButtonText: minecraftserver.RawMessage | string): ModalFormData;",
"    /**",
"     * @remarks",
"     * Adds a textbox to the form.",
"     *",
"     * @param label",
"     * The label to display for the textfield.",
"     * @param placeholderText",
"     * The place holder text to display.",
"     * @param textFieldOptions",
"     * The optional additional values for the textfield creation.",
"     */",
"    textField(",
"        label: minecraftserver.RawMessage | string,",
"        placeholderText: minecraftserver.RawMessage | string,",
"        textFieldOptions?: ModalFormDataTextFieldOptions,",
"    ): ModalFormData;",
"    /**",
"     * @remarks",
"     * This builder method sets the title for the modal dialog.",
"     *",
"     */",
"    title(titleText: minecraftserver.RawMessage | string): ModalFormData;",
"    /**",
"     * @remarks",
"     * Adds a toggle checkbox button to the form.",
"     *",
"     * @param label",
"     * The label to display for the toggle.",
"     * @param toggleOptions",
"     * The optional additional values for the toggle creation.",
"     */",
"    toggle(label: minecraftserver.RawMessage | string, toggleOptions?: ModalFormDataToggleOptions): ModalFormData;",
"}",
"/**",
" * Returns data about player responses to a modal form.",
" * @example showBasicModalForm.ts",
" * ```typescript",
" * import { world, DimensionLocation } from '@minecraft/server';",
" * import { ModalFormData } from '@minecraft/server-ui';",
" *",
" * function showBasicModalForm(log: (message: string, status?: number) => void, targetLocation: DimensionLocation) {",
" *   const players = world.getPlayers();",
" *",
" *   const modalForm = new ModalFormData().title('Example Modal Controls for §o§7ModalFormData§r');",
" *",
" *   modalForm.toggle('Toggle w/o default');",
" *   modalForm.toggle('Toggle w/ default', true);",
" *",
" *   modalForm.slider('Slider w/o default', 0, 50, 5);",
" *   modalForm.slider('Slider w/ default', 0, 50, 5, 30);",
" *",
" *   modalForm.dropdown('Dropdown w/o default', ['option 1', 'option 2', 'option 3']);",
" *   modalForm.dropdown('Dropdown w/ default', ['option 1', 'option 2', 'option 3'], 2);",
" *",
" *   modalForm.textField('Input w/o default', 'type text here');",
" *   modalForm.textField('Input w/ default', 'type text here', 'this is default');",
" *",
" *   modalForm",
" *     .show(players[0])",
" *     .then((formData) => {",
" *       players[0].sendMessage(`Modal form results: ${JSON.stringify(formData.formValues, undefined, 2)}`);",
" *     })",
" *     .catch((error: Error) => {",
" *       log('Failed to show form: ' + error);",
" *       return -1;",
" *     });",
" * }",
" * ```",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ModalFormResponse extends FormResponse {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * An ordered set of values based on the order of controls",
"     * specified by ModalFormData.",
"     *",
"     */",
"    readonly formValues?: (boolean | number | string | undefined)[];",
"}",
"export class UIManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    closeAllForms(player: minecraftserver.Player): void;",
"}",
"/**",
" * An interface that is passed into {@link",
" * @minecraft/Server-ui.ModalFormData.dropdown} to provide",
" * additional options for the dropdown creation.",
" */",
"export interface ModalFormDataDropdownOptions {",
"    /**",
"     * @remarks",
"     * The default selected item index. It will be zero in case of",
"     * not setting this value.",
"     *",
"     */",
"    defaultValueIndex?: number;",
"    /**",
"     * @remarks",
"     * It will show an exclamation icon that will display a tooltip",
"     * if it is hovered.",
"     *",
"     */",
"    tooltip?: minecraftserver.RawMessage | string;",
"}",
"/**",
" * An interface that is passed into {@link",
" * @minecraft/Server-ui.ModalFormData.slider} to provide",
" * additional options for the slider creation.",
" */",
"export interface ModalFormDataSliderOptions {",
"    /**",
"     * @remarks",
"     * The default value for the slider.",
"     *",
"     */",
"    defaultValue?: number;",
"    /**",
"     * @remarks",
"     * It will show an exclamation icon that will display a tooltip",
"     * if it is hovered.",
"     *",
"     */",
"    tooltip?: minecraftserver.RawMessage | string;",
"    /**",
"     * @remarks",
"     * Defines the increment of values that the slider generates",
"     * when moved. It will be '1' in case of not providing this.",
"     *",
"     */",
"    valueStep?: number;",
"}",
"/**",
" * An interface that is passed into {@link",
" * @minecraft/Server-ui.ModalFormData.textField} to provide",
" * additional options for the textfield creation.",
" */",
"export interface ModalFormDataTextFieldOptions {",
"    /**",
"     * @remarks",
"     * The default value for the textfield.",
"     *",
"     */",
"    defaultValue?: string;",
"    /**",
"     * @remarks",
"     * It will show an exclamation icon that will display a tooltip",
"     * if it is hovered.",
"     *",
"     */",
"    tooltip?: minecraftserver.RawMessage | string;",
"}",
"/**",
" * An interface that is passed into {@link",
" * @minecraft/Server-ui.ModalFormData.toggle} to provide",
" * additional options for the toggle creation.",
" */",
"export interface ModalFormDataToggleOptions {",
"    /**",
"     * @remarks",
"     * The default value for the toggle.",
"     *",
"     */",
"    defaultValue?: boolean;",
"    /**",
"     * @remarks",
"     * It will show an exclamation icon that will display a tooltip",
"     * if it is hovered.",
"     *",
"     */",
"    tooltip?: minecraftserver.RawMessage | string;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class FormRejectError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    reason: FormRejectReason;",
"}",
"export const uiManager: UIManager;",
""]},{"name":"@minecraft/server-admin","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @beta",
" * @packageDocumentation",
" * Contains types related to administering a Bedrock Dedicated",
" * Server. These types allow for the configuration of variables",
" * and secrets in JSON files in the Bedrock Dedicated Server",
" * folder. These types cannot be used on Minecraft clients or",
" * within Minecraft Realms.",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server-admin',",
" *   'version': '1.0.0-beta'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"import * as minecraftserver from '@minecraft/server';",
"export class AdminBeforeEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This event is fired before a player joins the world. Unlike",
"     * other before events, this event is a before event that you",
"     * can delay several ticks by not resolving the promise",
"     * returned in the subscribe function. If the promise is",
"     * rejected, the client is rejected.",
"     *",
"     */",
"    readonly asyncPlayerJoin: AsyncPlayerJoinBeforeEventSignal;",
"}",
"/**",
" * The data available before a player joins the world.",
" */",
"export class AsyncPlayerJoinBeforeEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The player's name",
"     *",
"     */",
"    readonly name: string;",
"    /**",
"     * @remarks",
"     * An identifier that can be used to identify a player across",
"     * sessions.",
"     *",
"     */",
"    readonly persistentId: string;",
"    /**",
"     * @remarks",
"     * Call this to disconnect a player. They will be allowed to",
"     * try to join again.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link DisconnectedError}",
"     */",
"    disconnect(reason?: string): void;",
"    /**",
"     * @remarks",
"     * Will return true if the player is still waiting to join the",
"     * world. If they disconnect then it will return false.",
"     *",
"     */",
"    isValid(): boolean;",
"}",
"export class AsyncPlayerJoinBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Add a callback that's ran before a player joins the world.",
"     * This callback returns a promise and the player won't join",
"     * until that promise is resolved. If the promise is not",
"     * resolved within a reasonable time, the player joining will",
"     * be rejected. If the player joining leaves/disconnects, then",
"     * the event data's isValid will return false.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: AsyncPlayerJoinBeforeEvent) => Promise<void>,",
"    ): (arg0: AsyncPlayerJoinBeforeEvent) => Promise<void>;",
"    unsubscribe(callback: (arg0: AsyncPlayerJoinBeforeEvent) => Promise<void>): boolean;",
"}",
"/**",
" * This represents a placeholder object that represents a",
" * secret string. The contents of that string are not available",
" * to script; this object is just a placeholder.",
" */",
"export class SecretString {",
"    constructor(value: string);",
"}",
"/**",
" * A collection of server secrets defined in dedicated server",
" * configuration.",
" * @example getPlayerProfile.ts",
" * ```typescript",
" * import { variables, secrets } from '@minecraft/server-admin';",
" * import { http, HttpRequest, HttpRequestMethod, HttpHeader, HttpResponse } from '@minecraft/server-net';",
" *",
" * const serverUrl = variables.get('serverEndpoint');",
" *",
" * function getPlayerProfile(playerId: string): Promise<HttpResponse> {",
" *     const req = new HttpRequest(serverUrl + 'getPlayerProfile');",
" *",
" *     req.body = JSON.stringify({",
" *         playerId,",
" *     });",
" *",
" *     const authTokenSec = secrets.get('authtoken');",
" *",
" *     if (!authTokenSec) {",
" *         throw new Error('authtoken secret not defined.');",
" *     }",
" *",
" *     req.method = HttpRequestMethod.Post;",
" *     req.headers = [new HttpHeader('Content-Type', 'application/json'), new HttpHeader('auth', authTokenSec)];",
" *",
" *     return http.request(req);",
" * }",
" * ```",
" */",
"export class ServerSecrets {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * A list of available, configured server secrets.",
"     *",
"     */",
"    readonly names: string[];",
"    /**",
"     * @remarks",
"     * Returns a SecretString that is a placeholder for a secret",
"     * configured in a JSON file. In certain objects, like an",
"     * HttpHeader, this Secret is resolved at the time of execution",
"     * but is not made available to the script environment.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    get(name: string): SecretString | undefined;",
"}",
"/**",
" * A collection of server variables defined in dedicated server",
" * configuration.",
" * @example getPlayerProfile.ts",
" * ```typescript",
" * import { variables, secrets } from '@minecraft/server-admin';",
" * import { http, HttpRequest, HttpRequestMethod, HttpHeader, HttpResponse } from '@minecraft/server-net';",
" *",
" * const serverUrl = variables.get('serverEndpoint');",
" *",
" * function getPlayerProfile(playerId: string): Promise<HttpResponse> {",
" *     const req = new HttpRequest(serverUrl + 'getPlayerProfile');",
" *",
" *     req.body = JSON.stringify({",
" *         playerId,",
" *     });",
" *",
" *     const authTokenSec = secrets.get('authtoken');",
" *",
" *     if (!authTokenSec) {",
" *         throw new Error('authtoken secret not defined.');",
" *     }",
" *",
" *     req.method = HttpRequestMethod.Post;",
" *     req.headers = [new HttpHeader('Content-Type', 'application/json'), new HttpHeader('auth', authTokenSec)];",
" *",
" *     return http.request(req);",
" * }",
" * ```",
" */",
"export class ServerVariables {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * A list of available, configured server variables.",
"     *",
"     */",
"    readonly names: string[];",
"    /**",
"     * @remarks",
"     * Returns the value of variable that has been configured in a",
"     * dedicated server configuration JSON file.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    get(name: string): unknown | undefined;",
"}",
"/**",
" * An error that is thrown when trying to interact with a join",
" * event and the player is disconnected.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class DisconnectedError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The id of the player that was disconnected.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    id: string;",
"}",
"/**",
" * @remarks",
" * Transfer player to another server.",
" *",
" * This function can't be called in read-only mode.",
" *",
" * @param player",
" * Player to transfer.",
" * @param host",
" * Host of the server to transfer to.",
" * @param port",
" * Port of the server to transfer to.",
" * @throws This function can throw errors.",
" */",
"export function transferPlayer(player: minecraftserver.Player, host: string, port: number): void;",
"export const beforeEvents: AdminBeforeEvents;",
"/**",
" * @remarks",
" * A globally available object that returns a list of",
" * dedicated-server configured secrets.",
" *",
" */",
"export const secrets: ServerSecrets;",
"/**",
" * @remarks",
" * A globally available object that returns a list of",
" * dedicated-server configured variables.",
" *",
" */",
"export const variables: ServerVariables;",
""]},{"name":"@minecraft/server-net","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @beta",
" * @packageDocumentation",
" * The `@minecraft/server-net` module contains types for",
" * executing HTTP-based requests. This module can only be used",
" * on Bedrock Dedicated Server. These APIs do not function",
" * within the Minecraft game client or within Minecraft Realms.",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server-net',",
" *   'version': '1.0.0-beta'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"import * as minecraftserver from '@minecraft/server';",
"import * as minecraftserveradmin from '@minecraft/server-admin';",
"export enum HttpRequestMethod {",
"    /**",
"     * @remarks",
"     * Represents the method for an HTTP HEAD request. HEAD",
"     * requests are similar to a GET request, but are commonly used",
"     * to retrieve just the HTTP response headers from the",
"     * specified URI, and not the body contents.",
"     *",
"     */",
"    Delete = 'Delete',",
"    /**",
"     * @remarks",
"     * Represents the method for an HTTP PUT request. POST requests",
"     * are commonly used to create a new resource that is a",
"     * subordinate of the specified URI.",
"     *",
"     */",
"    Get = 'Get',",
"    /**",
"     * @remarks",
"     * Represents the method for an HTTP PUT request. GET requests",
"     * are commonly used to retrieve information about a resource",
"     * at the specified URI.",
"     *",
"     */",
"    Head = 'Head',",
"    /**",
"     * @remarks",
"     * Represents the method for an HTTP PUT request. GET requests",
"     * are commonly used to retrieve information about a resource",
"     * at the specified URI.",
"     *",
"     */",
"    Post = 'Post',",
"    /**",
"     * @remarks",
"     * Represents the method for an HTTP PUT request. PUT requests",
"     * are commonly used to update a single resource that already",
"     * exists in a resource collection.",
"     *",
"     */",
"    Put = 'Put',",
"}",
"/**",
" * Represents the unique type of network packet.",
" */",
"export enum PacketId {",
"    ActorEventPacket = 'ActorEventPacket',",
"    ActorPickRequestPacket = 'ActorPickRequestPacket',",
"    AddActorPacket = 'AddActorPacket',",
"    AddBehaviorTreePacket = 'AddBehaviorTreePacket',",
"    AddItemActorPacket = 'AddItemActorPacket',",
"    AddPaintingPacket = 'AddPaintingPacket',",
"    AddPlayerPacket = 'AddPlayerPacket',",
"    AddVolumeEntityPacket = 'AddVolumeEntityPacket',",
"    AgentActionEventPacket = 'AgentActionEventPacket',",
"    AgentAnimationPacket = 'AgentAnimationPacket',",
"    AnimateEntityPacket = 'AnimateEntityPacket',",
"    AnimatePacket = 'AnimatePacket',",
"    AnvilDamagePacket = 'AnvilDamagePacket',",
"    AutomationClientConnectPacket = 'AutomationClientConnectPacket',",
"    AvailableActorIdentifiersPacket = 'AvailableActorIdentifiersPacket',",
"    AvailableCommandsPacket = 'AvailableCommandsPacket',",
"    AwardAchievementPacket = 'AwardAchievementPacket',",
"    BiomeDefinitionListPacket = 'BiomeDefinitionListPacket',",
"    BlockActorDataPacket = 'BlockActorDataPacket',",
"    BlockEventPacket = 'BlockEventPacket',",
"    BlockPickRequestPacket = 'BlockPickRequestPacket',",
"    BookEditPacket = 'BookEditPacket',",
"    BossEventPacket = 'BossEventPacket',",
"    CameraAimAssistPacket = 'CameraAimAssistPacket',",
"    CameraAimAssistPresetsPacket = 'CameraAimAssistPresetsPacket',",
"    CameraInstructionPacket = 'CameraInstructionPacket',",
"    CameraPacket = 'CameraPacket',",
"    CameraPresetsPacket = 'CameraPresetsPacket',",
"    CameraShakePacket = 'CameraShakePacket',",
"    ChangeDimensionPacket = 'ChangeDimensionPacket',",
"    ChangeMobPropertyPacket = 'ChangeMobPropertyPacket',",
"    ChunkRadiusUpdatedPacket = 'ChunkRadiusUpdatedPacket',",
"    ClientboundCloseFormPacket = 'ClientboundCloseFormPacket',",
"    ClientboundControlSchemeSetPacket = 'ClientboundControlSchemeSetPacket',",
"    ClientboundDebugRendererPacket = 'ClientboundDebugRendererPacket',",
"    ClientboundMapItemDataPacket = 'ClientboundMapItemDataPacket',",
"    ClientCacheBlobStatusPacket = 'ClientCacheBlobStatusPacket',",
"    ClientCacheMissResponsePacket = 'ClientCacheMissResponsePacket',",
"    ClientCacheStatusPacket = 'ClientCacheStatusPacket',",
"    ClientCameraAimAssistPacket = 'ClientCameraAimAssistPacket',",
"    ClientMovementPredictionSyncPacket = 'ClientMovementPredictionSyncPacket',",
"    ClientToServerHandshakePacket = 'ClientToServerHandshakePacket',",
"    CodeBuilderPacket = 'CodeBuilderPacket',",
"    CodeBuilderSourcePacket = 'CodeBuilderSourcePacket',",
"    CommandBlockUpdatePacket = 'CommandBlockUpdatePacket',",
"    CommandOutputPacket = 'CommandOutputPacket',",
"    CommandRequestPacket = 'CommandRequestPacket',",
"    CompletedUsingItemPacket = 'CompletedUsingItemPacket',",
"    ContainerClosePacket = 'ContainerClosePacket',",
"    ContainerOpenPacket = 'ContainerOpenPacket',",
"    ContainerRegistryCleanupPacket = 'ContainerRegistryCleanupPacket',",
"    ContainerSetDataPacket = 'ContainerSetDataPacket',",
"    CorrectPlayerMovePredictionPacket = 'CorrectPlayerMovePredictionPacket',",
"    CraftingDataPacket = 'CraftingDataPacket',",
"    CreatePhotoPacket = 'CreatePhotoPacket',",
"    CreativeContentPacket = 'CreativeContentPacket',",
"    CurrentStructureFeaturePacket = 'CurrentStructureFeaturePacket',",
"    DeathInfoPacket = 'DeathInfoPacket',",
"    DebugInfoPacket = 'DebugInfoPacket',",
"    DimensionDataPacket = 'DimensionDataPacket',",
"    DisconnectPacket = 'DisconnectPacket',",
"    EditorNetworkPacket = 'EditorNetworkPacket',",
"    EducationSettingsPacket = 'EducationSettingsPacket',",
"    EduUriResourcePacket = 'EduUriResourcePacket',",
"    EmoteListPacket = 'EmoteListPacket',",
"    EmotePacket = 'EmotePacket',",
"    FeatureRegistryPacket = 'FeatureRegistryPacket',",
"    GameRulesChangedPacket = 'GameRulesChangedPacket',",
"    GameTestRequestPacket = 'GameTestRequestPacket',",
"    GameTestResultsPacket = 'GameTestResultsPacket',",
"    GuiDataPickItemPacket = 'GuiDataPickItemPacket',",
"    HurtArmorPacket = 'HurtArmorPacket',",
"    InteractPacket = 'InteractPacket',",
"    InventoryContentPacket = 'InventoryContentPacket',",
"    InventorySlotPacket = 'InventorySlotPacket',",
"    InventoryTransactionPacket = 'InventoryTransactionPacket',",
"    ItemRegistryPacket = 'ItemRegistryPacket',",
"    ItemStackRequestPacket = 'ItemStackRequestPacket',",
"    ItemStackResponsePacket = 'ItemStackResponsePacket',",
"    JigsawStructureDataPacket = 'JigsawStructureDataPacket',",
"    LabTablePacket = 'LabTablePacket',",
"    LecternUpdatePacket = 'LecternUpdatePacket',",
"    LegacyTelemetryEventPacket = 'LegacyTelemetryEventPacket',",
"    LessonProgressPacket = 'LessonProgressPacket',",
"    LevelChunkPacket = 'LevelChunkPacket',",
"    LevelEventGenericPacket = 'LevelEventGenericPacket',",
"    LevelEventPacket = 'LevelEventPacket',",
"    LevelSoundEventPacket = 'LevelSoundEventPacket',",
"    LoginPacket = 'LoginPacket',",
"    MapCreateLockedCopyPacket = 'MapCreateLockedCopyPacket',",
"    MapInfoRequestPacket = 'MapInfoRequestPacket',",
"    MobArmorEquipmentPacket = 'MobArmorEquipmentPacket',",
"    MobEffectPacket = 'MobEffectPacket',",
"    MobEquipmentPacket = 'MobEquipmentPacket',",
"    ModalFormRequestPacket = 'ModalFormRequestPacket',",
"    ModalFormResponsePacket = 'ModalFormResponsePacket',",
"    MotionPredictionHintsPacket = 'MotionPredictionHintsPacket',",
"    MoveActorAbsolutePacket = 'MoveActorAbsolutePacket',",
"    MoveActorDeltaPacket = 'MoveActorDeltaPacket',",
"    MovementEffectPacket = 'MovementEffectPacket',",
"    MovePlayerPacket = 'MovePlayerPacket',",
"    MultiplayerSettingsPacket = 'MultiplayerSettingsPacket',",
"    NetworkChunkPublisherUpdatePacket = 'NetworkChunkPublisherUpdatePacket',",
"    NetworkSettingsPacket = 'NetworkSettingsPacket',",
"    NetworkStackLatencyPacket = 'NetworkStackLatencyPacket',",
"    NpcDialoguePacket = 'NpcDialoguePacket',",
"    NpcRequestPacket = 'NpcRequestPacket',",
"    OnScreenTextureAnimationPacket = 'OnScreenTextureAnimationPacket',",
"    OpenSignPacket = 'OpenSignPacket',",
"    PacketViolationWarningPacket = 'PacketViolationWarningPacket',",
"    PhotoTransferPacket = 'PhotoTransferPacket',",
"    PlayerActionPacket = 'PlayerActionPacket',",
"    PlayerArmorDamagePacket = 'PlayerArmorDamagePacket',",
"    PlayerAuthInputPacket = 'PlayerAuthInputPacket',",
"    PlayerEnchantOptionsPacket = 'PlayerEnchantOptionsPacket',",
"    PlayerFogPacket = 'PlayerFogPacket',",
"    PlayerHotbarPacket = 'PlayerHotbarPacket',",
"    PlayerListPacket = 'PlayerListPacket',",
"    PlayerLocationPacket = 'PlayerLocationPacket',",
"    PlayerSkinPacket = 'PlayerSkinPacket',",
"    PlayerStartItemCooldownPacket = 'PlayerStartItemCooldownPacket',",
"    PlayerToggleCrafterSlotRequestPacket = 'PlayerToggleCrafterSlotRequestPacket',",
"    PlayerUpdateEntityOverridesPacket = 'PlayerUpdateEntityOverridesPacket',",
"    PlaySoundPacket = 'PlaySoundPacket',",
"    PlayStatusPacket = 'PlayStatusPacket',",
"    PositionTrackingDBClientRequestPacket = 'PositionTrackingDBClientRequestPacket',",
"    PositionTrackingDBServerBroadcastPacket = 'PositionTrackingDBServerBroadcastPacket',",
"    PurchaseReceiptPacket = 'PurchaseReceiptPacket',",
"    RefreshEntitlementsPacket = 'RefreshEntitlementsPacket',",
"    RemoveActorPacket = 'RemoveActorPacket',",
"    RemoveObjectivePacket = 'RemoveObjectivePacket',",
"    RemoveVolumeEntityPacket = 'RemoveVolumeEntityPacket',",
"    RequestAbilityPacket = 'RequestAbilityPacket',",
"    RequestChunkRadiusPacket = 'RequestChunkRadiusPacket',",
"    RequestNetworkSettingsPacket = 'RequestNetworkSettingsPacket',",
"    RequestPermissionsPacket = 'RequestPermissionsPacket',",
"    ResourcePackChunkDataPacket = 'ResourcePackChunkDataPacket',",
"    ResourcePackChunkRequestPacket = 'ResourcePackChunkRequestPacket',",
"    ResourcePackClientResponsePacket = 'ResourcePackClientResponsePacket',",
"    ResourcePackDataInfoPacket = 'ResourcePackDataInfoPacket',",
"    ResourcePacksInfoPacket = 'ResourcePacksInfoPacket',",
"    ResourcePackStackPacket = 'ResourcePackStackPacket',",
"    RespawnPacket = 'RespawnPacket',",
"    ScriptMessagePacket = 'ScriptMessagePacket',",
"    ServerboundDiagnosticsPacket = 'ServerboundDiagnosticsPacket',",
"    ServerboundLoadingScreenPacket = 'ServerboundLoadingScreenPacket',",
"    ServerPlayerPostMovePositionPacket = 'ServerPlayerPostMovePositionPacket',",
"    ServerSettingsRequestPacket = 'ServerSettingsRequestPacket',",
"    ServerSettingsResponsePacket = 'ServerSettingsResponsePacket',",
"    ServerStatsPacket = 'ServerStatsPacket',",
"    ServerToClientHandshakePacket = 'ServerToClientHandshakePacket',",
"    SetActorDataPacket = 'SetActorDataPacket',",
"    SetActorLinkPacket = 'SetActorLinkPacket',",
"    SetActorMotionPacket = 'SetActorMotionPacket',",
"    SetCommandsEnabledPacket = 'SetCommandsEnabledPacket',",
"    SetDefaultGameTypePacket = 'SetDefaultGameTypePacket',",
"    SetDifficultyPacket = 'SetDifficultyPacket',",
"    SetDisplayObjectivePacket = 'SetDisplayObjectivePacket',",
"    SetHealthPacket = 'SetHealthPacket',",
"    SetHudPacket = 'SetHudPacket',",
"    SetLastHurtByPacket = 'SetLastHurtByPacket',",
"    SetLocalPlayerAsInitializedPacket = 'SetLocalPlayerAsInitializedPacket',",
"    SetMovementAuthorityPacket = 'SetMovementAuthorityPacket',",
"    SetPlayerGameTypePacket = 'SetPlayerGameTypePacket',",
"    SetPlayerInventoryOptionsPacket = 'SetPlayerInventoryOptionsPacket',",
"    SetScoreboardIdentityPacket = 'SetScoreboardIdentityPacket',",
"    SetScorePacket = 'SetScorePacket',",
"    SetSpawnPositionPacket = 'SetSpawnPositionPacket',",
"    SetTimePacket = 'SetTimePacket',",
"    SettingsCommandPacket = 'SettingsCommandPacket',",
"    SetTitlePacket = 'SetTitlePacket',",
"    ShowCreditsPacket = 'ShowCreditsPacket',",
"    ShowProfilePacket = 'ShowProfilePacket',",
"    ShowStoreOfferPacket = 'ShowStoreOfferPacket',",
"    SimpleEventPacket = 'SimpleEventPacket',",
"    SimulationTypePacket = 'SimulationTypePacket',",
"    SpawnExperienceOrbPacket = 'SpawnExperienceOrbPacket',",
"    SpawnParticleEffectPacket = 'SpawnParticleEffectPacket',",
"    StartGamePacket = 'StartGamePacket',",
"    StopSoundPacket = 'StopSoundPacket',",
"    StructureBlockUpdatePacket = 'StructureBlockUpdatePacket',",
"    StructureTemplateDataRequestPacket = 'StructureTemplateDataRequestPacket',",
"    StructureTemplateDataResponsePacket = 'StructureTemplateDataResponsePacket',",
"    SubChunkPacket = 'SubChunkPacket',",
"    SubChunkRequestPacket = 'SubChunkRequestPacket',",
"    SubClientLoginPacket = 'SubClientLoginPacket',",
"    SyncActorPropertyPacket = 'SyncActorPropertyPacket',",
"    TakeItemActorPacket = 'TakeItemActorPacket',",
"    TextPacket = 'TextPacket',",
"    TickingAreasLoadStatusPacket = 'TickingAreasLoadStatusPacket',",
"    ToastRequestPacket = 'ToastRequestPacket',",
"    TransferPacket = 'TransferPacket',",
"    TrimDataPacket = 'TrimDataPacket',",
"    UnlockedRecipesPacket = 'UnlockedRecipesPacket',",
"    UpdateAbilitiesPacket = 'UpdateAbilitiesPacket',",
"    UpdateAdventureSettingsPacket = 'UpdateAdventureSettingsPacket',",
"    UpdateAttributesPacket = 'UpdateAttributesPacket',",
"    UpdateBlockPacket = 'UpdateBlockPacket',",
"    UpdateBlockSyncedPacket = 'UpdateBlockSyncedPacket',",
"    UpdateClientInputLocksPacket = 'UpdateClientInputLocksPacket',",
"    UpdateClientOptions = 'UpdateClientOptions',",
"    UpdateEquipPacket = 'UpdateEquipPacket',",
"    UpdatePlayerGameTypePacket = 'UpdatePlayerGameTypePacket',",
"    UpdateSoftEnumPacket = 'UpdateSoftEnumPacket',",
"    UpdateSubChunkBlocksPacket = 'UpdateSubChunkBlocksPacket',",
"    UpdateTradePacket = 'UpdateTradePacket',",
"}",
"/**",
" * @example simpleHttpRequest.ts",
" * ```typescript",
" * import { HttpRequest, HttpHeader, HttpRequestMethod, http } from '@minecraft/server-net';",
" *",
" * async function updateScore() {",
" *     const req = new HttpRequest('http://localhost:3000/updateScore');",
" *",
" *     req.body = JSON.stringify({",
" *         score: 22,",
" *     });",
" *",
" *     req.method = HttpRequestMethod.Post;",
" *     req.headers = [",
" *         new HttpHeader('Content-Type', 'application/json'),",
" *         new HttpHeader('auth', 'my-auth-token'),",
" *     ];",
" *",
" *     await http.request(req);",
" * }",
" * ```",
" */",
"export class HttpClient {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Cancels all pending requests.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    cancelAll(reason: string): void;",
"    /**",
"     * @remarks",
"     * Performs a simple HTTP get request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param uri",
"     * URL to make an HTTP Request to.",
"     * @returns",
"     * An awaitable promise that contains the HTTP response.",
"     */",
"    get(uri: string): Promise<HttpResponse>;",
"    /**",
"     * @remarks",
"     * Performs an HTTP request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     * @param config",
"     * Contains an HTTP Request object with configuration data on",
"     * the HTTP request.",
"     * @returns",
"     * An awaitable promise that contains the HTTP response.",
"     * @example simpleHttpRequest.ts",
"     * ```typescript",
"     * import { HttpRequest, HttpHeader, HttpRequestMethod, http } from '@minecraft/server-net';",
"     *",
"     * async function updateScore() {",
"     *     const req = new HttpRequest('http://localhost:3000/updateScore');",
"     *",
"     *     req.body = JSON.stringify({",
"     *         score: 22,",
"     *     });",
"     *",
"     *     req.method = HttpRequestMethod.Post;",
"     *     req.headers = [",
"     *         new HttpHeader('Content-Type', 'application/json'),",
"     *         new HttpHeader('auth', 'my-auth-token'),",
"     *     ];",
"     *",
"     *     await http.request(req);",
"     * }",
"     * ```",
"     */",
"    request(config: HttpRequest): Promise<HttpResponse>;",
"}",
"/**",
" * Represents an HTTP header - a key/value pair of",
" * meta-information about a request.",
" * @example simpleHttpRequest.ts",
" * ```typescript",
" * import { HttpRequest, HttpHeader, HttpRequestMethod, http } from '@minecraft/server-net';",
" *",
" * async function updateScore() {",
" *     const req = new HttpRequest('http://localhost:3000/updateScore');",
" *",
" *     req.body = JSON.stringify({",
" *         score: 22,",
" *     });",
" *",
" *     req.method = HttpRequestMethod.Post;",
" *     req.headers = [",
" *         new HttpHeader('Content-Type', 'application/json'),",
" *         new HttpHeader('auth', 'my-auth-token'),",
" *     ];",
" *",
" *     await http.request(req);",
" * }",
" * ```",
" */",
"export class HttpHeader {",
"    /**",
"     * @remarks",
"     * Key of the HTTP header.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    key: string;",
"    /**",
"     * @remarks",
"     * Value of the HTTP header.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    value: minecraftserveradmin.SecretString | string;",
"    constructor(key: string, value: minecraftserveradmin.SecretString | string);",
"}",
"/**",
" * Main object for structuring a request.",
" * @example simpleHttpRequest.ts",
" * ```typescript",
" * import { HttpRequest, HttpHeader, HttpRequestMethod, http } from '@minecraft/server-net';",
" *",
" * async function updateScore() {",
" *     const req = new HttpRequest('http://localhost:3000/updateScore');",
" *",
" *     req.body = JSON.stringify({",
" *         score: 22,",
" *     });",
" *",
" *     req.method = HttpRequestMethod.Post;",
" *     req.headers = [",
" *         new HttpHeader('Content-Type', 'application/json'),",
" *         new HttpHeader('auth', 'my-auth-token'),",
" *     ];",
" *",
" *     await http.request(req);",
" * }",
" * ```",
" */",
"export class HttpRequest {",
"    /**",
"     * @remarks",
"     * Content of the body of the HTTP request.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    body: string;",
"    /**",
"     * @remarks",
"     * A collection of HTTP headers to add to the outbound request.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    headers: HttpHeader[];",
"    /**",
"     * @remarks",
"     * HTTP method (e.g., GET or PUT or PATCH) to use for making",
"     * the request.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    method: HttpRequestMethod;",
"    /**",
"     * @remarks",
"     * Amount of time, in seconds, before the request times out and",
"     * is abandoned.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    timeout: number;",
"    /**",
"     * @remarks",
"     * The HTTP resource to access.",
"     *",
"     * This property can be edited in early-execution mode.",
"     *",
"     */",
"    uri: string;",
"    constructor(uri: string);",
"    /**",
"     * @remarks",
"     * Adds an additional header to the overall list of headers",
"     * used in the corresponding HTTP request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    addHeader(key: string, value: minecraftserveradmin.SecretString | string): HttpRequest;",
"    /**",
"     * @remarks",
"     * Updates the content of the body of the HTTP request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    setBody(body: string): HttpRequest;",
"    /**",
"     * @remarks",
"     * Replaces and applies a set of HTTP Headers for the request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    setHeaders(headers: HttpHeader[]): HttpRequest;",
"    /**",
"     * @remarks",
"     * Sets the desired HTTP method (e.g., GET or PUT or PATCH) to",
"     * use for making the request.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    setMethod(method: HttpRequestMethod): HttpRequest;",
"    /**",
"     * @remarks",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    setTimeout(timeout: number): HttpRequest;",
"}",
"/**",
" * Main object that contains result information from a request.",
" */",
"export class HttpResponse {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Body content of the HTTP response.",
"     *",
"     */",
"    readonly body: string;",
"    /**",
"     * @remarks",
"     * A collection of HTTP response headers returned from the",
"     * request.",
"     *",
"     */",
"    readonly headers: HttpHeader[];",
"    /**",
"     * @remarks",
"     * Information that was used to formulate the HTTP response",
"     * that this object represents.",
"     *",
"     */",
"    readonly request: HttpRequest;",
"    /**",
"     * @remarks",
"     * HTTP response code for the request. For example, 404",
"     * represents resource not found, and 500 represents an",
"     * internal server error.",
"     *",
"     */",
"    readonly status: number;",
"}",
"export class NetworkBeforeEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly packetReceive: PacketReceiveBeforeEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly packetSend: PacketSendBeforeEventSignal;",
"}",
"export class PacketReceiveBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PacketReceivedBeforeEvent) => void,",
"        options?: PacketEventOptions,",
"    ): (arg0: PacketReceivedBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PacketReceivedBeforeEvent) => void): void;",
"}",
"/**",
" * Sent as the server receives a network packet from a client.",
" * If cancelled, the server will not parse the network packet",
" * and will silently ignore it.",
" */",
"export class PacketReceivedBeforeEvent {",
"    private constructor();",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The type of network packet.",
"     *",
"     */",
"    readonly packetId: PacketId;",
"    /**",
"     * @remarks",
"     * The size of the network packet in bytes.",
"     *",
"     */",
"    readonly packetSize: number;",
"    /**",
"     * @remarks",
"     * Which client sent the network packet to the game server.",
"     *",
"     */",
"    readonly sender?: minecraftserver.Player;",
"}",
"/**",
" * Sent as the server sends a network packet to clients.  If",
" * cancelled, the server will not send the network packet to",
" * the receiving clients.",
" */",
"export class PacketSendBeforeEvent {",
"    private constructor();",
"    cancel: boolean;",
"    /**",
"     * @remarks",
"     * The type of network packet.",
"     *",
"     */",
"    readonly packetId: PacketId;",
"    /**",
"     * @remarks",
"     * Which clients the network packet is being sent to.",
"     *",
"     */",
"    readonly recipients: (minecraftserver.Player | undefined)[];",
"}",
"export class PacketSendBeforeEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: PacketSendBeforeEvent) => void,",
"        options?: PacketEventOptions,",
"    ): (arg0: PacketSendBeforeEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: PacketSendBeforeEvent) => void): void;",
"}",
"/**",
" * Options for events triggered by network packets.",
" */",
"export interface PacketEventOptions {",
"    /**",
"     * @remarks",
"     * If provided, packet IDs in this list will not trigger the",
"     * event subscriptions.",
"     *",
"     */",
"    ignoredPacketIds?: PacketId[];",
"    /**",
"     * @remarks",
"     * If provided only packet IDs in this list will trigger the",
"     * event subscriptions.",
"     *",
"     */",
"    monitoredPacketIds?: PacketId[];",
"}",
"/**",
" * An error thrown when a platform-level HTTP error occurs.",
" * Information provided in this class may be useful for",
" * diagnostics purposes but will differ from platform to",
" * platform.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InternalHttpRequestError extends Error {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The platform-provided numeric error code for the error.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    code: number;",
"    /**",
"     * @remarks",
"     * The platform-provided message for the error.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    message: string;",
"}",
"/**",
" * An error thrown when a malformed HTTP request is attempted",
" * to be sent.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class MalformedHttpRequestError extends Error {",
"    private constructor();",
"}",
"export const beforeEvents: NetworkBeforeEvents;",
"export const http: HttpClient;",
""]},{"name":"@minecraft/server-editor","content":["// Type definitions for Minecraft Bedrock Edition script APIs",
"// Project: https://docs.microsoft.com/minecraft/creator/",
"// Definitions by: Jake Shirley <https://github.com/JakeShirley>",
"//                 Mike Ammerlaan <https://github.com/mammerla>",
"/* *****************************************************************************",
"   Copyright (c) Microsoft Corporation.",
"   ***************************************************************************** */",
"/**",
" * @beta",
" * @packageDocumentation",
" *",
" * Manifest Details",
" * ```json",
" * {",
" *   'module_name': '@minecraft/server-editor',",
" *   'version': '0.1.0-beta'",
" * }",
" * ```",
" *",
" */",
"import * as minecraftcommon from '@minecraft/common';",
"import * as minecraftserver from '@minecraft/server';",
"/**",
" * The types of actions that are supported. This type",
" * corresponds to the expected arguments passed by the",
" * onExecute handler of an action.",
" */",
"export declare enum ActionTypes {",
"    ContinuousAction = 'ContinuousAction',",
"    MouseRayCastAction = 'MouseRayCastAction',",
"    NoArgsAction = 'NoArgsAction',",
"    StatefulAction = 'StatefulAction',",
"}",
"export enum Axis {",
"    None = 0,",
"    X = 1,",
"    Y = 2,",
"    Z = 4,",
"}",
"export enum BlockMaskListType {",
"    Disabled = 'Disabled',",
"    Mask = 'Mask',",
"    Replace = 'Replace',",
"}",
"export enum BlockPaletteItemType {",
"    Simple = 0,",
"    Probability = 1,",
"}",
"/**",
" * The possible operation types supported by BlockTable",
" * property item.",
" */",
"export declare enum BlockTableOperationType {",
"    Deselect = 'deselect',",
"    Replace = 'replace',",
"}",
"/**",
" * The possible variants of a bool.",
" */",
"export declare enum BoolPropertyItemVariant {",
"    Checkbox = 0,",
"    ToggleSwitch = 1,",
"}",
"/**",
" * The possible variants of a Button property item.",
" */",
"export declare enum ButtonPropertyItemVariant {",
"    Primary = 0,",
"    Secondary = 1,",
"    Confirmation = 2,",
"    Destructive = 3,",
"}",
"/**",
" * The possible variants of a color picker.",
" */",
"export declare enum ColorPickerPropertyItemVariant {",
"    Default = 0,",
"    Inline = 1,",
"    Expanded = 2,",
"}",
"/**",
" * The possible data types supported by ComboBox property item.",
" */",
"export declare enum ComboBoxPropertyItemDataType {",
"    Custom = 0,",
"    Block = 1,",
"    Entity = 2,",
"}",
"export enum ContiguousSelectionType {",
"    SameBlock = 0,",
"    SameBlockAndStates = 1,",
"    SolidBlocks = 2,",
"    AllBlocks = 3,",
"    Custom = 4,",
"}",
"/**",
" * Execution state of the continuous action",
" */",
"export declare enum ContinuousActionState {",
"    Begin = 0,",
"    Repeat = 1,",
"    End = 2,",
"}",
"/**",
" * Predefined action bar items",
" */",
"export declare enum CoreActionBarItemType {",
"    Export = 'editor:actionBarItem:export',",
"    Fill = 'editor:actionBarItem:fill',",
"    Locate = 'editor:actionBarItem:locate',",
"    Playtest = 'editor:actionBarItem:playtest',",
"    Realms = 'editor:actionBarItem:realms',",
"    Redo = 'editor:actionBarItem:redo',",
"    Settings = 'editor:actionBarItem:settings',",
"    Undo = 'editor:actionBarItem:undo',",
"}",
"/**",
" * Core brush shape types",
" */",
"export declare enum CoreBrushShapeType {",
"    Cone = 'editor:brushShape:cone',",
"    Cuboid = 'editor:brushShape:cuboid',",
"    Cylinder = 'editor:brushShape:cylinder',",
"    Ellipsoid = 'editor:brushShape:ellipsoid',",
"    Pyramid = 'editor:brushShape:pyramid',",
"    SingleBlock = 'editor:brushShape:singleBlock',",
"    Star = 'editor:brushShape:star',",
"}",
"/**",
" * Predefined top level menus for core editor",
" */",
"export declare enum CoreMenuType {",
"    Edit = 'editor:menu:edit',",
"    Experimental = 'editor:menu:experimental',",
"    Extensions = 'editor:menu:extensions',",
"    File = 'editor:menu:file',",
"    Help = 'editor:menu:help',",
"    View = 'editor:menu:view',",
"    WorldOptions = 'editor:menu:worldOptions',",
"}",
"/**",
" * An enumeration used by the 3D block cursor {@link Cursor}",
" */",
"export enum CursorControlMode {",
"    /**",
"     * @remarks",
"     * Using Keyboard mode will remove the dependence of the 3D",
"     * block cursor on the player mouse position.  The 3D block",
"     * cursor can be positioned using the keyboard (or the Cursor",
"     * move methods on the cursor object) and the position will not",
"     * be reset if the mouse is moved",
"     *",
"     */",
"    Keyboard = 0,",
"    /**",
"     * @remarks",
"     * The Mouse movement mode will disable keyboard or manual 3D",
"     * block cursor movement and make the 3D block cursor only",
"     * react to player mouse movement",
"     *",
"     */",
"    Mouse = 1,",
"    /**",
"     * @remarks",
"     * This is generally the default move mode for the 3D block",
"     * cursor.",
"     * The 3D block cursor can be positioned using the keyboard (or",
"     * the Cursor move methods on the cursor object) but the",
"     * position will be reset to the block location under the",
"     * players mouse position if any mouse movement is detected.",
"     *",
"     */",
"    KeyboardAndMouse = 2,",
"    /**",
"     * @remarks",
"     * When in fixed mode, the 3D block cursor will remain in a",
"     * fixed position directly in front of the players facing",
"     * direction.  It cannot be moved without moving the player (or",
"     * adjusting the fixed block distance).",
"     * This mode is useful for addressing block locations in the",
"     * air (put the cursor into fixed mode, and fly the player",
"     * until the desired air block is beneath the cursor, at which",
"     * point it is selectable without being clickable)",
"     *",
"     */",
"    Fixed = 3,",
"}",
"/**",
" * Describes how the cursor targets a point on the screen.",
" */",
"export enum CursorTargetMode {",
"    /**",
"     * @remarks",
"     * Target a nearest block.",
"     *",
"     */",
"    Block = 0,",
"    /**",
"     * @remarks",
"     * Targets the face of a nearest block.",
"     *",
"     */",
"    Face = 1,",
"}",
"export enum DaylightCycle {",
"    Normal = 0,",
"    AlwaysDay = 1,",
"    LockTime = 2,",
"}",
"/**",
" * Global editor input contexts",
" */",
"export declare enum EditorInputContext {",
"    GlobalEditor = 'global.editor',",
"    GlobalToolMode = 'global.toolMode',",
"    Viewport = 'local.toolMode.viewport',",
"}",
"/**",
" * Enumeration representing the different modes Editor can be",
" * in.",
" */",
"export enum EditorMode {",
"    /**",
"     * @remarks",
"     * Mode for single-block editing.",
"     *",
"     */",
"    Crosshair = 'Crosshair',",
"    /**",
"     * @remarks",
"     * Mode for multi-block editing UI and tools.",
"     *",
"     */",
"    Tool = 'Tool',",
"}",
"export enum EntityOperationType {",
"    Create = 0,",
"    Delete = 1,",
"}",
"export enum ExportResult {",
"    ValidWorldExport = 0,",
"    LevelFetchFailed = 1,",
"    FileArchiverFetchFailed = 2,",
"    ProjectConverterFetchFailed = 3,",
"    PlayerNotFound = 4,",
"    WorldExportFailed = 5,",
"    WorldExportBusy = 6,",
"    EditorSystemFailure = 7,",
"}",
"export enum GamePublishSetting {",
"    NoMultiPlay = 0,",
"    InviteOnly = 1,",
"    FriendsOnly = 2,",
"    FriendsOfFriends = 3,",
"    Public = 4,",
"}",
"/**",
" * Enumeration representing identifiers for graphics settings",
" * properties.",
" */",
"export enum GraphicsSettingsProperty {",
"    NightVision = 'NightVision',",
"    ShowChunkBoundaries = 'ShowChunkBoundaries',",
"    ShowCompass = 'ShowCompass',",
"    /**",
"     * @remarks",
"     * Manages rendering of invisible blocks (e.g., barrier, light,",
"     * structure_void).",
"     *",
"     */",
"    ShowInvisibleBlocks = 'ShowInvisibleBlocks',",
"}",
"/**",
" * Supported image types.",
" */",
"export declare enum ImageResourceType {",
"    Default = 0,",
"    Block = 1,",
"    Icon = 2,",
"}",
"/**",
" * Input modifier flags to create chorded bindings",
" */",
"export declare enum InputModifier {",
"    Unused = 0,",
"    None = 1,",
"    Alt = 2,",
"    Control = 4,",
"    Shift = 8,",
"    Any = 15,",
"}",
"/**",
" * Keyboard key",
" */",
"export declare enum KeyboardKey {",
"    UNDEFINED = 0,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_BACK_SPACE",
"     *",
"     */",
"    BACKSPACE = 8,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_TAB",
"     *",
"     */",
"    TAB = 9,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_RETURN",
"     *",
"     */",
"    ENTER = 13,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_SHIFT",
"     *",
"     */",
"    SHIFT = 16,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_CONTROL",
"     *",
"     */",
"    CTRL = 17,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_ALT",
"     *",
"     */",
"    ALT = 18,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_CAPS_LOCK",
"     *",
"     */",
"    CAPS_LOCK = 20,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_ESCAPE",
"     *",
"     */",
"    ESCAPE = 27,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_SPACE",
"     *",
"     */",
"    SPACE = 32,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_PAGE_UP",
"     *",
"     */",
"    PAGE_UP = 33,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_PAGE_DOWN",
"     *",
"     */",
"    PAGE_DOWN = 34,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_END",
"     *",
"     */",
"    END = 35,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_HOME",
"     *",
"     */",
"    HOME = 36,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_LEFT",
"     *",
"     */",
"    LEFT = 37,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_UP",
"     *",
"     */",
"    UP = 38,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_RIGHT",
"     *",
"     */",
"    RIGHT = 39,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_DOWN",
"     *",
"     */",
"    DOWN = 40,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_PRINTSCREEN",
"     *",
"     */",
"    PRINT_SCREEN = 44,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_INSERT",
"     *",
"     */",
"    INSERT = 45,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_DELETE",
"     *",
"     */",
"    DELETE = 46,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_0",
"     *",
"     */",
"    KEY_0 = 48,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_1",
"     *",
"     */",
"    KEY_1 = 49,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_2",
"     *",
"     */",
"    KEY_2 = 50,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_3",
"     *",
"     */",
"    KEY_3 = 51,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_4",
"     *",
"     */",
"    KEY_4 = 52,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_5",
"     *",
"     */",
"    KEY_5 = 53,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_6",
"     *",
"     */",
"    KEY_6 = 54,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_7",
"     *",
"     */",
"    KEY_7 = 55,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_8",
"     *",
"     */",
"    KEY_8 = 56,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_9",
"     *",
"     */",
"    KEY_9 = 57,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_A",
"     *",
"     */",
"    KEY_A = 65,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_B",
"     *",
"     */",
"    KEY_B = 66,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_C",
"     *",
"     */",
"    KEY_C = 67,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_D",
"     *",
"     */",
"    KEY_D = 68,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_E",
"     *",
"     */",
"    KEY_E = 69,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F",
"     *",
"     */",
"    KEY_F = 70,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_G",
"     *",
"     */",
"    KEY_G = 71,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_H",
"     *",
"     */",
"    KEY_H = 72,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_I",
"     *",
"     */",
"    KEY_I = 73,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_J",
"     *",
"     */",
"    KEY_J = 74,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_K",
"     *",
"     */",
"    KEY_K = 75,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_L",
"     *",
"     */",
"    KEY_L = 76,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_M",
"     *",
"     */",
"    KEY_M = 77,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_N",
"     *",
"     */",
"    KEY_N = 78,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_O",
"     *",
"     */",
"    KEY_O = 79,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_P",
"     *",
"     */",
"    KEY_P = 80,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_Q",
"     *",
"     */",
"    KEY_Q = 81,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_R",
"     *",
"     */",
"    KEY_R = 82,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_S",
"     *",
"     */",
"    KEY_S = 83,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_T",
"     *",
"     */",
"    KEY_T = 84,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_U",
"     *",
"     */",
"    KEY_U = 85,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_V",
"     *",
"     */",
"    KEY_V = 86,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_W",
"     *",
"     */",
"    KEY_W = 87,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_X",
"     *",
"     */",
"    KEY_X = 88,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_Y",
"     *",
"     */",
"    KEY_Y = 89,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_Z",
"     *",
"     */",
"    KEY_Z = 90,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD0",
"     *",
"     */",
"    NUMPAD_0 = 96,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD1",
"     *",
"     */",
"    NUMPAD_1 = 97,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD2",
"     *",
"     */",
"    NUMPAD_2 = 98,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD3",
"     *",
"     */",
"    NUMPAD_3 = 99,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD4",
"     *",
"     */",
"    NUMPAD_4 = 100,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD5",
"     *",
"     */",
"    NUMPAD_5 = 101,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD6",
"     *",
"     */",
"    NUMPAD_6 = 102,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD7",
"     *",
"     */",
"    NUMPAD_7 = 103,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD8",
"     *",
"     */",
"    NUMPAD_8 = 104,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_NUMPAD9",
"     *",
"     */",
"    NUMPAD_9 = 105,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_MULTIPLY",
"     *",
"     */",
"    NUMPAD_MULTIPLY = 106,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_ADD",
"     *",
"     */",
"    NUMPAD_ADD = 107,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_SEPARATOR",
"     *",
"     */",
"    NUMPAD_SEPARATOR = 108,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_SUBTRACT",
"     *",
"     */",
"    NUMPAD_SUBTRACT = 109,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_DECIMAL",
"     *",
"     */",
"    NUMPAD_DECIMAL = 110,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_DIVIDE",
"     *",
"     */",
"    NUMPAD_DIVIDE = 111,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F1",
"     *",
"     */",
"    F1 = 112,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F2",
"     *",
"     */",
"    F2 = 113,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F3",
"     *",
"     */",
"    F3 = 114,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F4",
"     *",
"     */",
"    F4 = 115,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F5",
"     *",
"     */",
"    F5 = 116,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F6",
"     *",
"     */",
"    F6 = 117,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F7",
"     *",
"     */",
"    F7 = 118,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F8",
"     *",
"     */",
"    F8 = 119,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F9",
"     *",
"     */",
"    F9 = 120,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F10",
"     *",
"     */",
"    F10 = 121,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F11",
"     *",
"     */",
"    F11 = 122,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_F12",
"     *",
"     */",
"    F12 = 123,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_COMMA, ie. ','",
"     *",
"     */",
"    COMMA = 188,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_PERIOD, ie. '.'",
"     *",
"     */",
"    PERIOD = 190,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_SLASH, ie. '/'",
"     *",
"     */",
"    SLASH = 191,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_BACK_QUOTE, ie. '`'",
"     *",
"     */",
"    BACK_QUOTE = 192,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_OPEN_BRACKET, ie. '['",
"     *",
"     */",
"    BRACKET_OPEN = 219,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_BACK_SLASH, ie. '/'",
"     *",
"     */",
"    BACK_SLASH = 220,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_CLOSE_BRACKET, ie. ']'",
"     *",
"     */",
"    BRACKET_CLOSE = 221,",
"    /**",
"     * @remarks",
"     * KeyboardEvent.DOM_VK_BACK_QUOTE, ie. '''",
"     *",
"     */",
"    QUOTE = 222,",
"}",
"/**",
" * Determines how key binding should be processed to fire",
" * actions",
" */",
"export declare enum KeyProcessingState {",
"    /**",
"     * @remarks",
"     * Consume key input event and prevent propagation",
"     *",
"     */",
"    Consume = 0,",
"    /**",
"     * @remarks",
"     * Pass key input event to parent context after processing it",
"     *",
"     */",
"    Passthrough = 1,",
"    /**",
"     * @remarks",
"     * Skip key input event processing",
"     *",
"     */",
"    Disabled = 2,",
"}",
"/**",
" * Alignment options for UI elements",
" */",
"export declare enum LayoutAlignment {",
"    Left = 0,",
"    Center = 1,",
"    Right = 2,",
"}",
"/**",
" * Layout directions for property panes.",
" */",
"export declare enum LayoutDirection {",
"    Vertical = 0,",
"    Horizontal = 1,",
"}",
"/**",
" * Mouse device action categories",
" */",
"export declare enum MouseActionCategory {",
"    /**",
"     * @remarks",
"     * Mouse button was used.",
"     *",
"     */",
"    Button = 1,",
"    /**",
"     * @remarks",
"     * Mouse wheel was used.",
"     *",
"     */",
"    Wheel = 2,",
"    /**",
"     * @remarks",
"     * Mouse was dragged.",
"     *",
"     */",
"    Drag = 3,",
"}",
"/**",
" * Detailed mouse device actions",
" */",
"export declare enum MouseActionType {",
"    LeftButton = 1,",
"    MiddleButton = 2,",
"    RightButton = 3,",
"    Wheel = 4,",
"}",
"/**",
" * Input event information about mouse actions",
" */",
"export declare enum MouseInputType {",
"    ButtonDown = 1,",
"    ButtonUp = 2,",
"    WheelIn = 3,",
"    WheelOut = 4,",
"    DragStart = 5,",
"    Drag = 6,",
"    DragEnd = 7,",
"}",
"/**",
" * The possible variants of a Number property item.",
" */",
"export declare enum NumberPropertyItemVariant {",
"    InputField = 0,",
"    InputFieldAndSlider = 1,",
"}",
"export enum PaintCompletionState {",
"    Success = 0,",
"    Canceled = 1,",
"    Failed = 2,",
"}",
"export enum PaintMode {",
"    BlockPaint = 0,",
"    FreehandSelect = 1,",
"    Smooth = 2,",
"    Roughen = 3,",
"    Flatten = 4,",
"}",
"export enum Plane {",
"    None = 0,",
"    XY = 1,",
"    XZ = 2,",
"    YZ = 4,",
"}",
"export enum PlayerPermissionLevel {",
"    Visitor = 0,",
"    Member = 1,",
"    Operator = 2,",
"    Custom = 3,",
"}",
"export enum PlaytestSessionResult {",
"    OK = 0,",
"    InvalidSessionHandle = 1,",
"    SessionInfoNotFound = 2,",
"    TooManyPlayers = 3,",
"    WorldExportFailed = 4,",
"    WorldExportBusy = 5,",
"    UnsupportedScenario = 6,",
"    EditorSystemFailure = 7,",
"    InvalidLevelId = 8,",
"    PlayerNotFound = 9,",
"    ResponseTimeout = 10,",
"    UnspecifiedError = 11,",
"}",
"export enum PrimitiveType {",
"    Text = 0,",
"    Box = 1,",
"    Line = 2,",
"    Disc = 4,",
"    AxialSphere = 5,",
"}",
"/**",
" * The possible variants of a ProgressIndicator property item.",
" */",
"export declare enum ProgressIndicatorPropertyItemVariant {",
"    Spinner = 0,",
"    ProgressBar = 1,",
"}",
"export enum ProjectExportType {",
"    PlayableWorld = 0,",
"    ProjectBackup = 1,",
"    WorldTemplate = 2,",
"}",
"/**",
" * Type of item that can be added to the property pane",
" */",
"export declare enum PropertyItemType {",
"    BlockList = 'editorUI:BlockList',",
"    BlockTable = 'editorUI:BlockTable',",
"    Boolean = 'editorUI:Boolean',",
"    Button = 'editorUI:Button',",
"    ButtonPane = 'editorUI:ButtonPane',",
"    ColorPicker = 'editorUI:ColorPicker',",
"    ComboBox = 'editorUI:ComboBox',",
"    DataTable = 'editorUI:DataTable',",
"    Divider = 'editorUI:Divider',",
"    Dropdown = 'editorUI:Dropdown',",
"    Image = 'editorUI:Image',",
"    Link = 'editorUI:Link',",
"    Number = 'editorUI:Number',",
"    ProgressIndicator = 'editorUI:ProgressIndicator',",
"    String = 'editorUI:String',",
"    SubPane = 'editorUI:SubPane',",
"    Text = 'editorUI:Text',",
"    ToggleGroup = 'editorUI:ToggleGroup',",
"    Vector3 = 'editorUI:Vector3',",
"}",
"export enum SelectionVolumeEventType {",
"    Set = 1,",
"    Add = 2,",
"    Remove = 3,",
"    Translate = 4,",
"    Move = 5,",
"    Clear = 6,",
"}",
"/**",
" * Define the visibility of the status bar item If the tool",
" * does not have an `ISimpleToolPropertyPane` component, then",
" * this option is ignored",
" */",
"export declare enum SimpleToolStatusBarVisibility {",
"    AlwaysVisible = 0,",
"    VisibleWhenActive = 1,",
"}",
"export enum SpeedSettingsProperty {",
"    FlySpeedMultiplier = 'FlySpeedMultiplier',",
"}",
"export enum SplineType {",
"    Line = 0,",
"    Hermite = 1,",
"}",
"/**",
" * Position for items on the status bar",
" */",
"export declare enum StatusBarAlignment {",
"    Right = 0,",
"    Left = 1,",
"}",
"export enum ThemeSettingsColorKey {",
"    Caret = 'Caret',",
"    Confirm1 = 'Confirm1',",
"    Confirm2 = 'Confirm2',",
"    Confirm3 = 'Confirm3',",
"    ConfirmFill = 'ConfirmFill',",
"    ControlsGeneralFill = 'ControlsGeneralFill',",
"    ControlsGeneralHighlight = 'ControlsGeneralHighlight',",
"    Coordinate1 = 'Coordinate1',",
"    Coordinate2 = 'Coordinate2',",
"    Coordinate3 = 'Coordinate3',",
"    CoordinateControlX = 'CoordinateControlX',",
"    CoordinateControlY = 'CoordinateControlY',",
"    CoordinateControlZ = 'CoordinateControlZ',",
"    CursorVolumeBorder = 'CursorVolumeBorder',",
"    CursorVolumeFill = 'CursorVolumeFill',",
"    Destroy1 = 'Destroy1',",
"    Destroy2 = 'Destroy2',",
"    Destroy3 = 'Destroy3',",
"    DestroyFill = 'DestroyFill',",
"    DisableBackground = 'DisableBackground',",
"    DisableFill = 'DisableFill',",
"    DisableOutline = 'DisableOutline',",
"    DisableText = 'DisableText',",
"    DropDown1 = 'DropDown1',",
"    DropDown2 = 'DropDown2',",
"    DropDown3 = 'DropDown3',",
"    ElementBorder = 'ElementBorder',",
"    Error = 'Error',",
"    FocusErrorOutline = 'FocusErrorOutline',",
"    FocusOutline = 'FocusOutline',",
"    HeaderBackground = 'HeaderBackground',",
"    HotbarOutline = 'HotbarOutline',",
"    Info1 = 'Info1',",
"    Info2 = 'Info2',",
"    Info3 = 'Info3',",
"    InfoFill = 'InfoFill',",
"    PanelBackground = 'PanelBackground',",
"    PanelBorder = 'PanelBorder',",
"    PlacementVolumeBorder = 'PlacementVolumeBorder',",
"    PlacementVolumeFill = 'PlacementVolumeFill',",
"    PrefillVolumeBorder = 'PrefillVolumeBorder',",
"    PrefillVolumeFill = 'PrefillVolumeFill',",
"    PrimaryActive = 'PrimaryActive',",
"    PrimaryBackground1 = 'PrimaryBackground1',",
"    PrimaryBackground2 = 'PrimaryBackground2',",
"    PrimaryBackground3 = 'PrimaryBackground3',",
"    PrimaryBackground4 = 'PrimaryBackground4',",
"    PrimaryDefault = 'PrimaryDefault',",
"    PrimaryDisable = 'PrimaryDisable',",
"    PrimaryMute = 'PrimaryMute',",
"    ScrollBar = 'ScrollBar',",
"    SecondaryActive = 'SecondaryActive',",
"    SecondaryBackground1 = 'SecondaryBackground1',",
"    SecondaryBackground2 = 'SecondaryBackground2',",
"    SecondaryBackground3 = 'SecondaryBackground3',",
"    SecondaryDefault = 'SecondaryDefault',",
"    SecondaryDisable = 'SecondaryDisable',",
"    SecondaryMute = 'SecondaryMute',",
"    SelectionVolumeBorder = 'SelectionVolumeBorder',",
"    SelectionVolumeFill = 'SelectionVolumeFill',",
"    SelectionVolumeOutlineBorder = 'SelectionVolumeOutlineBorder',",
"    SelectionVolumeOutlineFill = 'SelectionVolumeOutlineFill',",
"    TitleBarBackground = 'TitleBarBackground',",
"    ViewportOutline = 'ViewportOutline',",
"    Warning = 'Warning',",
"}",
"export enum WidgetComponentType {",
"    BoundingBox = 'BoundingBox',",
"    Clipboard = 'Clipboard',",
"    Entity = 'Entity',",
"    Gizmo = 'Gizmo',",
"    Guide = 'Guide',",
"    RenderPrim = 'RenderPrim',",
"    Spline = 'Spline',",
"    Text = 'Text',",
"    VolumeOutline = 'VolumeOutline',",
"}",
"export enum WidgetGizmoEventType {",
"    CornerGrabbed = 'CornerGrabbed',",
"    CornerMoved = 'CornerMoved',",
"    CornerReleased = 'CornerReleased',",
"    OriginActivated = 'OriginActivated',",
"    OriginDeactivated = 'OriginDeactivated',",
"    OriginGrabbed = 'OriginGrabbed',",
"    OriginMoved = 'OriginMoved',",
"    OriginReleased = 'OriginReleased',",
"}",
"export enum WidgetGroupSelectionMode {",
"    Multiple = 'Multiple',",
"    None = 'None',",
"    Single = 'Single',",
"}",
"export enum WidgetMouseButtonActionType {",
"    Pressed = 0,",
"    Released = 1,",
"    Drag = 2,",
"}",
"/**",
" * Full set of all possible raw actions",
" */",
"export type Action = NoArgsAction | MouseRayCastAction | StatefulAction | ContinuousAction;",
"/**",
" * All actions have a unique identifier. Identifiers are",
" * globally unique and often GUIDs",
" */",
"export type ActionID = {",
"    id: string;",
"};",
"/**",
" * Callback type when an extension instance is activated for a",
" * given player. It is expected to return an array of",
" * disposables that will automatically be cleaned up on",
" * shutdown.",
" */",
"export type ActivationFunctionType<PerPlayerStorageType> = (",
"    uiSession: IPlayerUISession<PerPlayerStorageType>,",
") => IDisposable[];",
"/**",
" * All possible button item action types",
" */",
"export type ButtonPropertyItemSupportedActionTypes = (() => void) | RegisteredAction<NoArgsAction>;",
"/**",
" * An action that continues to execute after activation",
" */",
"export type ContinuousAction = {",
"    readonly actionType: ActionTypes.ContinuousAction;",
"    readonly onExecute: (state: ContinuousActionState, repeatCount: number) => void;",
"    repeatDelay?: number;",
"    repeatInterval?: number;",
"};",
"/**",
" * A generic handler for an event sink.",
" */",
"export declare type EventHandler<T> = (eventArg: T) => void;",
"/**",
" * Defines type information for graphics settings properties.",
" */",
"export type GraphicsSettingsPropertyTypeMap = {",
"    [GraphicsSettingsProperty.ShowInvisibleBlocks]?: boolean;",
"    [GraphicsSettingsProperty.ShowChunkBoundaries]?: boolean;",
"    [GraphicsSettingsProperty.ShowCompass]?: boolean;",
"    [GraphicsSettingsProperty.NightVision]?: boolean;",
"};",
"/**",
" * Animation properties for a horizontally laid out sprite",
" * sheet image",
" */",
"export declare type ImageAnimationData = {",
"    frames: number;",
"    duration?: number;",
"    delay?: number;",
"};",
"export declare type ImageResourceData = {",
"    path: string;",
"    type: ImageResourceType;",
"};",
"/**",
" * Type that can be an observable or a value.",
" */",
"export type IObservableProp<T> = IObservable<T> | T;",
"/**",
" * The IPlayerUISession represents the editor user interface",
" * for a given player and given extension. Extensions",
" * registered with Minecraft are instantiated for each player",
" * which joins a server, and this interface provides the set of",
" * functionality needed to create and modify the editor UI for",
" * that player. The associated Editor Context for this session",
" * object is also player specific. From a given",
" * IPlayerUISession object, there is no way to interact with",
" * the UI of another player, that must be done from global",
" * extension scope registration and/or data sharing independent",
" * of the UI object.",
" */",
"export type IPlayerUISession<PerPlayerStorage = Record<string, never>> = {",
"    createPropertyPane(options: IRootPropertyPaneOptions): IRootPropertyPane;",
"    readonly actionManager: ActionManager;",
"    readonly inputManager: IGlobalInputManager;",
"    readonly menuBar: IMenuContainer;",
"    readonly actionBar: IActionBar;",
"    readonly statusBar: IStatusBar;",
"    readonly toolRail: IModalToolContainer;",
"    readonly log: IPlayerLogger;",
"    readonly extensionContext: ExtensionContext;",
"    readonly builtInUIManager: BuiltInUIManager;",
"    readonly eventSubscriptionCache: BedrockEventSubscriptionCache;",
"    scratchStorage: PerPlayerStorage | undefined;",
"};",
"/**",
" * Keyboard binding properties.",
" */",
"export type KeyBinding = {",
"    key: KeyboardKey;",
"    modifier?: InputModifier;",
"};",
"/**",
" * Additional information about key binding.",
" */",
"export type KeyBindingInfo = {",
"    uniqueId: string;",
"    label?: string;",
"    tooltip?: string;",
"};",
"/**",
" * Represents a localized string or an object with a localized",
" * string and optional properties",
" */",
"export declare type LocalizedString =",
"    | string",
"    | {",
"          id: string;",
"          props?: string[];",
"      };",
"/**",
" * Modal tool lifecycle event payload",
" */",
"export type ModalToolLifecycleEventPayload = {",
"    isActiveTool: boolean;",
"};",
"/**",
" * Input modifier states for mouse actions",
" */",
"export declare type MouseModifiers = {",
"    alt: boolean;",
"    ctrl: boolean;",
"    shift: boolean;",
"};",
"/**",
" * Mouse properties that provide additional information from",
" * client event handling",
" */",
"export declare type MouseProps = {",
"    mouseAction: MouseActionType;",
"    modifiers: MouseModifiers;",
"    inputType: MouseInputType;",
"};",
"/**",
" * An action which returns the ray corresponding to a vector",
" * from the users mouse click in the viewport.",
" */",
"export type MouseRayCastAction = {",
"    readonly actionType: ActionTypes.MouseRayCastAction;",
"    readonly onExecute: (mouseRay: Ray, mouseProps: MouseProps) => void;",
"};",
"/**",
" * An action which needs no additional client side arguments on",
" * execute",
" */",
"export type NoArgsAction = {",
"    readonly actionType: ActionTypes.NoArgsAction;",
"    readonly onExecute: () => void;",
"};",
"export type PropertyBag = Record<string, unknown>;",
"/**",
" * Callback to execute when a visibility of a property pane is",
" * updated.",
" */",
"export type PropertyPaneVisibilityUpdate = {",
"    isVisible: boolean;",
"};",
"/**",
" * Ray representing a direction from a set location. This",
" * location typically corresponds to the location of a mouse",
" * click performed on the client.",
" */",
"export type Ray = {",
"    location: minecraftserver.Vector3;",
"    direction: minecraftserver.Vector3;",
"    cursorBlockLocation: minecraftserver.Vector3;",
"    rayHit: boolean;",
"};",
"/**",
" * A registered action is an action that has been registered",
" * with the action manager system and has a unique ID",
" * representing the action now. An action must be registered",
" * before it can be used in other systems.",
" */",
"export type RegisteredAction<T extends Action> = T & ActionID;",
"/**",
" * Callback type when an extension instance is shutdown for a",
" * given player. Used for performing any final work or clean up",
" * that can't be handled automatically via Disposables.",
" */",
"export type ShutdownFunctionType<PerPlayerStorageType> = (uiSession: IPlayerUISession<PerPlayerStorageType>) => void;",
"export type SpeedSettingsPropertyTypeMap = {",
"    [SpeedSettingsProperty.FlySpeedMultiplier]?: number;",
"};",
"/**",
" * An action which returns the activation state.",
" */",
"export type StatefulAction = {",
"    readonly actionType: ActionTypes.StatefulAction;",
"    readonly onExecute: (active: boolean) => void;",
"};",
"/**",
" * Full set of all possible keyboard actions",
" */",
"export type SupportedKeyboardActionTypes =",
"    | RegisteredAction<NoArgsAction>",
"    | RegisteredAction<StatefulAction>",
"    | RegisteredAction<ContinuousAction>;",
"/**",
" * Full set of all possible mouse actions",
" */",
"export type SupportedMouseActionTypes = RegisteredAction<MouseRayCastAction>;",
"/**",
" * Content properties to display interactive tooltips",
" */",
"export declare type TooltipInteractiveContent = {",
"    title?: LocalizedString;",
"    description?: TooltipInteractiveContentDescription[];",
"};",
"/**",
" * Possible tooltip description items",
" */",
"export declare type TooltipInteractiveContentDescription = LocalizedString | TooltipLink;",
"/**",
" * Tooltip link description",
" */",
"export declare type TooltipLink = {",
"    text: LocalizedString;",
"    link: string;",
"};",
"export type UnregisterInputBindingCallback = () => void;",
"/**",
" * A cache for bedrock event subscriptions. Stores off a",
" * subscription by event key, and upon teardown unregisters all",
" * subscriptions.",
" */",
"export declare class BedrockEventSubscriptionCache {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `BedrockEventSubscriptionCache` class",
"     *",
"     */",
"    constructor(mEvents: minecraftserver.WorldAfterEvents);",
"    /**",
"     * @remarks",
"     * Subcribes to a bedrock event using the key of the desired",
"     * event. When subscribed, the event handler is both returned,",
"     * but also cached internally for unsubscription. This means",
"     * the caller of the subscription does not need to worry about",
"     * unsubscription since the cache will automatically",
"     * unsubscribe handlers on overall teardown.",
"     *",
"     * @param event",
"     * The event on the bedrock APIs to which to subscribe",
"     * @param params",
"     * The parameters to the subscription method for the event.",
"     * Auto complete will display this for you",
"     */",
"    subscribeToBedrockEvent<T extends keyof minecraftserver.WorldAfterEvents>(",
"        event: T,",
"        ...params: Parameters<minecraftserver.WorldAfterEvents[T]['subscribe']>",
"    ): ReturnType<minecraftserver.WorldAfterEvents[T]['subscribe']>;",
"    /**",
"     * @remarks",
"     * Cleans up the set of internal registrations and",
"     * subscriptions.",
"     *",
"     */",
"    teardown(): void;",
"}",
"/**",
" * Validates observable objects that support string list as",
" * BlockType",
" */",
"export declare class BlockIdentifierListObservableValidator implements ObservableValidator<string[]> {",
"    validate(newValue: string[]): string[];",
"}",
"/**",
" * Validates observable objects that support string as",
" * BlockType",
" */",
"export declare class BlockIdentifierObservableValidator implements ObservableValidator<string> {",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _defaultValue: string;",
"    get defaultValue(): string;",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `BlockIdentifierObservableValidator` class",
"     *",
"     */",
"    constructor(defaultName: string);",
"    validate(newValue: string): string;",
"}",
"export class BlockPalette {",
"    /**",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     */",
"    getItem(index: number): IBlockPaletteItem;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     */",
"    removeItemAt(index: number): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    removeItems(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link minecraftcommon.ArgumentOutOfBoundsError}",
"     */",
"    setItem(blockPaletteItem: IBlockPaletteItem, index: number): void;",
"}",
"export class BlockPaletteManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    addOrReplacePalette(paletteId: string, palette: BlockPalette): void;",
"    getPalette(paletteId: string): BlockPalette | undefined;",
"    getPaletteIdList(): string[];",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    getPaletteItem(paletteId: string, index: number): IBlockPaletteItem;",
"    getPrimaryPalette(): BlockPalette;",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    getSelectedBlockType(): minecraftserver.BlockType;",
"    getSelectedItem(): IBlockPaletteItem;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    removePalette(paletteId: string): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setPaletteItem(paletteId: string, index: number, item: IBlockPaletteItem): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setPrimaryPalette(paletteId: string): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setSelectedItem(item: IBlockPaletteItem): void;",
"}",
"export class BlockUtilities {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    fillVolume(",
"        volume: minecraftserver.BlockVolumeBase | minecraftserver.CompoundBlockVolume | RelativeVolumeListBlockVolume,",
"        block?: minecraftserver.BlockPermutation | minecraftserver.BlockType | string,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getContiguousSelection(properties?: ContiguousSelectionProperties): minecraftserver.CompoundBlockVolume;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getDimensionLocationBoundingBox(): minecraftserver.BlockBoundingBox;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getDimensionMaxLocation(): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getDimensionMinLocation(): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getFacePreviewSelection(properties?: QuickExtrudeProperties): minecraftserver.ListBlockVolume;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    isLocationInsideCurrentDimensionBounds(",
"        locationOrVolumeOrBounds:",
"            | minecraftserver.BlockBoundingBox",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    quickExtrude(properties?: QuickExtrudeProperties): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    shrinkWrapVolume(",
"        volume: minecraftserver.BlockVolumeBase | RelativeVolumeListBlockVolume,",
"    ): RelativeVolumeListBlockVolume;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    trimVolumeToFitContents(",
"        volume: minecraftserver.BlockVolumeBase | RelativeVolumeListBlockVolume,",
"        retainMarqueeAfterTrimming: boolean,",
"        ignoreLiquid: boolean,",
"        ignoreNoCollision: boolean,",
"        blockMask?: BlockMaskList,",
"    ): RelativeVolumeListBlockVolume;",
"}",
"/**",
" * Base for creating new brush shapes",
" */",
"export declare abstract class BrushShape {",
"    get displayName(): string;",
"    get icon(): string;",
"    get id(): string;",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `BrushShape` class",
"     *",
"     */",
"    constructor(_id: string, _displayName: string, _icon: string);",
"    abstract createSettingsPane(",
"        parentPane: IPropertyPane,",
"        onSettingsChange?: () => void,",
"    ): ISubPanePropertyItem | undefined;",
"    abstract createShape(): RelativeVolumeListBlockVolume;",
"}",
"export class BrushShapeManager {",
"    private constructor();",
"    readonly activeBrushVolume?: RelativeVolumeListBlockVolume;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    activateBrushTool(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    beginPainting(onComplete: (arg0: PaintCompletionState) => void): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    deactivateBrushTool(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    endPainting(cancelled: boolean): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getBrushShapeOffset(): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setBrushMask(mask: BlockMaskList): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setBrushShape(shape: minecraftserver.Vector3[] | RelativeVolumeListBlockVolume): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setBrushShapeOffset(offset: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setBrushShapeVisible(visible: boolean): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setFlattenHeight(flattenHeight: number): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setFlattenRadius(flattenRadius: number): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    setTerrainStrength(terrainStrength: number): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    singlePaint(onComplete: (arg0: PaintCompletionState) => void): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    switchBrushPaintMode(paintMode: PaintMode): void;",
"}",
"export class ClipboardChangeAfterEvent {",
"    private constructor();",
"    readonly isPrimary: boolean;",
"    readonly itemId: string;",
"}",
"export class ClipboardChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ClipboardChangeAfterEvent) => void): (arg0: ClipboardChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ClipboardChangeAfterEvent) => void): void;",
"}",
"/**",
" * A ClipboardItem is a handle to an object which represents a",
" * set of blocks in a contained bounding area (most likely",
" * copied from the world)",
" */",
"export class ClipboardItem {",
"    private constructor();",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Return whether there is any block content in the item",
"     *",
"     */",
"    readonly isEmpty: boolean;",
"    readonly size: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Clear the contents of the item",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    clear(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getPredictedWriteVolume(",
"        location: minecraftserver.Vector3,",
"        options?: ClipboardWriteOptions,",
"    ): RelativeVolumeListBlockVolume;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    readFromStructure(structure: EditorStructure): void;",
"    /**",
"     * @remarks",
"     * Copy the contents of a rectangular volume into the Clipboard",
"     * Item",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    readFromWorld(source: minecraftserver.BlockVolumeBase | RelativeVolumeListBlockVolume): void;",
"    /**",
"     * @remarks",
"     * Apply the contents of a ClipboardItem to the world at a",
"     * given location using a set of write options",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param location",
"     * The root point of the world location to which the",
"     * ClipboardItem is written (this is modified by the various",
"     * anchor, offset and rotation parameters of the {@link",
"     * ClipboardWriteOptions}",
"     * @param options",
"     * An optional set of write parameters which modify the",
"     * properties of the ClipboardItem as it is applied to the",
"     * world",
"     * @returns",
"     * Success or Failure",
"     * @throws This function can throw errors.",
"     */",
"    writeToWorld(location: minecraftserver.Vector3, options?: ClipboardWriteOptions): boolean;",
"}",
"/**",
" * The ClipboardManager (accessible from the {@link",
" * ExtensionContext}) is responsible for the management of all",
" * {@link ClipboardItem} objects, and provides the user the",
" * ability to create new {@link ClipboardItem} objects for use",
" * within an extension.",
" *",
" */",
"export class ClipboardManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The primary {@link ClipboardItem} object is always present",
"     * (even if it's empty) and cannot be deleted.  This object",
"     * represents the main ClipboardItem object which is always",
"     * accessible through the UI for cut/paste operations",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly clipboard: ClipboardItem;",
"    /**",
"     * @remarks",
"     * Create a new  {@link ClipboardItem} object",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    create(): ClipboardItem;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class ConeBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `ConeBrushShape` class",
"     *",
"     */",
"    constructor(settings?: { uniform?: boolean; radius?: number; width?: number; height?: number; depth?: number });",
"    createSettingsPane(parentPane: IPropertyPane, onSettingsChange?: () => void): ISubPanePropertyItem;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class CuboidBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `CuboidBrushShape` class",
"     *",
"     */",
"    constructor(settings?: {",
"        uniform?: boolean;",
"        length?: number;",
"        width?: number;",
"        height?: number;",
"        depth?: number;",
"        minLength?: number;",
"    });",
"    createSettingsPane(parentPane: IPropertyPane, onSettingsChange?: () => void): ISubPanePropertyItem;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"export class CurrentThemeChangeAfterEvent {",
"    private constructor();",
"    readonly id: string;",
"}",
"export class CurrentThemeChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: CurrentThemeChangeAfterEvent) => void): (arg0: CurrentThemeChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: CurrentThemeChangeAfterEvent) => void): void;",
"}",
"export class CurrentThemeColorChangeAfterEvent {",
"    private constructor();",
"    readonly color: minecraftserver.RGBA;",
"    readonly colorKey: string;",
"}",
"export class CurrentThemeColorChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: CurrentThemeColorChangeAfterEvent) => void,",
"    ): (arg0: CurrentThemeColorChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: CurrentThemeColorChangeAfterEvent) => void): void;",
"}",
"/**",
" * The 3D block cursor is controlled through this read only",
" * object and provides the Editor some control over the input",
" * methods, display properties and positioning of the 3D block",
" * cursor within the world.",
" * The 3D block cursor is a native object which is constantly",
" * calculating a screen/mouse -> world raycast, and recording",
" * the resultant block collision position and facing direction.",
" * Depending on the properties of the cursor state, this is not",
" * always true – the cursor can also be manually manipulated by",
" * keyboard input and moved around independently of mouse",
" * movement; when the mouse is moved, the block cursor will",
" * return to the mouse/world ray intersection point.",
" * The cursor can also be set to either block or face mode;",
" * block mode represents the block the mouse is pointing at,",
" * and face mode represents the adjacent block that the mouse",
" * is pointing at (i.e. the block attached to the face of the",
" * intersection point).",
" * In practical use, each tool when activated grabs the current",
" * cursor state object and stores it.  The active tool then",
" * sets the current state to represent the functionality of the",
" * tool (color, input mode, etc).  When the tool loses focus,",
" * it restores the cursor state using the stored state object",
" * that was grabbed during activation.",
" * The 3D block cursor can also be used to query the current",
" * block at which the mouse is pointing (or the current block",
" * to which the cursor has been manually moved by the user)",
" */",
"export class Cursor {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The face at of the block beneath the 3D block cursor which",
"     * is intersected by the mouse raycast",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly faceDirection: number;",
"    /**",
"     * @remarks",
"     * Query whether or not the 3D block cursor is visible or",
"     * hidden",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly isVisible: boolean;",
"    /**",
"     * @remarks",
"     * Get the world position of the 3D block cursor",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getPosition(): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Get a property object which represents the current",
"     * properties of the 3D block cursor.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getProperties(): CursorProperties;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getRay(): CursorRay;",
"    /**",
"     * @remarks",
"     * Hide the 3D block cursor from view until the corresponding",
"     * {@link Cursor.show} function is called",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    hide(): void;",
"    /**",
"     * @remarks",
"     * Manually offset the 3D block cursor by given amount.",
"     * Depending on the {@link CursorProperties.controlMode} - this",
"     * function may have no effect",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param offset",
"     * Amount by which the 3D block cursor should be moved",
"     * @returns",
"     * Return the newly modified position (or previous position if",
"     * movement was restricted)",
"     * @throws This function can throw errors.",
"     */",
"    moveBy(offset: minecraftserver.Vector3): minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * Reset the 3D block cursor to the system default state",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    resetToDefaultState(): void;",
"    /**",
"     * @remarks",
"     * Set the 3D block cursor properties to a given state",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param properties",
"     * A set of optional parameters within a property state which",
"     * represent the intended 3D block cursor state",
"     * @throws This function can throw errors.",
"     */",
"    setProperties(properties: CursorProperties): void;",
"    /**",
"     * @remarks",
"     * Make the 3D block cursor visible on screen",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    show(): void;",
"}",
"export class CursorPropertiesChangeAfterEvent {",
"    private constructor();",
"    readonly position?: CursorPosition;",
"    readonly properties: CursorProperties;",
"}",
"export class CursorPropertyChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(",
"        callback: (arg0: CursorPropertiesChangeAfterEvent) => void,",
"    ): (arg0: CursorPropertiesChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: CursorPropertiesChangeAfterEvent) => void): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class CylinderBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `CylinderBrushShape` class",
"     *",
"     */",
"    constructor(settings?: {",
"        uniform?: boolean;",
"        radius?: number;",
"        width?: number;",
"        height?: number;",
"        depth?: number;",
"        minRadius?: number;",
"    });",
"    createSettingsPane(parentPane: IPropertyPane, onSettingsChange?: () => void): ISubPanePropertyItem;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"export class EditorConstants {",
"    private constructor();",
"    readonly maxSelectionSize: minecraftserver.Vector3;",
"    readonly maxStructureOffset: minecraftserver.Vector3;",
"    readonly minStructureOffset: minecraftserver.Vector3;",
"}",
"export class EditorStructureManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    createFromClipboardItem(item: ClipboardItem, structureName: string): EditorStructure;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getExistingTags(): string[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    loadStructure(location: string, id: string): EditorStructure;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    saveStructure(structure: EditorStructure): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    searchStructures(options?: EditorStructureSearchOptions): EditorStructure[];",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class EllipsoidBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `EllipsoidBrushShape` class",
"     *",
"     */",
"    constructor(settings?: {",
"        uniform?: boolean;",
"        radius?: number;",
"        width?: number;",
"        height?: number;",
"        depth?: number;",
"        minRadius?: number;",
"    });",
"    createSettingsPane(parentPane: IPropertyPane, onSettingsChange?: () => void): ISubPanePropertyItem;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"/**",
" * Validates observable objects that support string as",
" * EntityType",
" */",
"export declare class EntityIdentifierObservableValidator implements ObservableValidator<string> {",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _defaultValue: string;",
"    get defaultValue(): string;",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `EntityIdentifierObservableValidator` class",
"     *",
"     */",
"    constructor(defaultValue: string);",
"    validate(newValue: string): string;",
"}",
"export class ExportManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    beginExportProject(options: GameOptions): Promise<ExportResult>;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    canExportProject(): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getGameOptions(useDefault?: boolean): GameOptions;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getGameVersion(): string;",
"}",
"/**",
" * Editor Extensions are the basis for all player specific,",
" * editor specific functionality within the game.  Almost all",
" * editor functionality is exported and available within the",
" * context of an {@link ExtensionContext}",
" * When the script manager initializes during level loading,",
" * the scripts are loaded from the behavior packs and executed.",
" * As part of the global execution context, the scripts are",
" * free to register any number of extensions.",
" * An Editor Extension is defined a name, an activation",
" * function and a shutdown function.",
" *",
" * It is not recommended to directly use this function as the",
" * contract is not guaranteed to be stable, instead prefer",
" * {@link registerEditorExtension} as it provides additional",
" * functionality and a stable contract.",
" */",
"export class Extension {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Default identifier for tool rail grouping. All modal tools",
"     * created from the extension will use this.",
"     *",
"     */",
"    readonly defaultToolGroupId: string;",
"    /**",
"     * @remarks",
"     * Description specified during registration for the extension.",
"     *",
"     */",
"    readonly description: string;",
"    /**",
"     * @remarks",
"     * Name of the extension.",
"     *",
"     */",
"    readonly name: string;",
"    /**",
"     * @remarks",
"     * Notes specified during registration for the extension.",
"     *",
"     */",
"    readonly notes: string;",
"}",
"/**",
" * The extension context is a native (C++) object created for",
" * each registered Editor Extension, when a player connection",
" * is established with the server.",
" * A registered extension activation or deactivation closure is",
" * accompanied by an [ExtensionContext] object, which provides",
" * a player specific, editor extension specific context.",
" * The Extension Context is the main interface to all the bound",
" * Editor Services.",
" * As more player services are added to the editor, they will",
" * be exposed through this object",
" */",
"export class ExtensionContext {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Contains a set of events that are applicable to the editor",
"     * player.  Event callbacks are called in a deferred manner.",
"     * Event callbacks are executed in read-write mode.",
"     *",
"     */",
"    readonly afterEvents: ExtensionContextAfterEvents;",
"    readonly blockPalette: BlockPaletteManager;",
"    readonly blockUtilities: BlockUtilities;",
"    readonly brushShapeManager: BrushShapeManager;",
"    /**",
"     * @remarks",
"     * This is used to access the players Clipboard Manager and the",
"     * main interface through which the player can create, modify",
"     * and apply clipboard items",
"     *",
"     */",
"    readonly clipboardManager: ClipboardManager;",
"    /**",
"     * @remarks",
"     * This is used to access the players 3D block cursor and it's",
"     * properties",
"     *",
"     */",
"    readonly cursor: Cursor;",
"    readonly exportManager: ExportManager;",
"    /**",
"     * @remarks",
"     * Contains information about the registered extension",
"     * instance.",
"     *",
"     */",
"    readonly extensionInfo: Extension;",
"    /**",
"     * @remarks",
"     * The current player which is the subject of the extension",
"     * invocation",
"     *",
"     */",
"    readonly player: minecraftserver.Player;",
"    readonly playtest: PlaytestManager;",
"    /**",
"     * @remarks",
"     * The instance of the players Selection Manager and the main",
"     * interface through which the player can create/modify",
"     * selections",
"     *",
"     */",
"    readonly selectionManager: SelectionManager;",
"    /**",
"     * @remarks",
"     * The instance of the players Settings Manager and the",
"     * contract through which the settings for the player can be",
"     * modified.",
"     *",
"     */",
"    readonly settings: SettingsManager;",
"    readonly structureManager: EditorStructureManager;",
"    /**",
"     * @remarks",
"     * The instance of the players Transaction Manager and the main",
"     * interface through which the creator can create transaction",
"     * records, and undo/redo previous transactions",
"     *",
"     */",
"    readonly transactionManager: TransactionManager;",
"    readonly widgetManager: WidgetManager;",
"}",
"/**",
" * Contains a set of events that are available across the scope",
" * of the ExtensionContext.",
" */",
"export class ExtensionContextAfterEvents {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly clipboardChange: ClipboardChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly currentThemeChange: CurrentThemeChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly currentThemeColorChange: CurrentThemeColorChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly cursorPropertyChange: CursorPropertyChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This event triggers when the editor mode changes for the",
"     * player.",
"     *",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly modeChange: ModeChangeAfterEventSignal;",
"    /**",
"     * @remarks",
"     * This property can be read in early-execution mode.",
"     *",
"     */",
"    readonly SelectionChange: SelectionChangeAfterEventSignal;",
"}",
"/**",
" * Settings category that manages {@link",
" * GraphicsSettingsProperty} configurations.",
" */",
"export class GraphicsSettings {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Retrieves a graphics settings property value.",
"     *",
"     * @param property",
"     * Property identifier.",
"     * @returns",
"     * Returns the property value if it is found. If the property",
"     * is not available, it returns undefined.",
"     */",
"    get<T extends keyof GraphicsSettingsPropertyTypeMap>(property: T): GraphicsSettingsPropertyTypeMap[T] | undefined;",
"    /**",
"     * @remarks",
"     * Retrieves all graphics settings properties and their values.",
"     *",
"     * @returns",
"     * Returns a property value map for all available properties.",
"     */",
"    getAll(): GraphicsSettingsPropertyTypeMap;",
"    /**",
"     * @remarks",
"     * Modifies a graphics settings property value.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param property",
"     * Property identifier.",
"     * @param value",
"     * New property value.",
"     * @throws This function can throw errors.",
"     */",
"    set<T extends keyof GraphicsSettingsPropertyTypeMap>(property: T, value: GraphicsSettingsPropertyTypeMap[T]): void;",
"    /**",
"     * @remarks",
"     * Modify multiple graphics settings properties.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param properties",
"     * Property map to set available property values. If the",
"     * property is not defined in the map, it will not be modified.",
"     * @throws This function can throw errors.",
"     */",
"    setAll(properties: GraphicsSettingsPropertyTypeMap): void;",
"}",
"export class IBlockPaletteItem {",
"    private constructor();",
"    getBlock(): minecraftserver.BlockType | undefined;",
"    getDisplayName(): string | undefined;",
"    getType(): BlockPaletteItemType;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setBlock(block: minecraftserver.BlockPermutation | minecraftserver.BlockType | string): void;",
"}",
"/**",
" * The logger class is a utility class which allows editor",
" * extensions to communicate with the player from the server to",
" * the client log window.",
" * The logger class presents 4 different output channels which",
" * can be used to send information to the client/player,",
" * depending on the context of the information.",
" */",
"export class Logger {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * A `debug` output channel generally used during the",
"     * development process of editor extensions.  This channel",
"     * defaults to `hidden` in the log window (unless explicitly",
"     * enabled).",
"     * Once your editor extension development process is complete,",
"     * and you're ready to ship/share your extension - we generally",
"     * recommend that you remove any references to this log channel",
"     * to avoid a noisy experience for other users",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param message",
"     * The message string to send to the log window",
"     * @throws This function can throw errors.",
"     */",
"    debug(message: string, properties?: LogProperties): void;",
"    /**",
"     * @remarks",
"     * The error channel is generally used when the editor",
"     * extension experiences an error (either a program error in",
"     * executing logic unexpectedly, or an error in the input or",
"     * output to/from a player).  Use this channel sparingly - it's",
"     * meant to communicate important problems to the player",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param message",
"     * The message string to send to the log window",
"     * @throws This function can throw errors.",
"     */",
"    error(message: string, properties?: LogProperties): void;",
"    /**",
"     * @remarks",
"     * The info channel is intended to communicate general,",
"     * non-fatal or non-erroneous information to the player that",
"     * can generally be safely ignored if they choose to do so.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param message",
"     * The message string to send to the log window",
"     * @throws This function can throw errors.",
"     */",
"    info(message: string, properties?: LogProperties): void;",
"    /**",
"     * @remarks",
"     * The warning channel is intended to inform the user of",
"     * 'potential' issues (missing inputs, values out of range,",
"     * things that cannot be found) but are not fatal and execution",
"     * can still be completed.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param message",
"     * The message string to send to the log window",
"     * @throws This function can throw errors.",
"     */",
"    warning(message: string, properties?: LogProperties): void;",
"}",
"/**",
" * The MinecraftEditor class is a namespace container for",
" * Editor functionality which does not have any player context.",
" */",
"export class MinecraftEditor {",
"    private constructor();",
"    readonly constants: EditorConstants;",
"    /**",
"     * @remarks",
"     * A global instance of the log output class object.  This is",
"     * not contextualized to any particular player, and any",
"     * messages sent to this instance will be broadcast to all",
"     * connected editor client sessions",
"     *",
"     * @throws This property can throw when used.",
"     */",
"    readonly log: Logger;",
"    /**",
"     * @remarks",
"     * Allows querying and modifying some properties of the",
"     * simulation.",
"     *",
"     */",
"    readonly simulation: SimulationState;",
"}",
"/**",
" * Contains information related to changes in player editor",
" * mode.",
" */",
"export class ModeChangeAfterEvent {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * The editor mode that the player is changed to.",
"     *",
"     */",
"    readonly mode: EditorMode;",
"}",
"/**",
" * Manages callbacks that are connected to when a player editor",
" * mode changes.",
" */",
"export class ModeChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Subscribes the specified callback to an editor mode change",
"     * after event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: ModeChangeAfterEvent) => void): (arg0: ModeChangeAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * Removes the specified callback from an editor mode change",
"     * after event.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: ModeChangeAfterEvent) => void): void;",
"}",
"/**",
" * Validates min/max limits of observable objects that support",
" * number",
" */",
"export declare class NumberLimitObservableValidator implements ObservableValidator<number> {",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _isInteger?: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _max?: number;",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _min?: number;",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `NumberLimitObservableValidator` class",
"     *",
"     */",
"    constructor(min: number | undefined, max: number | undefined, isInteger?: boolean);",
"    updateLimits(min: number | undefined, max: number | undefined): void;",
"    validate(newValue: number): number;",
"}",
"/**",
" * Used for validating an observable value before it gets set",
" */",
"export declare abstract class ObservableValidator<T> {",
"    abstract validate(newValue: T): T | undefined;",
"}",
"export class PlaytestManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    beginPlaytest(options: GameOptions): Promise<PlaytestSessionResult>;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getPlaytestSessionAvailability(): PlaytestSessionResult;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class ProbabilityBlockPaletteItem extends IBlockPaletteItem {",
"    constructor(displayName?: string);",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addBlock(block: minecraftserver.BlockPermutation | minecraftserver.BlockType | string, weight: number): void;",
"    getBlocks(): WeightedBlock[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    removeBlockAt(index: number): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class PyramidBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `PyramidBrushShape` class",
"     *",
"     */",
"    constructor(settings?: { uniform?: boolean; width?: number; height?: number; depth?: number });",
"    createSettingsPane(parentPane: IPropertyPane, onSettingsChange?: () => void): ISubPanePropertyItem;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class RelativeVolumeListBlockVolume extends minecraftserver.BlockVolumeBase {",
"    readonly isEmpty: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    origin?: minecraftserver.Vector3;",
"    readonly volumeCount: number;",
"    constructor(origin?: minecraftserver.Vector3);",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    add(",
"        toAdd:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    clear(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    getVolumeList(): minecraftserver.BlockVolume[];",
"    hasAdjacent(location: minecraftserver.Vector3, normalizedOffset: minecraftserver.Vector3): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    moveTo(location: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    remove(",
"        toRemove:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    set(",
"        toSet:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    translate(offset: minecraftserver.Vector3): void;",
"}",
"export class SelectionChangeAfterEventSignal {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    subscribe(callback: (arg0: SelectionEventAfterEvent) => void): (arg0: SelectionEventAfterEvent) => void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * This function can be called in early-execution mode.",
"     *",
"     */",
"    unsubscribe(callback: (arg0: SelectionEventAfterEvent) => void): void;",
"}",
"export class SelectionContainerBase {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class SelectionContainerEntity extends SelectionContainerBase {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class SelectionContainerVolume extends SelectionContainerBase {",
"    private constructor();",
"    readonly isEmpty: boolean;",
"    readonly volumeCount: number;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    add(",
"        volume:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    clear(): void;",
"    get(): RelativeVolumeListBlockVolume;",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    getBoundingBox(): minecraftserver.BlockBoundingBox;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    moveTo(location: minecraftserver.Vector3): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    remove(",
"        volume:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    set(",
"        volume:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    translate(offset: minecraftserver.Vector3): void;",
"}",
"export class SelectionContainerVolumeEvent {",
"    private constructor();",
"    readonly 'type': SelectionVolumeEventType;",
"}",
"export class SelectionEventAfterEvent {",
"    private constructor();",
"    readonly volumeEventData?: SelectionContainerVolumeEvent;",
"}",
"/**",
" * The SelectionManager (accessible from the {@link",
" * ExtensionContext}) is responsible for the management of all",
" * {@link @minecraft/server-editor.Selection} objects, and",
" * provides the user the ability to create new {@link",
" * @minecraft/server-editor.Selection} objects for use within",
" * an extension.",
" */",
"export class SelectionManager {",
"    private constructor();",
"    readonly entity: SelectionContainerEntity;",
"    readonly volume: SelectionContainerVolume;",
"}",
"/**",
" * The SettingsManager (accessible from the {@link",
" * ExtensionContext}) is responsible for the management all",
" * player settings.",
" */",
"export class SettingsManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Manages graphics settings properties.",
"     *",
"     */",
"    readonly graphics: GraphicsSettings;",
"    readonly speed: SpeedSettings;",
"    readonly theme: ThemeSettings;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class SimpleBlockPaletteItem extends IBlockPaletteItem {",
"    constructor(displayName?: string);",
"}",
"/**",
" * A simple class wrapper to inherit in your tool which",
" * contains the initialization and storage of the simple tool",
" * component utility. See one of the `Simple` samples to see",
" * how to use this class and the wrapper framework",
" */",
"export declare class SimpleToolWrapper implements IDisposable {",
"    /**",
"     * @remarks",
"     * The player UI session that the tool is running in Use this",
"     * to access the player UI session, or any of the session's",
"     * components",
"     *",
"     */",
"    get session(): IPlayerUISession;",
"    /**",
"     * @remarks",
"     * The simple tool instance that is created and managed by the",
"     * wrapper Use this to access any of the tools components, or",
"     * mess with the tools window visibility",
"     *",
"     */",
"    get simpleTool(): ISimpleTool;",
"    /**",
"     * @remarks",
"     * Setup the simple tool instance with the given options This",
"     * will create and initialize the simple tool instance",
"     *",
"     */",
"    setupSimpleTool(session: IPlayerUISession, options: ISimpleToolOptions): void;",
"    /**",
"     * @remarks",
"     * Teardown the simple tool instance This will call the",
"     * teardown function on the simple tool instance This function",
"     * is automatically invoked by the Editor Extension system when",
"     * the editor is shutting down",
"     *",
"     */",
"    teardown(): void;",
"}",
"/**",
" * Responsible for querying and modifying various properties of",
" * the simulation.",
" */",
"export class SimulationState {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * Returns `true` if mob simulation is paused.",
"     *",
"     */",
"    isPaused(): boolean;",
"    /**",
"     * @remarks",
"     * Sets the state of mob simulation.  If set to `true`, mobs",
"     * are paused.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setPaused(isPaused: boolean): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export declare class SingleBlockBrushShape extends BrushShape {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the `SingleBlockBrushShape`",
"     * class",
"     *",
"     */",
"    constructor();",
"    createSettingsPane(): undefined;",
"    createShape(): RelativeVolumeListBlockVolume;",
"}",
"export class SpeedSettings {",
"    private constructor();",
"    get<T extends keyof SpeedSettingsPropertyTypeMap>(property: T): SpeedSettingsPropertyTypeMap[T] | undefined;",
"    getAll(): SpeedSettingsPropertyTypeMap;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    set<T extends keyof SpeedSettingsPropertyTypeMap>(property: T, value: SpeedSettingsPropertyTypeMap[T]): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setAll(properties: SpeedSettingsPropertyTypeMap): void;",
"}",
"export class ThemeSettings {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addNewTheme(id: string, name?: string, sourceThemeId?: string): void;",
"    canThemeBeModified(id: string): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    deleteTheme(id: string): void;",
"    getCurrentTheme(): string;",
"    getThemeColors(id: string): Record<string, minecraftserver.RGBA> | undefined;",
"    getThemeIdList(): string[];",
"    /**",
"     * @throws This function can throw errors.",
"     */",
"    getThemeName(id: string): string;",
"    resolveColorKey(key: ThemeSettingsColorKey): minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setCurrentTheme(id: string): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    setThemeName(id: string, name: string): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    updateThemeColor(id: string, key: ThemeSettingsColorKey, newColor: minecraftserver.RGBA): void;",
"}",
"/**",
" * The Transaction Manager is responsible for tracking and",
" * managing all of the registered transaction operations which",
" * represent creator changes in the world.",
" * Transaction Manager is the basis of the UNDO and REDO",
" * operations, and allows a creator to store the changes made",
" * to the world and the state of the world BEFORE those changes",
" * were applied, making it possible to UNDO those changes and",
" * restore the world state.",
" * The transactions are stored as a stack, and can be undone in",
" * stack order to restore the world to it's original state",
" */",
"export class TransactionManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addEntityOperation(entity: minecraftserver.Entity, type: EntityOperationType): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addUserDefinedOperation(",
"        transactionHandlerId: UserDefinedTransactionHandlerId,",
"        operationData: string,",
"        operationName?: string,",
"    ): void;",
"    /**",
"     * @remarks",
"     * Commit all of the transaction operations currently attached",
"     * to the open transaction record to the manager.  These will",
"     * be added as a single transaction manager entry.",
"     * The open record will be closed and all tracking operations",
"     * will cease.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    commitOpenTransaction(): boolean;",
"    /**",
"     * @remarks",
"     * This function will commit the pending changes caused by any",
"     * of the track changes variants.  The changes will be",
"     * committed to the currently open transaction, but the",
"     * transaction will remain open for further records.",
"     * Pending block changes from tracking operations will be added",
"     * to the transaction record before submission to the",
"     * transaction manager",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns the number of change requests that were being",
"     * tracked",
"     * @throws This function can throw errors.",
"     */",
"    commitTrackedChanges(): number;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    createUserDefinedTransactionHandler(",
"        undoClosure: (arg0: string) => void,",
"        redoClosure: (arg0: string) => void,",
"    ): UserDefinedTransactionHandlerId;",
"    /**",
"     * @remarks",
"     * Discard the currently open transaction without committing it",
"     * to the transaction manager stack.",
"     * All records within the transaction will be discarded, and",
"     * any tracking requests currently active will be stopped",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    discardOpenTransaction(): boolean;",
"    /**",
"     * @remarks",
"     * Discard any pending tracked changes.  This does not affect",
"     * the current open transaction contents, only the pending",
"     * tracked block operations",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @returns",
"     * Returns the number of change requests that were discarded",
"     * @throws This function can throw errors.",
"     */",
"    discardTrackedChanges(): number;",
"    /**",
"     * @remarks",
"     * Open a transaction record which will be a container for any",
"     * number of transaction operations.",
"     * All transaction operations within a record are grouped and",
"     * treated as a single atomic unit",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param name",
"     * Give the transaction record a name",
"     * @throws This function can throw errors.",
"     */",
"    openTransaction(name: string): boolean;",
"    /**",
"     * @remarks",
"     * Perform an redo operation.  This will take the last",
"     * transaction record on the redo stack and store the current",
"     * world state and then apply the changes in the record.  This",
"     * will reduce the redo record stack by one.",
"     *",
"     * The transaction record affected by this operation will be",
"     * transferred to the undo stack in case the creator decides to",
"     * undo it",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    redo(): void;",
"    /**",
"     * @remarks",
"     * Return the number of transaction records on the redo stack.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    redoSize(): number;",
"    /**",
"     * @remarks",
"     * Begin tracking block changes in a specified area.  These",
"     * will be added to a pending changes list.",
"     * The pending list will be added to the open transaction",
"     * record when a commit has been issued.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param from",
"     * Min block location of a bounding area",
"     * @param to",
"     * Max block location of a bounding area",
"     * @throws This function can throw errors.",
"     */",
"    trackBlockChangeArea(from: minecraftserver.Vector3, to: minecraftserver.Vector3): boolean;",
"    /**",
"     * @remarks",
"     * Begin tracking block changes in a list of specified block",
"     * locations.",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @param locations",
"     * An array of block locations to monitor for changes",
"     * @throws This function can throw errors.",
"     */",
"    trackBlockChangeList(locations: minecraftserver.Vector3[]): boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    trackBlockChangeVolume(blockVolume: minecraftserver.BlockVolumeBase): boolean;",
"    /**",
"     * @remarks",
"     * Perform an undo operation.  This will take the last",
"     * transaction record on the stack and apply the stored world",
"     * state from before the changes were made.  This will reduce",
"     * the record stack by one.",
"     *",
"     * The transaction record affected by this operation will be",
"     * transferred to the redo stack in case the creator decides to",
"     * reapply it",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    undo(): void;",
"    /**",
"     * @remarks",
"     * Return how many transactions records currently exist on the",
"     * stack",
"     *",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    undoSize(): number;",
"}",
"/**",
" * A strongly typed transaction handle to enforce type safety",
" * when adding user defined transactions.<br> This transaction",
" * handle becomes the context for adding the transaction to the",
" * transaction manager.<br> You can obtain one of these handles",
" * by calling {@link registerUserDefinedTransactionHandler}",
" */",
"export declare class UserDefinedTransactionHandle<T> {",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `UserDefinedTransactionHandle` class",
"     *",
"     */",
"    constructor(nativeHandle: UserDefinedTransactionHandlerId, transactionManager: TransactionManager);",
"    /**",
"     * @remarks",
"     * Add a user defined transaction operation to the transaction",
"     * manager with a payload of the specified type. This allows",
"     * the extension to open a transaction, and insert custom data",
"     * objects into the transaction log which are stored until an",
"     * undo or redo event occurs. The payload data added here is",
"     * stored and then passed to the undo/redo handlers (registered",
"     * with {@link registerUserDefinedTransactionHandler}) when an",
"     * undo/redo event is requested. NOTE:<br> Transactions can",
"     * contain multiple operations - you can open a transaction and",
"     * add any (reasonable) number of operations to it (of the same",
"     * or differing types) before committing to the transaction",
"     * log. NOTE/WARNING:<br> The payload data is serialized to",
"     * JSON before being inserted into the transaction log and the",
"     * underlying implementation uses the JSON.stringify() function",
"     * to serialize the data. Any non-primitive data, such as",
"     * classes or minecraft native objects will not serialize to",
"     * JSON properly, so you should avoid using them as payload",
"     * data.",
"     *",
"     * @param payload",
"     * The data object to be inserted into the transaction log.",
"     * @param transactionName",
"     * A string name that will be associated with this operation",
"     */",
"    addUserDefinedOperation(payload: T, transactionName: string): void;",
"}",
"export class UserDefinedTransactionHandlerId {",
"    private constructor();",
"}",
"/**",
" * Validates min/max limits of observable objects that support",
" * Vector3",
" */",
"export declare class Vector3LimitObservableValidator implements ObservableValidator<minecraftserver.Vector3> {",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _isInteger?: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _max: Partial<minecraftserver.Vector3>;",
"    /**",
"     * @remarks",
"     * This property can't be used in read-only mode.",
"     *",
"     */",
"    protected _min: Partial<minecraftserver.Vector3>;",
"    /**",
"     * @remarks",
"     * Constructs a new instance of the",
"     * `Vector3LimitObservableValidator` class",
"     *",
"     */",
"    constructor(min: Partial<minecraftserver.Vector3>, max: Partial<minecraftserver.Vector3>, isInteger?: boolean);",
"    updateLimits(min: Partial<minecraftserver.Vector3>, max: Partial<minecraftserver.Vector3>): void;",
"    validate(newValue: minecraftserver.Vector3): minecraftserver.Vector3;",
"}",
"export class Widget {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    bindPositionToBlockCursor: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    collisionOffset: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    collisionRadius: number;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    readonly group: WidgetGroup;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    location: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    lockPositionToSurface: boolean;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    readonly selectable: boolean;",
"    selected: boolean;",
"    showBoundingBox: boolean;",
"    showCollisionRadius: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    snapToBlockLocation: boolean;",
"    visible: boolean;",
"    readonly widgetName: string;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addBoundingBox(",
"        componentName: string,",
"        size: minecraftserver.Vector3,",
"        options?: WidgetComponentBoundingBoxOptions,",
"    ): WidgetComponentBoundingBox;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addClipboardComponent(",
"        componentName: string,",
"        clipboardItem?: ClipboardItem,",
"        options?: WidgetComponentClipboardOptions,",
"    ): WidgetComponentClipboard;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addEntityComponent(",
"        componentName: string,",
"        actorNameId: string,",
"        options?: WidgetComponentEntityOptions,",
"    ): WidgetComponentEntity;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addGizmoComponent(componentName: string, options?: WidgetComponentGizmoOptions): WidgetComponentGizmo;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addGuideComponent(componentName: string, options?: WidgetComponentGuideOptions): WidgetComponentGuide;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addRenderPrimitiveComponent(",
"        componentName: string,",
"        primitiveType:",
"            | WidgetComponentRenderPrimitiveTypeAxialSphere",
"            | WidgetComponentRenderPrimitiveTypeBox",
"            | WidgetComponentRenderPrimitiveTypeDisc",
"            | WidgetComponentRenderPrimitiveTypeLine,",
"        options?: WidgetComponentRenderPrimitiveOptions,",
"    ): WidgetComponentRenderPrimitive;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addSplineComponent(componentName: string, options?: WidgetComponentSplineOptions): WidgetComponentSpline;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addTextComponent(componentName: string, label: string, options?: WidgetComponentTextOptions): WidgetComponentText;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    addVolumeOutline(",
"        componentName: string,",
"        volume?: minecraftserver.BlockVolumeBase | RelativeVolumeListBlockVolume,",
"        options?: WidgetComponentVolumeOutlineOptions,",
"    ): WidgetComponentVolumeOutline;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    delete(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    deleteComponent(componentOrName: string | WidgetComponentBase): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getComponent(componentName: string): WidgetComponentBase;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    getComponents(): WidgetComponentBase[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    setStateChangeEvent(eventFunction?: (arg0: WidgetStateChangeEventData) => void): void;",
"}",
"export class WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly componentType: WidgetComponentType;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly location: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    lockToSurface: boolean;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly name: string;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    offset: minecraftserver.Vector3;",
"    readonly valid: boolean;",
"    visible: boolean;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly widget: Widget;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    delete(): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentBoundingBox extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    boundsOffset: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    enableResizeHandles: Axis;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    hullColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    mirror: minecraftserver.StructureMirrorAxis;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    normalizedOrigin: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    outlineColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    rotation: minecraftserver.StructureRotation;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showWorldIntersections: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    size: minecraftserver.Vector3;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly transformedWorldVolume: minecraftserver.BlockVolume;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    visibleHull: boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    deactivateHandles(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    setStateChangeEvent(eventFunction?: (arg0: WidgetComponentBoundingBoxStateChangeEventParameters) => void): void;",
"}",
"export class WidgetComponentBoundingBoxStateChangeEventParameters {",
"    private constructor();",
"    readonly boundsOffset?: minecraftserver.Vector3;",
"    readonly boundsSize?: minecraftserver.Vector3;",
"    readonly component: WidgetComponentBoundingBox;",
"    readonly eventType: WidgetGizmoEventType;",
"    readonly widget: Widget;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentClipboard extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    clipboardOffset: minecraftserver.Vector3;",
"    highlightHullColor: minecraftserver.RGBA;",
"    highlightOutlineColor: minecraftserver.RGBA;",
"    hullColor: minecraftserver.RGBA;",
"    mirror: minecraftserver.StructureMirrorAxis;",
"    normalizedOrigin: minecraftserver.Vector3;",
"    outlineColor: minecraftserver.RGBA;",
"    rotation: minecraftserver.StructureRotation;",
"    showOutline: boolean;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentEntity extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    clickable: boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    playAnimation(animationName: string): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentGizmo extends WidgetComponentBase {",
"    private constructor();",
"    activated: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    enabledAxes: Axis;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    normalizedOffsetOverride?: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    setStateChangeEvent(eventFunction?: (arg0: WidgetComponentGizmoStateChangeEventParameters) => void): void;",
"}",
"export class WidgetComponentGizmoStateChangeEventParameters {",
"    private constructor();",
"    readonly component: WidgetComponentGizmo;",
"    readonly eventType?: WidgetGizmoEventType;",
"    readonly widget: Widget;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentGuide extends WidgetComponentBase {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentRenderPrimitive extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    readonly primitiveType: PrimitiveType;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    setPrimitive(",
"        primitive:",
"            | WidgetComponentRenderPrimitiveTypeAxialSphere",
"            | WidgetComponentRenderPrimitiveTypeBox",
"            | WidgetComponentRenderPrimitiveTypeDisc",
"            | WidgetComponentRenderPrimitiveTypeLine,",
"    ): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentRenderPrimitiveTypeAxialSphere extends WidgetComponentRenderPrimitiveTypeBase {",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    center: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    color?: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    radius: number;",
"    constructor(center: minecraftserver.Vector3, radius: number, color?: minecraftserver.RGBA);",
"}",
"export class WidgetComponentRenderPrimitiveTypeBase {",
"    private constructor();",
"    readonly primitiveType: PrimitiveType;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentRenderPrimitiveTypeBox extends WidgetComponentRenderPrimitiveTypeBase {",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    center: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    color: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    size?: minecraftserver.Vector3;",
"    constructor(center: minecraftserver.Vector3, color: minecraftserver.RGBA, size?: minecraftserver.Vector3);",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentRenderPrimitiveTypeDisc extends WidgetComponentRenderPrimitiveTypeBase {",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    center: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    color: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    radius: number;",
"    constructor(center: minecraftserver.Vector3, radius: number, color: minecraftserver.RGBA);",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentRenderPrimitiveTypeLine extends WidgetComponentRenderPrimitiveTypeBase {",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    color: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    end: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    start: minecraftserver.Vector3;",
"    constructor(start: minecraftserver.Vector3, end: minecraftserver.Vector3, color: minecraftserver.RGBA);",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentSpline extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    splineType: SplineType;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link Error}",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    getControlPoints(): Widget[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    getInterpolatedPoints(maxPointsPerControlSegment?: number): minecraftserver.Vector3[];",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     *",
"     * {@link InvalidWidgetError}",
"     */",
"    setControlPoints(widgetList: Widget[]): void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentText extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    color: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    label: string;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class WidgetComponentVolumeOutline extends WidgetComponentBase {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    highlightHullColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    highlightOutlineColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    hullColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    mirror: minecraftserver.StructureMirrorAxis;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    normalizedOrigin: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    outlineColor: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    rotation: minecraftserver.StructureRotation;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showHighlightOutline: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    showOutline: boolean;",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    readonly transformedWorldVolume: minecraftserver.BlockVolume;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    volumeOffset: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    getVolume(): RelativeVolumeListBlockVolume | undefined;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetComponentError}",
"     */",
"    setVolume(",
"        volumeToSet?:",
"            | minecraftserver.Vector3[]",
"            | minecraftserver.BlockVolume",
"            | minecraftserver.BlockVolumeBase",
"            | RelativeVolumeListBlockVolume",
"            | minecraftserver.Vector3,",
"    ): void;",
"}",
"export class WidgetGroup {",
"    private constructor();",
"    /**",
"     * @throws This property can throw when used.",
"     *",
"     * {@link InvalidWidgetGroupError}",
"     */",
"    readonly selectedWidgetCount: number;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    visible: boolean;",
"    /**",
"     * @remarks",
"     * This property can't be edited in read-only mode.",
"     *",
"     */",
"    visibleBounds: boolean;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    createWidget(location: minecraftserver.Vector3, options?: WidgetCreateOptions): Widget;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     */",
"    delete(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    deleteWidget(widgetToDelete: Widget): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetGroupError}",
"     */",
"    deselectAllWidgets(): void;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     *",
"     * {@link InvalidWidgetGroupError}",
"     */",
"    selectAllWidgets(): void;",
"}",
"export class WidgetManager {",
"    private constructor();",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    createGroup(options?: WidgetGroupCreateOptions): WidgetGroup;",
"    /**",
"     * @remarks",
"     * This function can't be called in read-only mode.",
"     *",
"     * @throws This function can throw errors.",
"     */",
"    deleteGroup(groupToDelete: WidgetGroup): void;",
"}",
"export class WidgetMouseButtonEventData {",
"    private constructor();",
"    readonly action: WidgetMouseButtonActionType;",
"    readonly altPressed: boolean;",
"    readonly controlPressed: boolean;",
"    readonly shiftPressed: boolean;",
"}",
"export class WidgetStateChangeEventData {",
"    private constructor();",
"    readonly group: WidgetGroup;",
"    readonly location?: minecraftserver.Vector3;",
"    readonly mouseEvent?: WidgetMouseButtonEventData;",
"    readonly selected?: boolean;",
"    readonly visible?: boolean;",
"    readonly widget: Widget;",
"}",
"/**",
" * Binds actions to the client and manages their lifetime.",
" * Action managers are managed on a per player basis since",
" * client side UI is per player.",
" */",
"export interface ActionManager {",
"    /**",
"     * @remarks",
"     * Creates an action and registers it on the client",
"     *",
"     * @param rawAction",
"     * The raw action to create. See ActionTypes for supported",
"     * parameters",
"     */",
"    createAction<T extends Action>(rawAction: T): RegisteredAction<T>;",
"}",
"export interface BlockMaskList {",
"    blockList: (minecraftserver.BlockPermutation | minecraftserver.BlockType | string)[];",
"    maskType: BlockMaskListType;",
"}",
"/**",
" * Represents a UI session for a given player",
" */",
"export interface BuiltInUIManager {",
"    /**",
"     * @remarks",
"     * Activates tutorial overlay",
"     *",
"     */",
"    activateTutorial(): void;",
"    /**",
"     * @remarks",
"     * Navigates to the documentation site.",
"     *",
"     */",
"    navigateToDocumentation(): void;",
"    /**",
"     * @remarks",
"     * Navigates to the feedback site",
"     *",
"     */",
"    navigateToFeedback(): void;",
"    /**",
"     * @remarks",
"     * Navigates to the pause screen",
"     *",
"     */",
"    navigateToPauseScreen(): void;",
"    /**",
"     * @remarks",
"     * Updates the visibility of the log panel",
"     *",
"     */",
"    updateLogPanelVisibility(visibility: boolean): void;",
"    /**",
"     * @remarks",
"     * Updates the visibility of the control demo",
"     *",
"     */",
"    updateUISettingsPanelVisibility(visibility: boolean): void;",
"    /**",
"     * @remarks",
"     * Updates the visibility of the welcome panel",
"     *",
"     */",
"    updateWelcomePanelVisibility(visibility: boolean): void;",
"}",
"/**",
" * Interface used to specify the options when a clipboard item",
" * is being written to the world",
" */",
"export interface ClipboardWriteOptions {",
"    /**",
"     * @remarks",
"     * An enum which represents the axis (or combination of axis')",
"     * along which the item should be mirrored",
"     * - X",
"     * - Z",
"     * - XZ",
"     *",
"     */",
"    mirror?: minecraftserver.StructureMirrorAxis;",
"    normalizedOrigin?: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * A position offset which should be applied to the paste",
"     * location while the clipboard item is being written",
"     *",
"     */",
"    offset?: minecraftserver.Vector3;",
"    /**",
"     * @remarks",
"     * An enum representing the rotation around the Y-Axis which",
"     * should be applied while the clipboard item is being written",
"     *",
"     */",
"    rotation?: minecraftserver.StructureRotation;",
"}",
"export interface ContiguousSelectionProperties {",
"    checkForAdjacentFace?: boolean;",
"    contiguousSelectionBlockList?: string[];",
"    contiguousSelectionType?: ContiguousSelectionType;",
"    fullSelectionToleranceLevel?: number;",
"    isFace?: boolean;",
"    selectionDirection?: number;",
"    size?: number;",
"    startingLocation?: minecraftserver.Vector3;",
"}",
"export interface CursorPosition {",
"    FaceDirection: number;",
"    Position: minecraftserver.Vector3;",
"}",
"/**",
" * The CursorProperties interface is used to describe the",
" * properties of the Editor 3D block cursor construct.",
" * The 3D block cursor can be queried to retrieve the current",
" * properties, and the same property class can be used to set",
" * the current properties of the cursor.",
" * This interface is generally used at the activation stage of",
" * the active tool to set up the color, visibility and input",
" * properties of the 3D block cursor",
" */",
"export interface CursorProperties {",
"    /**",
"     * @remarks",
"     * Enum representing the cursor control mode",
"     * - Fixed Mode locks the cursor to a position which is <X>",
"     * blocks offset from the current player position. The cursor",
"     * is camera relative, so it will always appear <X> blocks",
"     * ahead of the players feet",
"     * - Keyboard Mode puts the cursor under direct control of the",
"     * API, and ignores any mouse input.  The cursor can only be",
"     * moved around using the moveBy method",
"     * - KeyboardAndMouse mode puts the cursor under a shared",
"     * control of onMouseMove and keyboard input.  Any mouse",
"     * movement events will set the cursor to the position of the",
"     * mouse/world raycast.  This can be modified using the moveBy",
"     * method, but any subsequent mouse events will reset the",
"     * position back to where the raycast intersection occurs",
"     * - Mouse mode puts the cursor under control of mouse move",
"     * events, and moveBy method will be ignored",
"     *",
"     *",
"     */",
"    controlMode?: CursorControlMode;",
"    fillColor?: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * The fixed distance from the players feet at which the cursor",
"     * is attached, relative to camera direction.",
"     * This is only used when [controlMode] is set to `Fixed`",
"     *",
"     */",
"    fixedModeDistance?: number;",
"    /**",
"     * @remarks",
"     * A [Color] Property representing the color of the block",
"     * cursor object outline",
"     *",
"     */",
"    outlineColor?: minecraftserver.RGBA;",
"    projectThroughLiquid?: boolean;",
"    /**",
"     * @remarks",
"     * An enum representing the cursor target mode",
"     * - Block Mode records the block position of the mouse/world",
"     * raycast intersection",
"     * - Face Mode records the block position of the block adjacent",
"     * to the mouse/world raycast intersection, according to the",
"     * face of the collision point of the selected block",
"     *",
"     */",
"    targetMode?: CursorTargetMode;",
"    /**",
"     * @remarks",
"     * Boolean flag controlling the visibility of the 3D block",
"     * cursor",
"     *",
"     */",
"    visible?: boolean;",
"}",
"export interface CursorRay {",
"    end: minecraftserver.Vector3;",
"    hit: boolean;",
"    start: minecraftserver.Vector3;",
"}",
"export interface EditorStructure {",
"    storageLocation: string;",
"    structure: minecraftserver.Structure;",
"    tags: string[];",
"}",
"export interface EditorStructureSearchOptions {",
"    excludeTags?: string[];",
"    idPattern?: string;",
"    includeLocation?: string[];",
"    includeTags?: string[];",
"}",
"/**",
" *  An event that can be subscribed to. You can use the token,",
" * returned from the subscribe method, to clean up handlers.",
" */",
"export declare interface EventSink<T> {",
"    /**",
"     * @remarks",
"     * Subscribes an event handler to a particular subscription.",
"     *",
"     * @param handler",
"     * Handler function to subscribe with.",
"     * @returns",
"     * An event handler subscription token that can be used to",
"     * unsubscribe and clean-up handlers.",
"     */",
"    subscribe(handler: EventHandler<T>): IEventToken;",
"}",
"/**",
" * An interface which defines the set of optional parameters",
" * which can be used when calling the `registerEditorExtension`",
" * function",
" */",
"export interface ExtensionOptionalParameters {",
"    /**",
"     * @remarks",
"     * An optional text description of the extension being",
"     * registered.",
"     * This can be a straight textual description or a string",
"     * identifier key for a localized string in the extension's",
"     * resource pack text files.",
"     * The description is meant to be a very short snappy one-liner",
"     * which quickly and uniquely identifies the extension",
"     * The length of the string is capped to 256 characters",
"     *",
"     */",
"    description?: string;",
"    /**",
"     * @remarks",
"     * Optional notes for the extension being registered.",
"     * This can be a straight textual description or a string",
"     * identifier key for a localized string in the extension's",
"     * resource pack text files.",
"     * The notes section is meant to convey more detailed",
"     * information and notes (e.g. a link to the author's website)",
"     * The length of this string is capped to 1024 characters",
"     *",
"     */",
"    notes?: string;",
"    /**",
"     * @remarks",
"     * An optional custom identifier that will be used for all",
"     * Modal Tools created from the registered extension.",
"     * The length of the string is capped to 256 characters",
"     *",
"     */",
"    toolGroupId?: string;",
"}",
"export interface GameOptions {",
"    bedsWork?: boolean;",
"    bonusChest?: boolean;",
"    cheats?: boolean;",
"    commandBlockEnabled?: boolean;",
"    commandBlockOutput?: boolean;",
"    daylightCycle?: DaylightCycle;",
"    difficulty?: minecraftserver.Difficulty;",
"    dimensionId?: string;",
"    disableWeather?: boolean;",
"    drowningDamage?: boolean;",
"    educationEdition?: boolean;",
"    entitiesDropLoot?: boolean;",
"    exportType?: ProjectExportType;",
"    fallDamage?: boolean;",
"    fireDamage?: boolean;",
"    fireSpreads?: boolean;",
"    freezeDamage?: boolean;",
"    friendlyFire?: boolean;",
"    functionCommandLimit?: number;",
"    gameMode?: minecraftserver.GameMode;",
"    hardcore?: boolean;",
"    immediateRespawn?: boolean;",
"    insomnia?: boolean;",
"    keepInventory?: boolean;",
"    lanVisibility?: boolean;",
"    limitedCrafting?: boolean;",
"    maxCommandChainLength?: number;",
"    mobGriefing?: boolean;",
"    mobLoot?: boolean;",
"    mobSpawning?: boolean;",
"    multiplayerGame?: boolean;",
"    naturalRegeneration?: boolean;",
"    playerAccess?: GamePublishSetting;",
"    playerPermissions?: PlayerPermissionLevel;",
"    randomTickSpeed?: number;",
"    recipeUnlocking?: boolean;",
"    respawnBlocksExplode?: boolean;",
"    respawnRadius?: number;",
"    sendCommandFeedback?: boolean;",
"    showBorderEffect?: boolean;",
"    showCoordinates?: boolean;",
"    showDaysPlayed?: boolean;",
"    showDeathMessage?: boolean;",
"    showItemTags?: boolean;",
"    simulationDistance?: number;",
"    sleepSkipPercent?: number;",
"    spawnPosition?: minecraftserver.Vector3;",
"    startingMap?: boolean;",
"    tileDrops?: boolean;",
"    timeOfDay?: number;",
"    tntExplodes?: boolean;",
"    weather?: number;",
"    worldName?: string;",
"}",
"/**",
" * Manager for IActionBarItem objects.",
" */",
"export interface IActionBar {",
"    /**",
"     * @remarks",
"     * Add a new action bar item to the collection.",
"     *",
"     * @param id",
"     * Unique item identifier.",
"     * @param action",
"     * Action to be invoked.",
"     * @param props",
"     * Configuration for the item to create.",
"     */",
"    registerItem(",
"        id: string,",
"        action: RegisteredAction<NoArgsAction>,",
"        props: IActionBarItemCreationParams,",
"    ): IActionBarItem;",
"    /**",
"     * @remarks",
"     * Remove an action item from the collection.",
"     *",
"     * @param id",
"     * Unique item identifier.",
"     */",
"    unregisterItem(id: string): void;",
"}",
"/**",
" * Registered item handle in the Action Bar collection.",
" */",
"export interface IActionBarItem {",
"    /**",
"     * @remarks",
"     * Returns the current enabled state of the item.",
"     *",
"     */",
"    getEnabled: () => boolean;",
"    /**",
"     * @remarks",
"     * Unique identifier of the item.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Text label of the item.",
"     *",
"     */",
"    readonly label: string;",
"    /**",
"     * @remarks",
"     * Modify enabled state of the item.",
"     *",
"     */",
"    setEnabled: (enabled: boolean) => void;",
"}",
"/**",
" * Properties required to create an Action Bar item.",
" */",
"export interface IActionBarItemCreationParams {",
"    /**",
"     * @remarks",
"     * Initial enabled state of the item. If not defined, default",
"     * is true.",
"     *",
"     */",
"    enabled?: boolean;",
"    /**",
"     * @remarks",
"     * Icon resource for the item.",
"     *",
"     */",
"    icon: string;",
"    /**",
"     * @remarks",
"     * Animation data for sprite sheet icon image",
"     *",
"     */",
"    iconAnimation?: ImageAnimationData;",
"    /**",
"     * @remarks",
"     * Text label for item.",
"     *",
"     */",
"    label: string;",
"    /**",
"     * @remarks",
"     * Tooltip description for the item.",
"     *",
"     */",
"    tooltipDescription?: string;",
"    /**",
"     * @remarks",
"     * Tooltip title for the item.",
"     *",
"     */",
"    tooltipTitle?: string;",
"}",
"/**",
" * A property item which supports block list properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBlockListPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: ReadonlyArray<string>;",
"}",
"/**",
" * Optional properties for Bool property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBlockListPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: ReadonlyArray<string>, oldValue: ReadonlyArray<string>) => void;",
"}",
"/**",
" * Block Table Entry info for block table property item",
" */",
"export interface IBlockTableEntryInfo {",
"    /**",
"     * @remarks",
"     * The quantity number of the same block in the selection.",
"     *",
"     */",
"    count?: number;",
"}",
"/**",
" * A property item which supports Block Table properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBlockTablePropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Create new or update an existing entry in the block table",
"     *",
"     * @param block",
"     * a new entry in the block table.",
"     * @param blockInfo",
"     * block info for the entry in the block table.",
"     */",
"    addOrUpdateEntry(block: string | minecraftserver.BlockType, blockInfo: IBlockTableEntryInfo): void;",
"    /**",
"     * @remarks",
"     * Delete entry in the block table, by block name",
"     *",
"     * @param block",
"     * an entry in the block table.",
"     */",
"    deleteEntry(block: string): void;",
"    /**",
"     * @remarks",
"     * Read entry from the block table, by block name",
"     *",
"     * @param block",
"     * an entry in the block table.",
"     */",
"    getEntry(block: string | minecraftserver.BlockType): IBlockTableEntryInfo | undefined;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString): void;",
"    /**",
"     * @remarks",
"     * Update the block table entries",
"     *",
"     * @param entries",
"     * The new value for the block table.",
"     */",
"    updateEntries(entries: Map<string, IBlockTableEntryInfo>): void;",
"}",
"/**",
" * Properties of block table item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBlockTablePropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Map of block entries in the block table.",
"     *",
"     */",
"    entries?: Map<string, IBlockTableEntryInfo>;",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control operation is",
"     * selected from the UI.",
"     *",
"     */",
"    onOperationClick?: (block: string, operation: BlockTableOperationType) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * A property item which supports boolean properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBoolPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: boolean;",
"    /**",
"     * @remarks",
"     * Sets title of the property item.",
"     *",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Sets tooltip description of the property item.",
"     *",
"     */",
"    setTooltip(title: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for Bool property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IBoolPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: boolean, oldValue: boolean) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the text item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Determines how we display bool as a UI element. If",
"     * undefined, it will default to Checkbox.",
"     *",
"     */",
"    variant?: BoolPropertyItemVariant;",
"}",
"/**",
" * A property item pane which supports multiple buttons",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IButtonPanePropertyItem extends IPropertyItemBase, IPane {",
"    /**",
"     * @remarks",
"     * Adds a button to the pane and binds the specified action to",
"     * the button interaction.",
"     *",
"     */",
"    addButton(",
"        action: ButtonPropertyItemSupportedActionTypes,",
"        options?: IButtonPropertyItemOptions,",
"    ): IButtonPropertyItem;",
"}",
"/**",
" * Optional properties for Button Pane property item",
" */",
"export interface IButtonPanePropertyItemOptions {",
"    /**",
"     * @remarks",
"     * Minimum width for each item within the layout. If undefined,",
"     * it will default to 6.",
"     *",
"     */",
"    itemMinWidth?: number;",
"}",
"/**",
" * A property item which supports Button properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IButtonPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Replace action assigned to the button.",
"     *",
"     * @param action",
"     * New action to replace the existing with.",
"     */",
"    replaceAction(action: RegisteredAction<NoArgsAction>): void;",
"    /**",
"     * @remarks",
"     * Updates icon of the button.",
"     *",
"     * @param icon",
"     * New button icon.",
"     */",
"    setIcon(icon: string | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates title of the button.",
"     *",
"     * @param title",
"     * New button title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip description of the button.",
"     *",
"     * @param tooltip",
"     * New button tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for Button property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IButtonPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * Icon image of the property item.",
"     *",
"     */",
"    icon?: string;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * The variant for the button. By default it is Primary.",
"     *",
"     */",
"    variant?: ButtonPropertyItemVariant;",
"}",
"/**",
" * A property item which supports Color Picker properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IColorPickerPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: minecraftserver.RGBA;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip of the property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for Color Picker property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IColorPickerPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true alpha control will be hidden. If undefined, it will",
"     * default to false.",
"     *",
"     */",
"    hiddenAlpha?: boolean;",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: minecraftserver.RGBA, oldValue: minecraftserver.RGBA) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * The variant for the button. By default it is Primary.",
"     *",
"     */",
"    variant?: ColorPickerPropertyItemVariant;",
"}",
"/**",
" * A property item which supports Combo Box properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IComboBoxPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: string;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip of the property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for ComboBox property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IComboBoxPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Possible data types supported by combo box. If undefined, it",
"     * will be Custom by default.",
"     *",
"     */",
"    dataType?: ComboBoxPropertyItemDataType;",
"    /**",
"     * @remarks",
"     * Default value to fall back to if entry is not found. If",
"     * undefined, data type will determine the default value (empty",
"     * string for Custom data type).",
"     *",
"     */",
"    defaultValue?: string;",
"    /**",
"     * @remarks",
"     * List of combo box entries. If undefined, data type will",
"     * determine the default list (empty list for Custom data",
"     * type).",
"     *",
"     */",
"    entries?: string[];",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: string, oldValue: string) => void;",
"    /**",
"     * @remarks",
"     * If true the image for the selected value will be displayed",
"     * (if data type supports it). If undefined, it will default to",
"     * false.",
"     *",
"     */",
"    showImage?: boolean;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * A property item which supports data entries displayed in a",
" * table",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IDataTablePropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Update table entries",
"     *",
"     * @param data",
"     * New data entries.",
"     */",
"    updateEntries(data: IDataTablePropertyItemEntry[][]): void;",
"    /**",
"     * @remarks",
"     * Update table cell entry",
"     *",
"     * @param data",
"     * New data entry.",
"     * @param row",
"     * Cell row index.",
"     * @param column",
"     * Cell column index.",
"     */",
"    updateEntry(data: IDataTablePropertyItemEntry, row: number, column: number): void;",
"    /**",
"     * @remarks",
"     * Update table row entries",
"     *",
"     * @param data",
"     * New data entries.",
"     * @param row",
"     * Cell row index.",
"     */",
"    updateRow(data: IDataTablePropertyItemEntry[], row: number): void;",
"}",
"/**",
" * Properties of data table property item menu entry",
" */",
"export interface IDataTablePropertyItemEntry {",
"    image?: ImageResourceData;",
"    text?: LocalizedString;",
"}",
"/**",
" * Properties of data table item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IDataTablePropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * List of default data table entries",
"     *",
"     */",
"    entries?: IDataTablePropertyItemEntry[][];",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"}",
"/**",
" * Simple abstraction for disposable objects.",
" */",
"export interface IDisposable {",
"    /**",
"     * @remarks",
"     * Initiates the teardown and cleanup of this disposable item.",
"     *",
"     */",
"    teardown(): void;",
"}",
"/**",
" * A property item which supports Dropdown properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IDropdownPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current selected entry value of the property item list.",
"     *",
"     */",
"    readonly value: number;",
"    /**",
"     * @remarks",
"     * Find a dropdown entry at an index in the dropdown list.",
"     *",
"     * @param index",
"     * Index of the dropdown entry in the list.",
"     */",
"    getEntryByIndex(index: number): IDropdownPropertyItemEntry | undefined;",
"    /**",
"     * @remarks",
"     * Find a dropdown entry with a specific value associated with",
"     * property item.",
"     *",
"     * @param value",
"     * Value of the dropdown entry in the list.",
"     */",
"    getEntryByValue(value: number): IDropdownPropertyItemEntry | undefined;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip of the property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Update list of dropdown entries.",
"     *",
"     * @param entries",
"     * New list of updated entries.",
"     * @param newValue",
"     * New value value to use for the dropdown.",
"     */",
"    updateEntries(entries: IDropdownPropertyItemEntry[], newValue?: number): void;",
"}",
"/**",
" * Properties of dropdown property item menu entry",
" */",
"export interface IDropdownPropertyItemEntry {",
"    /**",
"     * @remarks",
"     * Optional image of the dropdown entry.",
"     *",
"     */",
"    readonly imageData?: ImageResourceData;",
"    /**",
"     * @remarks",
"     * Localized display text of the entry.",
"     *",
"     */",
"    readonly label: string;",
"    /**",
"     * @remarks",
"     * The selectable value of the entry.",
"     *",
"     */",
"    readonly value: number;",
"}",
"/**",
" * Optional properties for Dropdown property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IDropdownPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * List of dropdown entries associated with the property item.",
"     * If undefined, list will be empty.",
"     *",
"     */",
"    entries?: IDropdownPropertyItemEntry[];",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: number, oldValue: number, items: IDropdownPropertyItemEntry[]) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * Returned from an event subscription. Provides functionality",
" * for cleaning up listeners",
" */",
"export declare interface IEventToken {",
"    /**",
"     * @remarks",
"     * Removes registered listener from an event",
"     *",
"     */",
"    unsubscribe(): void;",
"}",
"export interface IGlobalInputManager {",
"    /**",
"     * @remarks",
"     * Register a key press binding for an action which will be",
"     * handled by the specified input context.",
"     *",
"     * @param inputContextId",
"     * Id of the UI context to handle this binding.",
"     * @param action",
"     * Action to register the binding for.",
"     * @param binding",
"     * Keyboard binding to invoke action.",
"     * @param info",
"     * Additional information about key binding.",
"     */",
"    registerKeyBinding(",
"        inputContextId: EditorInputContext,",
"        action: SupportedKeyboardActionTypes,",
"        binding: KeyBinding,",
"        info?: KeyBindingInfo,",
"    ): IRegisteredKeyBinding;",
"}",
"/**",
" * A property item which supports Image properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IImagePropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Height of the image.",
"     *",
"     */",
"    readonly imageHeight: number;",
"    /**",
"     * @remarks",
"     * Width of the image.",
"     *",
"     */",
"    readonly imageWidth: number;",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<string | ImageResourceData>;",
"    /**",
"     * @remarks",
"     * Updates the size of the image.",
"     *",
"     * @param width",
"     * New width of the image.",
"     * @param height",
"     * New height of the image.",
"     */",
"    resizeImage(width: number, height: number): void;",
"}",
"/**",
" * Optional properties for Image property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IImagePropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Alignment of the image in the container. If not defined,",
"     * LayoutAlignment.Left is used.",
"     *",
"     */",
"    alignment?: LayoutAlignment;",
"    /**",
"     * @remarks",
"     * Size of the image. If undefined, defaults to 10.",
"     *",
"     */",
"    imageSize?:",
"        | number",
"        | {",
"              width: number;",
"              height: number;",
"          };",
"    /**",
"     * @remarks",
"     * Called when image is clicked.",
"     *",
"     */",
"    onClick?: (x: number, y: number) => void;",
"}",
"/**",
" * A property item which supports Link properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ILinkPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<string>;",
"    /**",
"     * @remarks",
"     * Sets title of the property item.",
"     *",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Sets tooltip description of the property item.",
"     *",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for Link property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ILinkPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Hides the link icon. If undefined, it will default to false.",
"     *",
"     */",
"    hideIcon?: boolean;",
"    /**",
"     * @remarks",
"     * Localized title of the text item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"export interface IMenu {",
"    /**",
"     * @remarks",
"     * If defined, the menu will show a checked or unchecked",
"     * checkbox.",
"     *",
"     */",
"    checked?: boolean;",
"    /**",
"     * @remarks",
"     * The menu will be in either an enabled or disabled state",
"     *",
"     */",
"    enabled: boolean;",
"    /**",
"     * @remarks",
"     * Unique ID for the menu",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Sub menus of this menu",
"     *",
"     */",
"    readonly submenu: IMenu[];",
"    /**",
"     * @remarks",
"     * Create a child menu on this menu.",
"     *",
"     * @param params",
"     * The menu creation parameters for the sub item being added",
"     * @param action",
"     * The action to associate with the menu item. Only a subset of",
"     * actions are supported",
"     */",
"    addItem(params: IMenuCreationParams, action?: RegisteredAction<NoArgsAction>): IMenu;",
"    /**",
"     * @remarks",
"     * Destroy the menu and all of its children.",
"     *",
"     */",
"    dispose(): void;",
"    /**",
"     * @remarks",
"     * Hide the menu and all of its children.",
"     *",
"     */",
"    hide(): void;",
"    /**",
"     * @remarks",
"     * Replaces the current associated menu action with a new",
"     * action",
"     *",
"     * @param action",
"     * The registered action to associated with this menu item",
"     */",
"    replaceAction(action: RegisteredAction<NoArgsAction>): void;",
"    /**",
"     * @remarks",
"     * Show the menu and all of its children.",
"     *",
"     */",
"    show(): void;",
"}",
"/**",
" * Manager and container for IMenu objects",
" */",
"export interface IMenuContainer {",
"    /**",
"     * @remarks",
"     * Create a top level item in the container.",
"     *",
"     * @param props",
"     * Configuration for the menu to create",
"     */",
"    createMenu(props: IMenuCreationParams): IMenu;",
"    /**",
"     * @remarks",
"     * Search for a menu item, if it's not found defer it to next",
"     * tick.",
"     *",
"     * @param id",
"     * Menu identifier",
"     */",
"    getMenu(id: string): Promise<IMenu>;",
"}",
"/**",
" * Properties required to create a Menu",
" */",
"export interface IMenuCreationParams {",
"    /**",
"     * @remarks",
"     * Whether the menu should show a checkmark",
"     *",
"     */",
"    checked?: boolean;",
"    /**",
"     * @remarks",
"     * Whether the menu should be enabled or disabled",
"     *",
"     */",
"    enabled?: boolean;",
"    /**",
"     * @remarks",
"     * Localized display text of the menu",
"     *",
"     */",
"    label: string;",
"    /**",
"     * @remarks",
"     * Custom unique identifier that will replace random id",
"     *",
"     */",
"    uniqueId?: string;",
"}",
"/**",
" * A sub pane for modal control elements.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IModalControlPane extends IPane {",
"    /**",
"     * @remarks",
"     * Adds a togglable boolean item to the pane.",
"     *",
"     */",
"    addBool(value: IObservableProp<boolean>, options?: IBoolPropertyItemOptions): IBoolPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a button to the pane and binds the specified action to",
"     * the button activation.",
"     *",
"     */",
"    addButton(",
"        action: ButtonPropertyItemSupportedActionTypes,",
"        options?: IButtonPropertyItemOptions,",
"    ): IButtonPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a pane for grouped button layout.",
"     *",
"     */",
"    addButtonPane(options?: IButtonPanePropertyItemOptions): IButtonPanePropertyItem;",
"    /**",
"     * @remarks",
"     * Adds an divider item to the pane.",
"     *",
"     */",
"    addDivider(): IPropertyItemBase;",
"}",
"/**",
" * A modal overlay pane is displayed over a root pane.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IModalOverlayPane extends IPane {",
"    /**",
"     * @remarks",
"     * A sub pane that represents content of the modal overlay.",
"     *",
"     */",
"    contentPane: ISubPanePropertyItem;",
"    /**",
"     * @remarks",
"     * A pane that represent modal control elements.",
"     *",
"     */",
"    controlPane: IModalControlPane;",
"}",
"/**",
" * The options to create a modal overlay pane.",
" */",
"export interface IModalOverlayPaneOptions {",
"    /**",
"     * @remarks",
"     * Localized title of the modal overlay.",
"     *",
"     */",
"    title?: LocalizedString;",
"}",
"export interface IModalTool {",
"    /**",
"     * @remarks",
"     * Unique identifier for the tool",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Provides lifecycle activation events for a modal tool",
"     *",
"     */",
"    onModalToolActivation: EventSink<ModalToolLifecycleEventPayload>;",
"    /**",
"     * @remarks",
"     * Binds a property pane to the tool. When the tool is",
"     * selected, the pane's visibility updates. Only one pane can",
"     * be bound at a time.",
"     *",
"     * @param pane",
"     * Root pane associated with the modal tool",
"     */",
"    bindPropertyPane(pane: IRootPropertyPane): void;",
"    /**",
"     * @remarks",
"     * Register a key press binding for an action which will be",
"     * handled by the tool input context.",
"     *",
"     * @param action",
"     * Action to register the binding for.",
"     * @param binding",
"     * Keyboard binding to invoke action.",
"     * @param info",
"     * Additional information about key binding.",
"     */",
"    registerKeyBinding(",
"        action: SupportedKeyboardActionTypes,",
"        binding: KeyBinding,",
"        info?: KeyBindingInfo,",
"    ): IRegisteredKeyBinding;",
"    /**",
"     * @remarks",
"     * Register an action to be called when mouse left/middle/right",
"     * buttons are pressed or released.",
"     *",
"     * @param action",
"     * Action to register the binding for.",
"     */",
"    registerMouseButtonBinding(action: SupportedMouseActionTypes): void;",
"    /**",
"     * @remarks",
"     * Register an action to be called when mouse is dragged while",
"     * left mouse button is down.",
"     *",
"     * @param action",
"     * Action to register the binding for.",
"     */",
"    registerMouseDragBinding(action: SupportedMouseActionTypes): void;",
"    /**",
"     * @remarks",
"     * Register an action to be called when mouse wheel is",
"     * scrolled.",
"     *",
"     * @param action",
"     * Action to register the binding for.",
"     */",
"    registerMouseWheelBinding(action: SupportedMouseActionTypes): void;",
"    /**",
"     * @remarks",
"     * Unregister all input binding for this tool.",
"     *",
"     */",
"    unregisterInputBindings(): void;",
"}",
"export interface IModalToolContainer {",
"    /**",
"     * @remarks",
"     * Tools within this container.",
"     *",
"     */",
"    readonly currentTools: IModalTool[];",
"    /**",
"     * @remarks",
"     * Create a new tool in the modal tool container represented",
"     * via button on the tool rail.",
"     *",
"     * @param id",
"     * Unique identifier for the tool",
"     * @param params",
"     * Construction parameters for the new tool",
"     */",
"    addTool(id: string, params: ModalToolCreationParameters): IModalTool;",
"    /**",
"     * @remarks",
"     * Activates input bindings for the selected tool by enabling",
"     * viewport focus",
"     *",
"     */",
"    focusToolInputContext(): void;",
"    /**",
"     * @remarks",
"     * Returns identifier of the selected tool.",
"     *",
"     */",
"    getSelectedToolId(): string | undefined;",
"    /**",
"     * @remarks",
"     * Remove an existing tool by id from the tool container",
"     *",
"     * @param id",
"     * Name of the tool to remove.",
"     */",
"    removeTool(id: string): void;",
"    /**",
"     * @remarks",
"     * Selects a tool in the container.",
"     *",
"     * @param id",
"     * Identifier of the tool",
"     */",
"    setSelectedToolId(id: string | undefined): void;",
"}",
"/**",
" * A property item which supports Number properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface INumberPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<number>;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip description of property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates number limits and clamps the current value.",
"     *",
"     */",
"    updateLimits(limits: { min?: number; max?: number }): void;",
"}",
"/**",
" * Optional properties for Number property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface INumberPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. If undefined, the label",
"     * will be visible by default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * If we should treat the number as integer. By default is",
"     * false.",
"     *",
"     */",
"    isInteger?: boolean;",
"    /**",
"     * @remarks",
"     * The min possible number. If undefined,",
"     * Number.MAX_SAFE_INTEGER will be used.",
"     *",
"     */",
"    max?: number;",
"    /**",
"     * @remarks",
"     * The min possible number. If undefined,",
"     * Number.MIN_SAFE_INTEGER will be used.",
"     *",
"     */",
"    min?: number;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: number, oldValue: number) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Determines how we display bool as a UI element. If",
"     * undefined, it will default to InputField.",
"     *",
"     */",
"    variant?: NumberPropertyItemVariant;",
"}",
"/**",
" * Represents a stateful value that can be observed by",
" * different objects.",
" */",
"export interface IObservable<T> {",
"    /**",
"     * @remarks",
"     * Optional validator that will pre-process the new value.",
"     *",
"     */",
"    readonly validator?: ObservableValidator<T>;",
"    /**",
"     * @remarks",
"     * Current value of the observable.",
"     *",
"     */",
"    readonly value: Readonly<T>;",
"    /**",
"     * @remarks",
"     * Updates the value and notifies dependent objects.",
"     *",
"     * @param newValue",
"     * New value to be set (will be processed by the validator if",
"     * it exists).",
"     */",
"    set(newValue: T): boolean;",
"}",
"/**",
" * Pane represents a container for UI components.",
" */",
"export interface IPane {",
"    /**",
"     * @remarks",
"     * Unique identifier for the pane.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Check visibility of the pane",
"     *",
"     */",
"    visible: boolean;",
"    /**",
"     * @remarks",
"     * Hide the pane.",
"     *",
"     */",
"    hide(): void;",
"    /**",
"     * @remarks",
"     * Show the pane and all of its items.",
"     *",
"     */",
"    show(): void;",
"}",
"/**",
" * Log helper interface for Player.",
" */",
"export interface IPlayerLogger {",
"    /**",
"     * @remarks",
"     * Dispatch a player log message with Debug log level",
"     *",
"     * @param message",
"     * Message content",
"     */",
"    debug(message: string): void;",
"    /**",
"     * @remarks",
"     * Dispatch a player log message with Error log level",
"     *",
"     * @param message",
"     * Message content",
"     */",
"    error(message: string): void;",
"    /**",
"     * @remarks",
"     * Dispatch a player log message with Info log level",
"     *",
"     * @param message",
"     * Message content",
"     */",
"    info(message: string): void;",
"    /**",
"     * @remarks",
"     * Dispatch a player log message with Warning log level",
"     *",
"     * @param message",
"     * Message content",
"     */",
"    warning(message: string): void;",
"}",
"/**",
" * A property item which supports ProgressIndicator properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IProgressIndicatorPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current progress of the property item.",
"     *",
"     */",
"    readonly progress: Readonly<number> | undefined;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip description of property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for progress indicator property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IProgressIndicatorPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. If undefined, the label",
"     * will be visible by default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * Normalized loading progress (0 to 1).",
"     *",
"     */",
"    progress?: IObservableProp<number>;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Determines how we display progress indicator. If undefined,",
"     * it will default to Spinner.",
"     *",
"     */",
"    variant?: ProgressIndicatorPropertyItemVariant;",
"}",
"/**",
" * Common base for all property items",
" */",
"export interface IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * If the item is enabled in the UI.",
"     *",
"     */",
"    enable: boolean;",
"    /**",
"     * @remarks",
"     * Unique ID for the property item.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * The parent pane id.",
"     *",
"     */",
"    readonly paneId: string;",
"    /**",
"     * @remarks",
"     * The type name of the target property.",
"     *",
"     */",
"    readonly typeName: PropertyItemType;",
"    /**",
"     * @remarks",
"     * If the item should be visible in the UI.",
"     *",
"     */",
"    visible: boolean;",
"}",
"/**",
" * Common optional properties for property items",
" */",
"export interface IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Initial enabled state of property item. If undefined, it",
"     * will default to true.",
"     *",
"     */",
"    enable?: boolean;",
"    /**",
"     * @remarks",
"     * Initial visibility state of property item. If undefined, it",
"     * will default to true.",
"     *",
"     */",
"    visible?: boolean;",
"}",
"/**",
" * Property pane present dynamic content. It can be associated",
" * with an object and presented with different kind of",
" * controls.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IPropertyPane extends IPane {",
"    /**",
"     * @remarks",
"     * Pane state for being expanded or collapsed.",
"     *",
"     */",
"    collapsed: boolean;",
"    /**",
"     * @remarks",
"     * Provides visibility change events",
"     *",
"     */",
"    onPropertyPaneVisibilityUpdated: EventSink<PropertyPaneVisibilityUpdate>;",
"    /**",
"     * @remarks",
"     * Adds a block list to the pane.",
"     *",
"     */",
"    addBlockList(value: IObservableProp<string[]>, options?: IBlockListPropertyItemOptions): IBlockListPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a block table to the pane.",
"     *",
"     */",
"    addBlockTable(options?: IBlockTablePropertyItemOptions): IBlockTablePropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a togglable boolean item to the pane.",
"     *",
"     */",
"    addBool(value: IObservableProp<boolean>, options?: IBoolPropertyItemOptions): IBoolPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a button to the pane and binds the specified action to",
"     * the button interaction.",
"     *",
"     */",
"    addButton(",
"        action: ButtonPropertyItemSupportedActionTypes,",
"        options?: IButtonPropertyItemOptions,",
"    ): IButtonPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a pane for grouped button layout.",
"     *",
"     */",
"    addButtonPane(options?: IButtonPanePropertyItemOptions): IButtonPanePropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a color picker item to the pane.",
"     *",
"     */",
"    addColorPicker(",
"        value: IObservableProp<minecraftserver.RGBA>,",
"        options?: IColorPickerPropertyItemOptions,",
"    ): IColorPickerPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a combo box item to the pane.",
"     *",
"     */",
"    addComboBox(value: IObservableProp<string>, options?: IComboBoxPropertyItemOptions): IComboBoxPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a data table to the pane.",
"     *",
"     */",
"    addDataTable(options?: IDataTablePropertyItemOptions): IDataTablePropertyItem;",
"    /**",
"     * @remarks",
"     * Adds an divider item to the pane.",
"     *",
"     */",
"    addDivider(): IPropertyItemBase;",
"    /**",
"     * @remarks",
"     * Adds an Dropdown item to the pane.",
"     *",
"     */",
"    addDropdown(value: IObservableProp<number>, options?: IDropdownPropertyItemOptions): IDropdownPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds an image item to the pane.",
"     *",
"     */",
"    addImage(",
"        value: IObservableProp<string | ImageResourceData>,",
"        options?: IImagePropertyItemOptions,",
"    ): IImagePropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a Link item to the pane.",
"     *",
"     */",
"    addLink(value: IObservableProp<string>, options?: ILinkPropertyItemOptions): ILinkPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a number item to the pane.",
"     *",
"     */",
"    addNumber(value: IObservableProp<number>, options?: INumberPropertyItemOptions): INumberPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a Progress Indicator item to the pane.",
"     *",
"     */",
"    addProgressIndicator(options?: IProgressIndicatorPropertyItemOptions): IProgressIndicatorPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds an editable string item to the pane",
"     *",
"     */",
"    addString(value: IObservableProp<string>, options?: IStringPropertyItemOptions): IStringPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a multiline Text item to the pane.",
"     *",
"     */",
"    addText(value: IObservableProp<LocalizedString>, options?: ITextPropertyItemOptions): ITextPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a toggle button group to the pane.",
"     *",
"     */",
"    addToggleGroup(value: IObservableProp<number>, options?: IToggleGroupPropertyItemOptions): IToggleGroupPropertyItem;",
"    /**",
"     * @remarks",
"     * Adds a Vec3 item to the pane.",
"     *",
"     */",
"    addVector3(",
"        value: IObservableProp<minecraftserver.Vector3>,",
"        options?: IVector3PropertyItemOptions,",
"    ): IVector3PropertyItem;",
"    /**",
"     * @remarks",
"     * Collapse the pane.",
"     *",
"     */",
"    collapse(): void;",
"    /**",
"     * @remarks",
"     * Creates an sub pane that can store property items.",
"     *",
"     */",
"    createSubPane(options: ISubPanePropertyItemOptions): ISubPanePropertyItem;",
"    /**",
"     * @remarks",
"     * Returns pane title.",
"     *",
"     */",
"    getTitle(): LocalizedString | undefined;",
"    /**",
"     * @remarks",
"     * Removes an existing sub pane.",
"     *",
"     */",
"    removeSubPane(paneToRemove: IPropertyPane): boolean;",
"    /**",
"     * @remarks",
"     * Updates title of pane.",
"     *",
"     * @param newTitle",
"     * New title",
"     */",
"    setTitle(newTitle: LocalizedString | undefined): void;",
"}",
"/**",
" * Common optional properties used for constructing a property",
" * pane.",
" */",
"export interface IPropertyPaneOptions {",
"    /**",
"     * @remarks",
"     * Localized title of the property pane",
"     *",
"     */",
"    title?: LocalizedString;",
"}",
"/**",
" * Key binding that is registered to an input context",
" */",
"export interface IRegisteredKeyBinding {",
"    /**",
"     * @remarks",
"     * Unique identifier for the binding.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Returns current processing state of the binding.",
"     *",
"     */",
"    getProcessingState(): KeyProcessingState;",
"    /**",
"     * @remarks",
"     * Updates how the key input will be processed for this",
"     * binding. If undefined, it will be consumed.",
"     *",
"     * @param newState",
"     * New binding processing state.",
"     */",
"    setProcessingState(newState: KeyProcessingState | undefined): void;",
"}",
"/**",
" * Optional parameter definition for RegisterEditorExtension",
" * function Allows the extension registrar to specify optional",
" * textual description and notes which would be visible through",
" * the extension manager",
" */",
"export interface IRegisterExtensionOptionalParameters {",
"    /**",
"     * @remarks",
"     * Description of the extension.",
"     *",
"     */",
"    description?: string;",
"    /**",
"     * @remarks",
"     * Additional notes and description of the extension.",
"     *",
"     */",
"    notes?: string;",
"    /**",
"     * @remarks",
"     * An optional custom group identifier that will be used for",
"     * all Modal Tools created from the registered extension.",
"     *",
"     */",
"    toolGroupId?: string;",
"}",
"/**",
" * A root pane that can store property items.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IRootPropertyPane extends IPropertyPane {",
"    /**",
"     * @remarks",
"     * Register a modal overlay to the root pane. It will be hidden",
"     * by default, when shown it will display over the root pane",
"     * content. Only one modal overlay can be shown at a time.",
"     *",
"     * @param options",
"     * Creation parameters for modal overlay pane.",
"     */",
"    createModalOverlayPane(options?: IModalOverlayPaneOptions): IModalOverlayPane;",
"    /**",
"     * @remarks",
"     * @returns",
"     * Unique identifier of the active modal overlay",
"     */",
"    getActiveModalOverlayId(): string | undefined;",
"    /**",
"     * @remarks",
"     * @returns",
"     * Current visibility state of header action",
"     */",
"    isHeaderActionVisible(): boolean;",
"    /**",
"     * @remarks",
"     * Sets registered modal overlay as active, if not found it",
"     * will hide the current.",
"     *",
"     * @param id",
"     * Unique id for modal overlay pane.",
"     */",
"    setActiveModalOverlay(id: string | undefined): void;",
"    /**",
"     * @remarks",
"     * If a header action exists, updates visibility of the button.",
"     *",
"     * @param visible",
"     * New visibility state of the action button.",
"     */",
"    setHeaderActionVisibility(visible: boolean): void;",
"}",
"/**",
" * Represents the data to display an action button on a root",
" * property pane header.",
" */",
"export interface IRootPropertyPaneHeaderAction {",
"    action?: () => void;",
"    icon: string;",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * The options to create a root pane.",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IRootPropertyPaneOptions extends IPropertyPaneOptions {",
"    /**",
"     * @remarks",
"     * Optional action button to be displayed on the header.",
"     *",
"     */",
"    headerAction?: IRootPropertyPaneHeaderAction;",
"    /**",
"     * @remarks",
"     * Optional information tooltip for the pane to be displayed on",
"     * the header.",
"     *",
"     */",
"    infoTooltip?: TooltipInteractiveContent;",
"}",
"/**",
" * The simple tool wrapper will create, bind and manage the",
" * lifecycle of all the desired components. The wrapper is",
" * designed to obfuscate and simplify the process of creating a",
" * simple editor tool so that a creator can get on with the job",
" * of just creating the tool functionality without getting",
" * mired in the irrelevant details of component lifecycle and",
" * visibility management. The wrapper will also attempt to",
" * codify particular implementation patterns and requirements",
" * that are common to all editor tools, and enforce them in a",
" * consistent way. It should also go some way to insulating the",
" * creator from underlying system and implementation changes as",
" * the editor evolves.",
" */",
"export interface ISimpleTool {",
"    /**",
"     * @remarks",
"     * Get the tool unique id",
"     *",
"     */",
"    get id(): string;",
"    /**",
"     * @remarks",
"     * Get a reference to the menu component that was automatically",
"     * created for the tool This generally only happens if the tool",
"     * is a global tool (i.e. has a pane and does not have a tool",
"     * rail component) In this case a menu item is automatically",
"     * created and some visibility controls are inserted. If you",
"     * have additional menu options you want to add, this is the",
"     * ideal control to add children to",
"     *",
"     */",
"    get menu(): IMenu | undefined;",
"    /**",
"     * @remarks",
"     * Get the tool name",
"     *",
"     */",
"    get name(): string;",
"    /**",
"     * @remarks",
"     * Get a reference to the root (primary) property pane",
"     * component - if no component was requested, this function",
"     * will throw an error",
"     *",
"     */",
"    get pane(): ISimpleToolPaneComponent;",
"    /**",
"     * @remarks",
"     * Get a reference to the IPlayerUISession. This is the primary",
"     * interface to the editor UI and all of the editor extension",
"     * controls",
"     *",
"     */",
"    get session(): IPlayerUISession;",
"    /**",
"     * @remarks",
"     * Get a reference to the status bar component - if no",
"     * component was requested, this function will throw an error",
"     *",
"     */",
"    get statusBar(): ISimpleToolStatusBarComponent;",
"    /**",
"     * @remarks",
"     * Get a reference to the tool rail component - if no component",
"     * was requested, this function will throw an error",
"     *",
"     */",
"    get toolRail(): ISimpleToolRailComponent;",
"    /**",
"     * @remarks",
"     * Find a pane or subpane by it's unique ID.",
"     *",
"     */",
"    findPane(idString: string): ISimpleToolPaneComponent | undefined;",
"    /**",
"     * @remarks",
"     * Hide a particular pane or subpane by it's unique ID. If no",
"     * ID is provided (or cannot be found) the function will throw",
"     * an error Although the parent pane is used to execute the",
"     * visibility request, the hidePane function will NOT affect",
"     * the visibility of any sibling panes -- so it is possible to",
"     * hide all of the child panes of a parent using this function",
"     *",
"     */",
"    hidePane(idString?: string): void;",
"    /**",
"     * @remarks",
"     * Send a tagged Debug log message to the console. The tag will",
"     * contain the tool name",
"     *",
"     */",
"    logDebug(message: string): void;",
"    /**",
"     * @remarks",
"     * Send a tagged Error log message to the console. The tag will",
"     * contain the tool name",
"     *",
"     */",
"    logError(message: string): void;",
"    /**",
"     * @remarks",
"     * Send a tagged Informational log message to the console. The",
"     * tag will contain the tool name",
"     *",
"     */",
"    logInfo(message: string): void;",
"    /**",
"     * @remarks",
"     * Send a tagged Warning log message to the console. The tag",
"     * will contain the tool name",
"     *",
"     */",
"    logWarn(message: string): void;",
"    /**",
"     * @remarks",
"     * Show a particular pane or subpane by it's unique ID. If no",
"     * ID is provided (or cannot be found) the function will throw",
"     * an error Note that the showPane function (when used with a",
"     * child pane) will use the parent pane to execute the",
"     * visibility request. In this case, if the child panes are",
"     * marked as mututally exclusive, then the siblings of the",
"     * requested pane will be hidden",
"     *",
"     */",
"    showPane(idString?: string): void;",
"    /**",
"     * @remarks",
"     * Much like the showPane function, but will hide all other",
"     * panes that are not the requested pane irrespective of the",
"     * exclusivity setting",
"     *",
"     */",
"    showPaneExclusively(idString: string): void;",
"    /**",
"     * @remarks",
"     * A teardown function implemented by the ISimpleTool",
"     * implementation, and is called by the system during editor",
"     * extension shutdown. Don't override this function - instead,",
"     * implement the onTeardown event in the ISimpleToolOptions",
"     * structure",
"     *",
"     */",
"    teardown(): void;",
"}",
"/**",
" * Define a key binding for the simple tool activation",
" */",
"export interface ISimpleToolKeyBinding {",
"    binding: KeyBinding;",
"    info?: KeyBindingInfo;",
"}",
"/**",
" * A set of options which define the basic properties of a",
" * simple tool, and the optional components that are desired.",
" */",
"export interface ISimpleToolOptions {",
"    /**",
"     * @remarks",
"     * A key binding that will activate the tool. Note that if the",
"     * tool is a modal tool, then the key binding will be tied to",
"     * the tool rail activation, and appear as a tooltip on the",
"     * tool rail button. If the tool is a global tool, then the key",
"     * binding will be tied to a menu item in the View menu, and",
"     * appear as a stateful menu item which will control the pane",
"     * visibility. If there's no pane required, then the key",
"     * binding is ignored",
"     *",
"     */",
"    activationKeyBinding?: ISimpleToolKeyBinding;",
"    /**",
"     * @remarks",
"     * The unique identifier of the tool.",
"     *",
"     */",
"    id: string;",
"    /**",
"     * @remarks",
"     * The name of the tool. This will be used to identify the tool",
"     * in the UI and logs and will be used in the View /> [Tool",
"     * Name] menu item (if it's a global tool)",
"     *",
"     */",
"    name: string;",
"    /**",
"     * @remarks",
"     * The finalize function is executed after each of the",
"     * components have been created and finalized during",
"     * construction",
"     *",
"     */",
"    onFinalize?: (tool: ISimpleTool) => void;",
"    /**",
"     * @remarks",
"     * The teardown function is executed when the tool is being",
"     * torn down and only after the individual components have",
"     * executed their own teardown functions",
"     *",
"     */",
"    onTeardown?: (tool: ISimpleTool) => void;",
"    /**",
"     * @remarks",
"     * The options structure for an optional property pane",
"     * component",
"     *",
"     */",
"    propertyPaneOptions?: ISimpleToolPaneOptions;",
"    /**",
"     * @remarks",
"     * The options structure for an optional status bar component",
"     *",
"     */",
"    statusBarOptions?: ISimpleToolStatusBarOptions;",
"    /**",
"     * @remarks",
"     * The options structure for an optional tool rail component",
"     *",
"     */",
"    toolRailOptions?: ISimpleToolRailOptions;",
"}",
"/**",
" * The Simple Tool pane component represents the main window",
" * (or sub-window) for an editor tool. The pane components are",
" * stored as a hierarchy (see the `ISimpleToolPaneOptions`",
" * interface for more details) and are the main containers for",
" * all of the UI controls used by the editor tool. Panes are",
" * optional (a tool doesn't necessarily need to have a pane),",
" * but if a pane is present, then it is one of two type - Modal",
" * Pane (appears on the left side of the display; visibility is",
" * tied to the `ISimpleToolRail` component) (Note that there",
" * can be only one modal pane visible at a time) - Global Pane",
" * (appears on the right side of the display; visibility is up",
" * to the creator/user)",
" */",
"export interface ISimpleToolPaneComponent {",
"    /**",
"     * @remarks",
"     * Get a list of the unique ID's of all of the child panes",
"     *",
"     */",
"    get childPaneList(): string[];",
"    /**",
"     * @remarks",
"     * Get the unique ID of the pane",
"     *",
"     */",
"    get id(): string;",
"    /**",
"     * @remarks",
"     * Check the visibility of the pane",
"     *",
"     */",
"    get isVisible(): boolean;",
"    /**",
"     * @remarks",
"     * Get a reference to actual property pane implementation that",
"     * was constructed by the tool. This reference is used to",
"     * construct the UI components that are displayed in the pane.",
"     *",
"     */",
"    get pane(): IPropertyPane;",
"    /**",
"     * @remarks",
"     * Get a reference to the IPlayerUISession. This is the primary",
"     * interface to the editor UI and all of the editor extension",
"     * controls",
"     *",
"     */",
"    get session(): IPlayerUISession;",
"    /**",
"     * @remarks",
"     * Get a reference to the parent tool.",
"     *",
"     */",
"    get simpleTool(): ISimpleTool;",
"    /**",
"     * @remarks",
"     * Find a pane reference by unique ID",
"     *",
"     */",
"    findPane(idString: string): ISimpleToolPaneComponent | undefined;",
"    /**",
"     * @remarks",
"     * Hide the pane. Although the parent pane is used to execute",
"     * the visibility request, the hidePane function will NOT",
"     * affect the visibility of any sibling panes -- so it is",
"     * possible to hide all of the child panes of a parent using",
"     * this function",
"     *",
"     */",
"    hidePane(): void;",
"    /**",
"     * @remarks",
"     * This causes the reconstruction of the pane (and the child",
"     * panes) as if the tool was being constructed for the first",
"     * time. This is unfortunately necessary until such time that",
"     * all of our UI components are able to communicate dynamically",
"     * with their client counterparts. Certain controls require a",
"     * full teardown and reconstruction to properly update their",
"     * state. This is undergoing code changes and should become",
"     * unnecessary in the future.",
"     *",
"     */",
"    reconstructPane(): void;",
"    /**",
"     * @remarks",
"     * Show the pane. Note, if this is a sub-pane, then this",
"     * function will ask the parent for permission to show, and may",
"     * result in the visibility of any sibling panes to change as a",
"     * result (depending on the `mutually exclusive visibility`",
"     * flag)",
"     *",
"     */",
"    showPane(): void;",
"}",
"/**",
" * A set of options which define the basic properties of a",
" * window pane (or sub-pane) for a simple tool. This pane can",
" * be a top level pane, or a child pane of the top level pane,",
" * and is the content container for all of the UI controls used",
" * by the editor tool. Each pane is uniquely identified by the",
" * `id` property, and has a number of optional function",
" * closures which are called at various points in the pane's",
" * lifecycle. Note that instead of having a single `onFinalize`",
" * function, panes implement a pair of `onBeginFinalize` and",
" * `onEndFinalize` functions. This is to allow for the pane to",
" * be partially constructed BEFORE any child panes are",
" * constructed. Once all child panes have been fully finalized,",
" * then the `onEndFinalize` function is called to allow the",
" * pane to finalize itself.",
" */",
"export interface ISimpleToolPaneOptions {",
"    /**",
"     * @remarks",
"     * The id of the child pane that should be visible when the",
"     * parent pane is first shown, or the editor tool is",
"     * constructed and finalized",
"     *",
"     */",
"    childPaneInitiallyVisible?: string;",
"    /**",
"     * @remarks",
"     * An optional array of child panes. These panes are set up",
"     * exactly the same as the top level pane, but are displayed as",
"     * children inside the parent pane.",
"     *",
"     */",
"    childPanes?: ISimpleToolPaneOptions[];",
"    /**",
"     * @remarks",
"     * An optional flag to indicate whether the child panes are",
"     * mutually exclusive. If this is true, then only one child",
"     * pane can be visible at a time. If this is false, then",
"     * multiple child panes can be visible at the same time.",
"     * Visibility is controlled either through `showPane` or",
"     * `hidePane` functions of the `ISimpleToolPaneComponent` or",
"     * through the visibility methods in the top level tool",
"     * (`ISimpleTool`)",
"     *",
"     */",
"    childPanesMutuallyExclusive?: boolean;",
"    /**",
"     * @remarks",
"     * The unique identifier for this pane. This is used to",
"     * identify the pane in the tool's pane hierarchy.",
"     *",
"     */",
"    id: string;",
"    /**",
"     * @remarks",
"     * Information tooltip displayed on the root pane header.",
"     *",
"     */",
"    infoTooltip?: TooltipInteractiveContent;",
"    onBeginFinalize?: (pane: ISimpleToolPaneComponent) => void;",
"    onEndFinalize?: (pane: ISimpleToolPaneComponent) => void;",
"    onHide?: (pane: ISimpleToolPaneComponent) => void;",
"    onShow?: (pane: ISimpleToolPaneComponent) => void;",
"    onTeardown?: (pane: ISimpleToolPaneComponent) => void;",
"    /**",
"     * @remarks",
"     * The title of the pane. This will be displayed in the title",
"     * bar of the pane.",
"     *",
"     */",
"    title: string;",
"}",
"export interface ISimpleToolRailComponent {",
"    /**",
"     * @remarks",
"     * Get a reference to the IPlayerUISession. This is the primary",
"     * interface to the editor UI and all of the editor extension",
"     * controls",
"     *",
"     */",
"    get session(): IPlayerUISession;",
"    /**",
"     * @remarks",
"     * Get a reference to the parent tool.",
"     *",
"     */",
"    get simpleTool(): ISimpleTool;",
"    /**",
"     * @remarks",
"     * Get the implementation interface of the underlying tool rail",
"     * component",
"     *",
"     */",
"    get toolRail(): IModalTool;",
"}",
"/**",
" * The tool rail component allows the tool to register an icon",
" * and button (and dynamic tooltip) in the tool rail on the",
" * left side of the display. Adding a tool rail component to a",
" * tool will cause the tool to be considered a `modal tool`,",
" * and only one single modal tool can be active at any one",
" * time. Modal tools are generally tools which take focus and",
" * control of the cursor (e.g. selection, clipboards, entity",
" * selection, etc) Global tools (tools which do not have a tool",
" * rail) are generally things like property pages, settings,",
" * etc - things that do not require an active cursor or",
" * gameplay interaction",
" */",
"export interface ISimpleToolRailOptions {",
"    /**",
"     * @remarks",
"     * The icon for the tool rail button. This is generally a URL",
"     * to an image file in the editor extension resource pack e.g.",
"     * `pack://textures/my-tool-icon.png`",
"     *",
"     */",
"    icon: string;",
"    onActivate?: (component: ISimpleToolRailComponent) => void;",
"    onDeactivate?: (component: ISimpleToolRailComponent) => void;",
"    onFinalize?: (component: ISimpleToolRailComponent) => void;",
"    onTeardown?: (component: ISimpleToolRailComponent) => void;",
"    /**",
"     * @remarks",
"     * The text for the tool title",
"     *",
"     */",
"    title: string;",
"    /**",
"     * @remarks",
"     * The tooltip description for the tool. Note: if an activation",
"     * key binding was added to `ISimpleToolOptions`, then the key",
"     * binding will be appended to the tooltip string.",
"     *",
"     */",
"    tooltip: string;",
"}",
"export interface ISimpleToolStatusBarComponent {",
"    get session(): IPlayerUISession;",
"    get simpleTool(): ISimpleTool;",
"    get statusBarItem(): IStatusBarItem;",
"    hide(): void;",
"    show(): void;",
"}",
"/**",
" * A set of options which define the basic properties of a",
" * status bar item for a simple tool.",
" */",
"export interface ISimpleToolStatusBarOptions {",
"    /**",
"     * @remarks",
"     * The alignment of the status bar item within the parent",
"     * status bar container",
"     *",
"     */",
"    alignment: StatusBarAlignment;",
"    onFinalize?: (statusBar: ISimpleToolStatusBarComponent) => void;",
"    onHide?: (statusBar: ISimpleToolStatusBarComponent) => void;",
"    onShow?: (statusBar: ISimpleToolStatusBarComponent) => void;",
"    onTeardown?: (statusBar: ISimpleToolStatusBarComponent) => void;",
"    /**",
"     * @remarks",
"     * The size of the status bar item within the parent status bar",
"     * container",
"     *",
"     */",
"    size: number;",
"    /**",
"     * @remarks",
"     * The text for the status bar item",
"     *",
"     */",
"    text: LocalizedString;",
"    /**",
"     * @remarks",
"     * Determine the status bar visibility based on the existence",
"     * and visibility of the tool's root property pane",
"     *",
"     */",
"    visibility?: SimpleToolStatusBarVisibility;",
"}",
"/**",
" * Manager and container for IStatusBarItem objects",
" */",
"export interface IStatusBar {",
"    /**",
"     * @remarks",
"     * Create a item in status bar",
"     *",
"     * @param props",
"     * Properties to create status bar item",
"     */",
"    createItem(props: IStatusBarItemCreationParams): IStatusBarItem;",
"    /**",
"     * @remarks",
"     * Remove an existing status bar item",
"     *",
"     * @param id",
"     * Status bar item identifier",
"     */",
"    removeItem(id: string): void;",
"}",
"export interface IStatusBarItem {",
"    /**",
"     * @remarks",
"     * Unique ID for the item.",
"     *",
"     */",
"    readonly id: string;",
"    /**",
"     * @remarks",
"     * Returns display text of the item.",
"     *",
"     */",
"    getText(): LocalizedString;",
"    /**",
"     * @remarks",
"     * Hide the Status Bar Item.",
"     *",
"     */",
"    hide(): void;",
"    /**",
"     * @remarks",
"     * Updates display text of the item.",
"     *",
"     * @param text",
"     * New display text",
"     */",
"    setText(text: LocalizedString): void;",
"    /**",
"     * @remarks",
"     * Show the Status Bar Item.",
"     *",
"     */",
"    show(): void;",
"}",
"/**",
" * Properties required to create a status bar item",
" */",
"export interface IStatusBarItemCreationParams {",
"    /**",
"     * @remarks",
"     * Alignment of item within status bar. If undefined, it will",
"     * be left aligned.",
"     *",
"     */",
"    alignment?: StatusBarAlignment;",
"    /**",
"     * @remarks",
"     * Optional icon image resource of the item.",
"     *",
"     */",
"    icon?: string;",
"    /**",
"     * @remarks",
"     * Size of the status bar item. If undefined, it will wrap text",
"     * content.",
"     *",
"     */",
"    size?: number;",
"    /**",
"     * @remarks",
"     * Default localized display text of the item. If undefined, it",
"     * will be empty string.",
"     *",
"     */",
"    text?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Default visibility of the item. If undefined, it will be",
"     * true.",
"     *",
"     */",
"    visible?: boolean;",
"}",
"/**",
" * A property item which supports String properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IStringPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<string>;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip description of property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for String property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IStringPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. If undefined, the label",
"     * will be visible by default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: string, oldValue: string) => void;",
"    /**",
"     * @remarks",
"     * Optional regular expression pattern to validate string.",
"     *",
"     */",
"    regexPattern?: string;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * A property item which supports Sub Pane properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ISubPanePropertyItem extends IPropertyItemBase, IPropertyPane {",
"    /**",
"     * @remarks",
"     * Updates layout alignment of the sub pane.",
"     *",
"     * @param alignment",
"     * New layout alignment.",
"     */",
"    setAlignment(alignment: LayoutAlignment): void;",
"    /**",
"     * @remarks",
"     * Updates layout direction of the sub pane.",
"     *",
"     * @param direction",
"     * New layout direction.",
"     */",
"    setDirection(direction: LayoutDirection): void;",
"}",
"/**",
" * Optional properties for Sub Pane property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ISubPanePropertyItemOptions extends IPropertyPaneOptions {",
"    /**",
"     * @remarks",
"     * Alignment of property items within the pane of the property",
"     * pane. If undefined, it will default to Left.",
"     *",
"     */",
"    alignment?: LayoutAlignment;",
"    /**",
"     * @remarks",
"     * Initial expander state of sub pane. If undefined, it will",
"     * default to false.",
"     *",
"     */",
"    collapsed?: boolean;",
"    /**",
"     * @remarks",
"     * Determines layout direction of sub pane property items. If",
"     * undefined, it will default to Vertical.",
"     *",
"     */",
"    direction?: LayoutDirection;",
"    /**",
"     * @remarks",
"     * Determines if sub pane should have an expander. If",
"     * undefined, it will default to true.",
"     *",
"     */",
"    hasExpander?: boolean;",
"    /**",
"     * @remarks",
"     * Adds additional margins to sub pane. If undefined, it will",
"     * default to true.",
"     *",
"     */",
"    hasMargins?: boolean;",
"}",
"/**",
" * A property item which supports Text properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ITextPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<LocalizedString>;",
"    /**",
"     * @remarks",
"     * Gets layout alignment of the property item.",
"     *",
"     */",
"    setAlignment(alignment: LayoutAlignment): void;",
"    /**",
"     * @remarks",
"     * Sets title of the property item.",
"     *",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"}",
"/**",
" * Optional properties for Text property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface ITextPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * Determines alignment of the text. If undefined, it will",
"     * default to left aligned.",
"     *",
"     */",
"    alignment?: LayoutAlignment;",
"    /**",
"     * @remarks",
"     * Adds a border around the text. If undefined, it will default",
"     * to true.",
"     *",
"     */",
"    border?: boolean;",
"    /**",
"     * @remarks",
"     * Localized title of the text item.",
"     *",
"     */",
"    title?: LocalizedString;",
"}",
"/**",
" * A property item which supports toggle button properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IToggleGroupPropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current selected entry value.",
"     *",
"     */",
"    readonly value: number;",
"    /**",
"     * @remarks",
"     * Find a toggle entry at an index in the group.",
"     *",
"     * @param index",
"     * Index of the toggle entry in the list.",
"     */",
"    getEntryByIndex(index: number): IToggleGroupPropertyItemEntry | undefined;",
"    /**",
"     * @remarks",
"     * Find a toggle entry with a specific value associated with",
"     * property item.",
"     *",
"     * @param value",
"     * Value of the toggle entry in the group.",
"     */",
"    getEntryByValue(value: number): IToggleGroupPropertyItemEntry | undefined;",
"    /**",
"     * @remarks",
"     * Updates title of the property item.",
"     *",
"     * @param title",
"     * New title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip of the property item.",
"     *",
"     * @param tooltip",
"     * New tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Update list of toggle group entries.",
"     *",
"     * @param entries",
"     * New list of updated entries.",
"     * @param newValue",
"     * New value value to use for the selected toggle button.",
"     */",
"    updateEntries(entries: IToggleGroupPropertyItemEntry[], newValue?: number): void;",
"}",
"/**",
" * Properties of toggle group property item list entry",
" */",
"export interface IToggleGroupPropertyItemEntry {",
"    /**",
"     * @remarks",
"     * Optional icon of the dropdown entry.",
"     *",
"     */",
"    readonly icon?: string;",
"    /**",
"     * @remarks",
"     * Localized display text of the entry.",
"     *",
"     */",
"    readonly label?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Optional tooltip description text of the entry.",
"     *",
"     */",
"    readonly tooltip?: LocalizedString;",
"    /**",
"     * @remarks",
"     * The selectable value of the entry.",
"     *",
"     */",
"    readonly value: number;",
"}",
"/**",
" * Optional properties for Toggle Group property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IToggleGroupPropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * List of toggle button entries associated with the property",
"     * item. If undefined, list will be empty.",
"     *",
"     */",
"    entries?: IToggleGroupPropertyItemEntry[];",
"    /**",
"     * @remarks",
"     * If true toggle buttons will be displayed vertically with",
"     * their labels. If undefined, labels will be hidden.",
"     *",
"     */",
"    hiddenEntryLabels?: boolean;",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control value is changed.",
"     *",
"     */",
"    onChange?: (newValue: number, oldValue: number, items: IToggleGroupPropertyItemEntry[]) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item.",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item.",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * A property item which supports Vector3 properties",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IVector3PropertyItem extends IPropertyItemBase {",
"    /**",
"     * @remarks",
"     * Current value of the property item.",
"     *",
"     */",
"    readonly value: Readonly<minecraftserver.Vector3>;",
"    /**",
"     * @remarks",
"     * Updates title of the button.",
"     *",
"     * @param title",
"     * New button title.",
"     */",
"    setTitle(title: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates tooltip description of the button.",
"     *",
"     * @param tooltip",
"     * New button tooltip.",
"     */",
"    setTooltip(tooltip: LocalizedString | undefined): void;",
"    /**",
"     * @remarks",
"     * Updates Vector3 limits and clamps the current value.",
"     *",
"     */",
"    updateAxisLimits(limits: { min?: Partial<minecraftserver.Vector3>; max?: Partial<minecraftserver.Vector3> }): void;",
"}",
"/**",
" * Optional properties for Vector3 property item",
" */",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface IVector3PropertyItemOptions extends IPropertyItemOptionsBase {",
"    /**",
"     * @remarks",
"     * If true label text will be hidden. It will be visible by",
"     * default.",
"     *",
"     */",
"    hiddenLabel?: boolean;",
"    /**",
"     * @remarks",
"     * If we should treat the Vector3 properties as integer values.",
"     * By default is false.",
"     *",
"     */",
"    isInteger?: boolean;",
"    /**",
"     * @remarks",
"     * The min possible limits. If undefined,",
"     * Number.MAX_SAFE_INTEGER will be used.",
"     *",
"     */",
"    max?: Partial<minecraftserver.Vector3>;",
"    /**",
"     * @remarks",
"     * The min possible limits. If undefined,",
"     * Number.MIN_SAFE_INTEGER will be used.",
"     *",
"     */",
"    min?: Partial<minecraftserver.Vector3>;",
"    /**",
"     * @remarks",
"     * This callback is called when UI control is changed.",
"     *",
"     */",
"    onChange?: (newValue: minecraftserver.Vector3, oldValue: minecraftserver.Vector3) => void;",
"    /**",
"     * @remarks",
"     * Localized title of the property item",
"     *",
"     */",
"    title?: LocalizedString;",
"    /**",
"     * @remarks",
"     * Tooltip description of the property item",
"     *",
"     */",
"    tooltip?: LocalizedString;",
"}",
"/**",
" * A properties class for the global instance of the logger",
" * object.",
" * While the logger object is available through the {@link",
" * ExtensionContext} - using the global instance allows the",
" * creator to use this properties class to perform direct",
" * server->client messaging and broadcasts.",
" */",
"export interface LogProperties {",
"    /**",
"     * @remarks",
"     * Direct a log message to a specific player.  If no player is",
"     * specified, then all players will receive the message",
"     *",
"     */",
"    player?: minecraftserver.Player;",
"    /**",
"     * @remarks",
"     * Add additional tags to the log message which can be used by",
"     * the client session to filter/search in the log window",
"     *",
"     */",
"    tags?: string[];",
"}",
"/**",
" * Parameters for creating a modal tool in the tool container",
" */",
"export interface ModalToolCreationParameters {",
"    /**",
"     * @remarks",
"     * Action associated with tool activation",
"     *",
"     */",
"    action?: RegisteredAction<NoArgsAction>;",
"    /**",
"     * @remarks",
"     * Icon resource",
"     *",
"     */",
"    icon?: string;",
"    /**",
"     * @remarks",
"     * Localized title of the tool",
"     *",
"     */",
"    title?: string;",
"    /**",
"     * @remarks",
"     * Tooltip description of the tool",
"     *",
"     */",
"    tooltip?: string;",
"}",
"export interface ProjectExportOptions {",
"    alwaysDay?: boolean;",
"    difficulty?: minecraftserver.Difficulty;",
"    disableWeather?: boolean;",
"    exportName?: string;",
"    exportType: ProjectExportType;",
"    gameMode?: minecraftserver.GameMode;",
"    initialTimOfDay?: number;",
"}",
"export interface QuickExtrudeProperties {",
"    checkForAdjacentFace?: boolean;",
"    contiguousSelectionBlockList?: string[];",
"    contiguousSelectionType?: ContiguousSelectionType;",
"    isShrink?: boolean;",
"    layerCount?: number;",
"    selectionDirection?: number;",
"    size?: number;",
"    startingLocation?: minecraftserver.Vector3;",
"}",
"export interface WeightedBlock {",
"    block: minecraftserver.BlockType;",
"    weight: number;",
"}",
"export interface WidgetComponentBaseOptions {",
"    lockToSurface?: boolean;",
"    offset?: minecraftserver.Vector3;",
"    visible?: boolean;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentBoundingBoxOptions extends WidgetComponentBaseOptions {",
"    boundsOffset?: minecraftserver.Vector3;",
"    enableResizeHandles?: Axis;",
"    hullColor?: minecraftserver.RGBA;",
"    maxSize?: minecraftserver.Vector3;",
"    minSize?: minecraftserver.Vector3;",
"    mirror?: minecraftserver.StructureMirrorAxis;",
"    normalizedOrigin?: minecraftserver.Vector3;",
"    outlineColor?: minecraftserver.RGBA;",
"    rotation?: minecraftserver.StructureRotation;",
"    showWorldIntersections?: boolean;",
"    stateChangeEvent?: (arg0: WidgetComponentBoundingBoxStateChangeEventParameters) => void;",
"    visibleHull?: boolean;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentClipboardOptions extends WidgetComponentBaseOptions {",
"    clipboardOffset?: minecraftserver.Vector3;",
"    highlightHullColor?: minecraftserver.RGBA;",
"    highlightOutlineColor?: minecraftserver.RGBA;",
"    hullColor?: minecraftserver.RGBA;",
"    mirror?: minecraftserver.StructureMirrorAxis;",
"    normalizedOrigin?: minecraftserver.Vector3;",
"    outlineColor?: minecraftserver.RGBA;",
"    rotation?: minecraftserver.StructureRotation;",
"    showOutline?: boolean;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentEntityOptions extends WidgetComponentBaseOptions {",
"    deselectedAnimation?: string;",
"    isClickable?: boolean;",
"    selectedAnimation?: string;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentGizmoOptions extends WidgetComponentBaseOptions {",
"    axes?: Axis;",
"    enablePlanes?: boolean;",
"    normalizedAutoOffset?: minecraftserver.Vector3;",
"    stateChangeEvent?: (arg0: WidgetComponentGizmoStateChangeEventParameters) => void;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentGuideOptions extends WidgetComponentBaseOptions {}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentRenderPrimitiveOptions extends WidgetComponentBaseOptions {}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentSplineOptions extends WidgetComponentBaseOptions {",
"    controlPoints: Widget[];",
"    splineType?: SplineType;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentTextOptions extends WidgetComponentBaseOptions {",
"    color?: minecraftserver.RGBA;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export interface WidgetComponentVolumeOutlineOptions extends WidgetComponentBaseOptions {",
"    highlightHullColor?: minecraftserver.RGBA;",
"    highlightOutlineColor?: minecraftserver.RGBA;",
"    hullColor?: minecraftserver.RGBA;",
"    mirror?: minecraftserver.StructureMirrorAxis;",
"    normalizedOrigin?: minecraftserver.Vector3;",
"    outlineColor?: minecraftserver.RGBA;",
"    rotation?: minecraftserver.StructureRotation;",
"    showHighlightOutline?: boolean;",
"    showOutline?: boolean;",
"    volumeOffset?: minecraftserver.Vector3;",
"}",
"export interface WidgetCreateOptions {",
"    bindPositionToBlockCursor?: boolean;",
"    collisionOffset?: minecraftserver.Vector3;",
"    collisionRadius?: number;",
"    lockToSurface?: boolean;",
"    selectable?: boolean;",
"    snapToBlockLocation?: boolean;",
"    stateChangeEvent?: (arg0: WidgetStateChangeEventData) => void;",
"    visible?: boolean;",
"    widgetName?: string;",
"    worldBoundsMax?: minecraftserver.Vector3;",
"    worldBoundsMin?: minecraftserver.Vector3;",
"}",
"export interface WidgetGroupCreateOptions {",
"    groupSelectionMode?: WidgetGroupSelectionMode;",
"    showBounds?: boolean;",
"    visible?: boolean;",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidWidgetComponentError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidWidgetError extends Error {",
"    private constructor();",
"}",
"// @ts-ignore Class inheritance allowed for native defined classes",
"export class InvalidWidgetGroupError extends Error {",
"    private constructor();",
"}",
"/**",
" * @remarks",
" * Deserialize anything, defaults to the same behavior as",
" * JSON.parse but will use custom deserializers passed into",
" * {@link registerSerializationForType}.",
" *",
" */",
"export declare function deserialize(s: string): unknown;",
"/**",
" * @remarks",
" * Executes an operation over a selection via chunks to allow",
" * splitting operation over multiple game ticks",
" *",
" * @param operation",
" * the operation to apply over each block location",
" */",
"export declare function executeLargeOperation(",
"    volume: RelativeVolumeListBlockVolume,",
"    operation: (blockLocation: minecraftserver.Vector3) => void,",
"): Promise<void>;",
"/**",
" * @remarks",
" * Executes an operation over a BlockLocationIterator via",
" * chunks to allow splitting operation over multiple game ticks",
" *",
" * @param blockLocationIterator",
" * the selection to iterator over",
" * @param operation",
" * the operation to apply over each block location",
" */",
"export declare function executeLargeOperationFromIterator(",
"    blockLocationIterator: minecraftserver.BlockLocationIterator,",
"    operation: (blockLocation: minecraftserver.Vector3) => void,",
"): Promise<void>;",
"/**",
" * @remarks",
" * Returns a string array of the default block types for editor",
" * operations. Can be used to further filter blocks. This will",
" * throw if called in early execution.",
" *",
" * @returns",
" * Default allowed block list",
" */",
"export declare function getDefaultAllowBlockList(): string[];",
"/**",
" * @remarks",
" * Returns a list of default core brush shapes",
" *",
" * @param excludeList",
" * List of shape types to exclude",
" */",
"export declare function getDefaultBrushShapes(excludeList?: CoreBrushShapeType[]): BrushShape[];",
"/**",
" * @remarks",
" * Creates an observable object that stores a value state.",
" *",
" * @param initialValue",
" * Initial value of the observable.",
" * @param validator",
" * Optional validator to use for the setter.",
" */",
"export declare function makeObservable<T>(initialValue: T, validator?: ObservableValidator<T>): IObservable<T>;",
"/**",
" * @remarks",
" * Registers an editor extension into Minecraft. This function",
" * calls underlying functionality to register an extension but",
" * provides helpful and contextual wrappers for individual",
" * client lifetimes. The onActivation function is called",
" * whenever a client joins a session, while the shutdown is",
" * called when a client leaves. There may be other",
" * circumstances in which these are called as well based on",
" * client state that is an implementation detail of the system.",
" *",
" */",
"export declare function registerEditorExtension<PerPlayerStorageType = Record<string, never>>(",
"    extensionName: string,",
"    activationFunction: ActivationFunctionType<PerPlayerStorageType>,",
"    shutdownFunction: ShutdownFunctionType<PerPlayerStorageType>,",
"    options?: IRegisterExtensionOptionalParameters,",
"): Extension;",
"/**",
" * @remarks",
" * Register a type to have custom serialization/deserialization",
" * when using {@link serialize} and {@link deserialize}.",
" *",
" */",
"export declare function registerSerializationForType<T>(",
"    typeConstructor: Function,",
"    name: string,",
"    serializer: (obj: T) => Record<string, unknown>,",
"    deserializer: (vals: Record<string, unknown>) => T,",
"): void;",
"/**",
" * @remarks",
" * Creates a strongly typed transaction handle to enforce type",
" * safety when adding user defined transactions. This function",
" * is a wrapper around the more generalized transaction manager",
" * API for script based transactions. Any Editor Extension that",
" * needs to insert data into the transaction log for undo/redo",
" * should use this function to create a handler for the",
" * specific type of data that needs to be inserted. When a",
" * transaction is undone/redone, the associated handler",
" * function will be invoked with a copy of the payload data",
" * that was inserted into the log. As a general rule,",
" * transaction data should contain 2 things:<br> 1. The data",
" * that will be used to perform the operation we're trying to",
" * record<br> 2. The data that will be used to restore the",
" * state of the program to what it was before the",
" * operation.<br> NOTE/WARNING:<br> The payload data is",
" * serialized to JSON before being inserted into the",
" * transaction log and the underlying implementation uses the",
" * JSON.stringify() function to serialize the data. Any",
" * non-primitive data, such as classes or minecraft native",
" * objects will not serialize to JSON properly, so you should",
" * avoid using them as payload data.",
" *",
" * @param transactionManager",
" * A reference to the TransactionManager (from the extension",
" * context for your extension)",
" * @param undoHandler",
" * A function that will be invoked when the transaction is",
" * undone. The function will be passed a copy of the payload",
" * data that was inserted into the transaction log.",
" * @param redoHandler",
" * A function that will be invoked when the transaction is",
" * redone. The function will be passed a copy of the payload",
" * data that was inserted into the transaction log.",
" * @returns",
" * - {@link UserDefinedTransactionHandle} - A strongly typed",
" * transaction handle that can be used to add transactions to",
" * the transaction manager.",
" */",
"export declare function registerUserDefinedTransactionHandler<T>(",
"    transactionManager: TransactionManager,",
"    undoHandler: (payload: T) => void,",
"    redoHandler: (payload: T) => void,",
"): UserDefinedTransactionHandle<T>;",
"/**",
" * @remarks",
" * Serialize anything, defaults to the same behavior as",
" * JSON.stringify but will use custom serializers passed into",
" * {@link registerSerializationForType}.",
" *",
" */",
"export declare function serialize(obj: unknown): string;",
"/**",
" * @remarks",
" * Small utility for getting a string from an unknown exception",
" * type",
" *",
" */",
"export declare function stringFromException(e: unknown): string;",
"export const editor: MinecraftEditor;",
""]}]}