/*! For license information please see Main.js.LICENSE.txt */
import * as __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__ from "@minecraft/server-editor";

import * as __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__ from "@minecraft/server";

var __webpack_require__ = {};

(() => {
    __webpack_require__.d = (exports, definition) => {
        for (var key in definition) {
            if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
                Object.defineProperty(exports, key, {
                    enumerable: true,
                    get: definition[key]
                });
            }
        }
    };
})();

(() => {
    __webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop);
})();

var __webpack_exports__ = {};

var x = y => {
    var x = {};
    __webpack_require__.d(x, y);
    return x;
};

var y = x => () => x;

const server_editor_namespaceObject = x({
    ["ActionTypes"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.ActionTypes,
    ["ClipboardMirrorAxis"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.ClipboardMirrorAxis,
    ["ClipboardRotation"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.ClipboardRotation,
    ["CursorControlMode"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.CursorControlMode,
    ["CursorTargetMode"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.CursorTargetMode,
    ["EditorInputContext"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.EditorInputContext,
    ["EditorMode"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.EditorMode,
    ["EditorStatusBarAlignment"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.EditorStatusBarAlignment,
    ["InputModifier"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.InputModifier,
    ["KeyboardKey"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.KeyboardKey,
    ["MouseActionType"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.MouseActionType,
    ["MouseInputType"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.MouseInputType,
    ["PlaytestSessionResult"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.PlaytestSessionResult,
    ["bindDataSource"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.bindDataSource,
    ["editor"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.editor,
    ["executeLargeOperation"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.executeLargeOperation,
    ["getBlockPickerDefaultAllowBlockList"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.getBlockPickerDefaultAllowBlockList,
    ["getLocalizationId"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.getLocalizationId,
    ["registerEditorExtension"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_editor_81aed4a5__.registerEditorExtension
});

var server_x = y => {
    var x = {};
    __webpack_require__.d(x, y);
    return x;
};

var server_y = x => () => x;

const server_namespaceObject = server_x({
    ["BlockVolumeUtils"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.BlockVolumeUtils,
    ["BoundingBoxUtils"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.BoundingBoxUtils,
    ["CompoundBlockVolumeAction"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.CompoundBlockVolumeAction,
    ["CompoundBlockVolumePositionRelativity"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.CompoundBlockVolumePositionRelativity,
    ["Difficulty"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.Difficulty,
    ["EasingType"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.EasingType,
    ["GameMode"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.GameMode,
    ["TicksPerSecond"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.TicksPerSecond,
    ["TimeOfDay"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.TimeOfDay,
    ["Vector"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.Vector,
    ["WeatherType"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.WeatherType,
    ["system"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.system,
    ["world"]: () => __WEBPACK_EXTERNAL_MODULE__minecraft_server_fb7572af__.world
});

function clamp(val, min, max) {
    return Math.min(Math.max(val, min), max);
}

function stringFromException(e) {
    if (typeof e === "string") {
        return e;
    } else if (typeof e === "object" && e !== null && "message" in e) {
        return e.message;
    }
    return "Unknown exception";
}

class vector_utils_Vector3Utils {
    static equals(v1, v2) {
        return v1.x === v2.x && v1.y === v2.y && v1.z === v2.z;
    }
    static add(v1, v2) {
        return {
            x: v1.x + v2.x,
            y: v1.y + v2.y,
            z: v1.z + v2.z
        };
    }
    static subtract(v1, v2) {
        return {
            x: v1.x - v2.x,
            y: v1.y - v2.y,
            z: v1.z - v2.z
        };
    }
    static dot(a, b) {
        return a.x * b.x + a.y * b.y + a.z * b.z;
    }
    static scale(a, s) {
        const v = a;
        v.x *= s;
        v.y *= s;
        v.z *= s;
        return v;
    }
    static make(x, y, z) {
        return {
            x,
            y,
            z
        };
    }
    static floor(v) {
        return {
            x: Math.floor(v.x),
            y: Math.floor(v.y),
            z: Math.floor(v.z)
        };
    }
    static toString(v, options) {
        const decimals = options?.decimals ?? 2;
        const str = [ v.x.toFixed(decimals), v.y.toFixed(decimals), v.z.toFixed(decimals) ];
        return str.join(options?.delimiter ?? ", ");
    }
    static clamp(v, limits) {
        return {
            x: clamp(v.x, limits.minX ?? Number.MIN_SAFE_INTEGER, limits.maxX ?? Number.MAX_SAFE_INTEGER),
            y: clamp(v.y, limits.minY ?? Number.MIN_SAFE_INTEGER, limits.maxY ?? Number.MAX_SAFE_INTEGER),
            z: clamp(v.z, limits.minZ ?? Number.MIN_SAFE_INTEGER, limits.maxZ ?? Number.MAX_SAFE_INTEGER)
        };
    }
}

vector_utils_Vector3Utils.up = {
    x: 0,
    y: 1,
    z: 0
};

vector_utils_Vector3Utils.down = {
    x: 0,
    y: -1,
    z: 0
};

vector_utils_Vector3Utils.left = {
    x: -1,
    y: 0,
    z: 0
};

vector_utils_Vector3Utils.right = {
    x: 1,
    y: 0,
    z: 0
};

vector_utils_Vector3Utils.forward = {
    x: 0,
    y: 0,
    z: 1
};

vector_utils_Vector3Utils.back = {
    x: 0,
    y: 0,
    z: -1
};

vector_utils_Vector3Utils.one = {
    x: 1,
    y: 1,
    z: 1
};

vector_utils_Vector3Utils.zero = {
    x: 0,
    y: 0,
    z: 0
};

vector_utils_Vector3Utils.west = {
    x: -1,
    y: 0,
    z: 0
};

vector_utils_Vector3Utils.east = {
    x: 1,
    y: 0,
    z: 0
};

vector_utils_Vector3Utils.north = {
    x: 0,
    y: 0,
    z: 1
};

vector_utils_Vector3Utils.south = {
    x: 0,
    y: 0,
    z: -1
};

class Vector2Utils {
    static toString(v, options) {
        const decimals = options?.decimals ?? 2;
        const str = [ v.x.toFixed(decimals), v.y.toFixed(decimals) ];
        return str.join(options?.delimiter ?? ", ");
    }
}

var Direction;

(function(Direction) {
    Direction[Direction["Forward"] = 0] = "Forward";
    Direction[Direction["Right"] = 1] = "Right";
    Direction[Direction["Back"] = 2] = "Back";
    Direction[Direction["Left"] = 3] = "Left";
    Direction[Direction["Up"] = 4] = "Up";
    Direction[Direction["Down"] = 5] = "Down";
})(Direction || (Direction = {}));

const directionLookup = {
    [Direction.Forward]: vector_utils_Vector3Utils.forward,
    [Direction.Right]: vector_utils_Vector3Utils.left,
    [Direction.Back]: vector_utils_Vector3Utils.back,
    [Direction.Left]: vector_utils_Vector3Utils.right,
    [Direction.Up]: vector_utils_Vector3Utils.up,
    [Direction.Down]: vector_utils_Vector3Utils.down
};

function getRotationCorrectedDirection(rotationY, realDirection) {
    if (realDirection === Direction.Up || realDirection === Direction.Down) {
        return realDirection;
    }
    const directionQuadrant = Math.floor((rotationY + 405 + realDirection * 90) % 360 / 90);
    return directionQuadrant;
}

function getRotationCorrectedDirectionVector(rotationY, realDirection) {
    const relativeDirection = getRotationCorrectedDirection(rotationY, realDirection);
    return directionLookup[relativeDirection];
}

function getDirectionVector(direction) {
    return directionLookup[direction];
}

function getScaledDirectionVector(direction, scale) {
    const vec = Vector3Utils.scale(getDirectionVector(direction), scale);
    return vec;
}

function shrinkVolumeAlongAbsoluteAxis(volume, direction, amount) {
    const bounds = server_namespaceObject.BlockVolumeUtils.getBoundingBox(volume);
    const boundSize = server_namespaceObject.BoundingBoxUtils.getSpan(bounds);
    const min = bounds.min;
    const max = bounds.max;
    const spanX = boundSize.x;
    const spanY = boundSize.y;
    const spanZ = boundSize.z;
    switch (direction) {
      case Direction.Up:
        if (spanY > amount) {
            max.y -= amount;
        }
        break;

      case Direction.Down:
        if (spanY > amount) {
            min.y += amount;
        }
        break;

      case Direction.Forward:
        if (spanZ > amount) {
            max.z -= amount;
        }
        break;

      case Direction.Back:
        if (spanZ > amount) {
            min.z += amount;
        }
        break;

      case Direction.Left:
        if (spanX > amount) {
            max.x -= amount;
        }
        break;

      case Direction.Right:
        if (spanX > amount) {
            min.x += amount;
        }
        break;
    }
    return {
        from: min,
        to: max
    };
}

function shrinkVolumeAlongViewAxis(volume, rotationY, direction, amount) {
    const relativeDirection = getRotationCorrectedDirection(rotationY, direction);
    return shrinkVolumeAlongAbsoluteAxis(volume, relativeDirection, amount);
}

function growVolumeAlongAbsoluteAxis(volume, direction, amount) {
    const maxAxialLength = 100;
    if (amount > maxAxialLength) {
        amount = maxAxialLength;
    }
    const bounds = server_namespaceObject.BlockVolumeUtils.getBoundingBox(volume);
    const boundSize = server_namespaceObject.BoundingBoxUtils.getSpan(bounds);
    const min = bounds.min;
    const max = bounds.max;
    const spanX = boundSize.x;
    const spanY = boundSize.y;
    const spanZ = boundSize.z;
    switch (direction) {
      case Direction.Up:
        if (spanY + amount > maxAxialLength) {
            amount = maxAxialLength - spanY;
        }
        max.y += amount;
        break;

      case Direction.Down:
        if (spanY + amount > maxAxialLength) {
            amount = maxAxialLength - spanY;
        }
        min.y -= amount;
        break;

      case Direction.Forward:
        if (spanZ + amount > maxAxialLength) {
            amount = maxAxialLength - spanZ;
        }
        max.z += amount;
        break;

      case Direction.Back:
        if (spanZ + amount > maxAxialLength) {
            amount = maxAxialLength - spanZ;
        }
        min.z -= amount;
        break;

      case Direction.Left:
        if (spanX + amount > maxAxialLength) {
            amount = maxAxialLength - spanX;
        }
        max.x += amount;
        break;

      case Direction.Right:
        if (spanX + amount > maxAxialLength) {
            amount = maxAxialLength - spanX;
        }
        min.x -= amount;
        break;
    }
    return {
        from: min,
        to: max
    };
}

function growVolumeAlongViewAxis(volume, rotationY, direction, amount) {
    const relativeDirection = getRotationCorrectedDirection(rotationY, direction);
    return growVolumeAlongAbsoluteAxis(volume, relativeDirection, amount);
}

var AxisPlanes;

(function(AxisPlanes) {
    AxisPlanes[AxisPlanes["XZ"] = 0] = "XZ";
    AxisPlanes[AxisPlanes["XY"] = 1] = "XY";
    AxisPlanes[AxisPlanes["YZ"] = 2] = "YZ";
})(AxisPlanes || (AxisPlanes = {}));

const axisNormalLookup = {
    [AxisPlanes.XZ]: vector_utils_Vector3Utils.up,
    [AxisPlanes.XY]: vector_utils_Vector3Utils.forward,
    [AxisPlanes.YZ]: vector_utils_Vector3Utils.left
};

function getAxisNormal(axis) {
    return axisNormalLookup[axis];
}

function getRelativeXYAxisAsNormal(rotation) {
    const direction = getRotationCorrectedDirection(rotation, Direction.Forward);
    switch (direction) {
      case Direction.Forward:
      case Direction.Back:
        return axisNormalLookup[AxisPlanes.XY];

      case Direction.Right:
      case Direction.Left:
        return axisNormalLookup[AxisPlanes.YZ];

      default:
        throw "Invalid quadrant";
    }
}

function intersectRayPlane(rayLocation, rayDirection, planeNormal, planeDistance) {
    const denominator = vector_utils_Vector3Utils.dot(rayDirection, planeNormal);
    if (denominator !== 0) {
        const t = -(vector_utils_Vector3Utils.dot(rayLocation, planeNormal) + planeDistance) / denominator;
        if (t < 0) {
            return undefined;
        }
        const scaledDirection = vector_utils_Vector3Utils.scale(rayDirection, t);
        const result = vector_utils_Vector3Utils.add(rayLocation, scaledDirection);
        return result;
    } else if (vector_utils_Vector3Utils.dot(planeNormal, rayLocation) + planeDistance === 0) {
        return rayLocation;
    }
    return undefined;
}

var BlockLineType;

(function(BlockLineType) {
    BlockLineType[BlockLineType["Direct"] = 0] = "Direct";
    BlockLineType[BlockLineType["Staggered"] = 1] = "Staggered";
    BlockLineType[BlockLineType["Contour"] = 2] = "Contour";
})(BlockLineType || (BlockLineType = {}));

class BlockLineLocationIterator {
    constructor(data) {
        this.data = data;
        this.index = 0;
    }
    [Symbol.iterator]() {
        return {
            next: () => this.next()
        };
    }
    next() {
        if (this.index < this.data.length) {
            return {
                value: this.data[this.index++],
                done: false
            };
        } else {
            return {
                value: undefined,
                done: true
            };
        }
    }
}

class BlockLine {
    constructor(start, end, options) {
        this.data = [];
        this.start = start;
        this.end = end;
        if (options) {
            this.options = options;
        } else {
            this.options = {
                width: 1,
                height: 1,
                mode: BlockLineType.Direct
            };
        }
        this.generateLine();
    }
    plotBresenhamLine3D(start, end) {
        const line = [];
        line.push({
            x: start.x,
            y: start.y,
            z: start.z
        });
        const dx = Math.abs(end.x - start.x);
        const dy = Math.abs(end.y - start.y);
        const dz = Math.abs(end.z - start.z);
        const xs = end.x > start.x ? 1 : -1;
        const ys = end.y > start.y ? 1 : -1;
        const zs = end.z > start.z ? 1 : -1;
        if (dx >= dy && dx >= dz) {
            let p0 = 2 * dy - dx;
            let p1 = 2 * dz - dx;
            let x0 = start.x;
            let y0 = start.y;
            let z0 = start.z;
            while (x0 !== end.x) {
                x0 += xs;
                if (p0 >= 0) {
                    y0 += ys;
                    p0 -= 2 * dx;
                }
                if (p1 >= 0) {
                    z0 += zs;
                    p1 -= 2 * dx;
                }
                p0 += 2 * dy;
                p1 += 2 * dz;
                line.push({
                    x: x0,
                    y: y0,
                    z: z0
                });
            }
        } else if (dy >= dx && dy >= dz) {
            let p0 = 2 * dx - dy;
            let p1 = 2 * dz - dy;
            let y0 = start.y;
            let x0 = start.x;
            let z0 = start.z;
            while (y0 !== end.y) {
                y0 += ys;
                if (p0 >= 0) {
                    x0 += xs;
                    p0 -= 2 * dy;
                }
                if (p1 >= 0) {
                    z0 += zs;
                    p1 -= 2 * dy;
                }
                p0 += 2 * dx;
                p1 += 2 * dz;
                line.push({
                    x: x0,
                    y: y0,
                    z: z0
                });
            }
        } else {
            let p0 = 2 * dy - dz;
            let p1 = 2 * dx - dz;
            let z0 = start.z;
            let x0 = start.x;
            let y0 = start.y;
            while (z0 !== end.z) {
                z0 += zs;
                if (p0 >= 0) {
                    y0 += ys;
                    p0 -= 2 * dz;
                }
                if (p1 >= 0) {
                    x0 += xs;
                    p1 -= 2 * dz;
                }
                p0 += 2 * dy;
                p1 += 2 * dx;
                line.push({
                    x: x0,
                    y: y0,
                    z: z0
                });
            }
        }
        return line;
    }
    plotManhattanLine3D(start, end) {
        const line = [];
        let x = start.x;
        let y = start.y;
        let z = start.z;
        line.push({
            x,
            y,
            z
        });
        while (x !== end.x || y !== end.y || z !== end.z) {
            if (x < end.x) {
                x++;
                line.push({
                    x,
                    y,
                    z
                });
            } else if (x > end.x) {
                x--;
                line.push({
                    x,
                    y,
                    z
                });
            }
            if (y < end.y) {
                y++;
                line.push({
                    x,
                    y,
                    z
                });
            } else if (y > end.y) {
                y--;
                line.push({
                    x,
                    y,
                    z
                });
            }
            if (z < end.z) {
                z++;
                line.push({
                    x,
                    y,
                    z
                });
            } else if (z > end.z) {
                z--;
                line.push({
                    x,
                    y,
                    z
                });
            }
        }
        return line;
    }
    generateLine() {
        switch (this.options.mode) {
          case BlockLineType.Direct:
            this.data = this.plotBresenhamLine3D(this.start, this.end);
            break;

          case BlockLineType.Staggered:
            this.data = this.plotManhattanLine3D(this.start, this.end);
            break;

          default:
            this.data = [];
            break;
        }
    }
    setStart(start) {
        this.start = start;
        this.generateLine();
    }
    setEnd(end) {
        this.end = end;
        this.generateLine();
    }
    moveLine(vec) {
        this.start = {
            x: this.start.x + vec.x,
            y: this.start.y + vec.y,
            z: this.start.z + vec.z
        };
        this.end = {
            x: this.end.x,
            y: this.end.y + vec.y,
            z: this.end.z + vec.z
        };
        this.generateLine();
    }
    getBlockLineLocationIterator() {
        return new BlockLineLocationIterator(this.data);
    }
}

var MinecraftBlockTypes = (MinecraftBlockTypes2 => {
    MinecraftBlockTypes2["AcaciaButton"] = "minecraft:acacia_button";
    MinecraftBlockTypes2["AcaciaDoor"] = "minecraft:acacia_door";
    MinecraftBlockTypes2["AcaciaFence"] = "minecraft:acacia_fence";
    MinecraftBlockTypes2["AcaciaFenceGate"] = "minecraft:acacia_fence_gate";
    MinecraftBlockTypes2["AcaciaHangingSign"] = "minecraft:acacia_hanging_sign";
    MinecraftBlockTypes2["AcaciaLog"] = "minecraft:acacia_log";
    MinecraftBlockTypes2["AcaciaPressurePlate"] = "minecraft:acacia_pressure_plate";
    MinecraftBlockTypes2["AcaciaStairs"] = "minecraft:acacia_stairs";
    MinecraftBlockTypes2["AcaciaStandingSign"] = "minecraft:acacia_standing_sign";
    MinecraftBlockTypes2["AcaciaTrapdoor"] = "minecraft:acacia_trapdoor";
    MinecraftBlockTypes2["AcaciaWallSign"] = "minecraft:acacia_wall_sign";
    MinecraftBlockTypes2["ActivatorRail"] = "minecraft:activator_rail";
    MinecraftBlockTypes2["Air"] = "minecraft:air";
    MinecraftBlockTypes2["Allow"] = "minecraft:allow";
    MinecraftBlockTypes2["AmethystBlock"] = "minecraft:amethyst_block";
    MinecraftBlockTypes2["AmethystCluster"] = "minecraft:amethyst_cluster";
    MinecraftBlockTypes2["AncientDebris"] = "minecraft:ancient_debris";
    MinecraftBlockTypes2["AndesiteStairs"] = "minecraft:andesite_stairs";
    MinecraftBlockTypes2["Anvil"] = "minecraft:anvil";
    MinecraftBlockTypes2["Azalea"] = "minecraft:azalea";
    MinecraftBlockTypes2["AzaleaLeaves"] = "minecraft:azalea_leaves";
    MinecraftBlockTypes2["AzaleaLeavesFlowered"] = "minecraft:azalea_leaves_flowered";
    MinecraftBlockTypes2["Bamboo"] = "minecraft:bamboo";
    MinecraftBlockTypes2["BambooBlock"] = "minecraft:bamboo_block";
    MinecraftBlockTypes2["BambooButton"] = "minecraft:bamboo_button";
    MinecraftBlockTypes2["BambooDoor"] = "minecraft:bamboo_door";
    MinecraftBlockTypes2["BambooDoubleSlab"] = "minecraft:bamboo_double_slab";
    MinecraftBlockTypes2["BambooFence"] = "minecraft:bamboo_fence";
    MinecraftBlockTypes2["BambooFenceGate"] = "minecraft:bamboo_fence_gate";
    MinecraftBlockTypes2["BambooHangingSign"] = "minecraft:bamboo_hanging_sign";
    MinecraftBlockTypes2["BambooMosaic"] = "minecraft:bamboo_mosaic";
    MinecraftBlockTypes2["BambooMosaicDoubleSlab"] = "minecraft:bamboo_mosaic_double_slab";
    MinecraftBlockTypes2["BambooMosaicSlab"] = "minecraft:bamboo_mosaic_slab";
    MinecraftBlockTypes2["BambooMosaicStairs"] = "minecraft:bamboo_mosaic_stairs";
    MinecraftBlockTypes2["BambooPlanks"] = "minecraft:bamboo_planks";
    MinecraftBlockTypes2["BambooPressurePlate"] = "minecraft:bamboo_pressure_plate";
    MinecraftBlockTypes2["BambooSapling"] = "minecraft:bamboo_sapling";
    MinecraftBlockTypes2["BambooSlab"] = "minecraft:bamboo_slab";
    MinecraftBlockTypes2["BambooStairs"] = "minecraft:bamboo_stairs";
    MinecraftBlockTypes2["BambooStandingSign"] = "minecraft:bamboo_standing_sign";
    MinecraftBlockTypes2["BambooTrapdoor"] = "minecraft:bamboo_trapdoor";
    MinecraftBlockTypes2["BambooWallSign"] = "minecraft:bamboo_wall_sign";
    MinecraftBlockTypes2["Barrel"] = "minecraft:barrel";
    MinecraftBlockTypes2["Barrier"] = "minecraft:barrier";
    MinecraftBlockTypes2["Basalt"] = "minecraft:basalt";
    MinecraftBlockTypes2["Beacon"] = "minecraft:beacon";
    MinecraftBlockTypes2["Bed"] = "minecraft:bed";
    MinecraftBlockTypes2["Bedrock"] = "minecraft:bedrock";
    MinecraftBlockTypes2["BeeNest"] = "minecraft:bee_nest";
    MinecraftBlockTypes2["Beehive"] = "minecraft:beehive";
    MinecraftBlockTypes2["Beetroot"] = "minecraft:beetroot";
    MinecraftBlockTypes2["Bell"] = "minecraft:bell";
    MinecraftBlockTypes2["BigDripleaf"] = "minecraft:big_dripleaf";
    MinecraftBlockTypes2["BirchButton"] = "minecraft:birch_button";
    MinecraftBlockTypes2["BirchDoor"] = "minecraft:birch_door";
    MinecraftBlockTypes2["BirchFence"] = "minecraft:birch_fence";
    MinecraftBlockTypes2["BirchFenceGate"] = "minecraft:birch_fence_gate";
    MinecraftBlockTypes2["BirchHangingSign"] = "minecraft:birch_hanging_sign";
    MinecraftBlockTypes2["BirchLog"] = "minecraft:birch_log";
    MinecraftBlockTypes2["BirchPressurePlate"] = "minecraft:birch_pressure_plate";
    MinecraftBlockTypes2["BirchStairs"] = "minecraft:birch_stairs";
    MinecraftBlockTypes2["BirchStandingSign"] = "minecraft:birch_standing_sign";
    MinecraftBlockTypes2["BirchTrapdoor"] = "minecraft:birch_trapdoor";
    MinecraftBlockTypes2["BirchWallSign"] = "minecraft:birch_wall_sign";
    MinecraftBlockTypes2["BlackCandle"] = "minecraft:black_candle";
    MinecraftBlockTypes2["BlackCandleCake"] = "minecraft:black_candle_cake";
    MinecraftBlockTypes2["BlackCarpet"] = "minecraft:black_carpet";
    MinecraftBlockTypes2["BlackConcrete"] = "minecraft:black_concrete";
    MinecraftBlockTypes2["BlackConcretePowder"] = "minecraft:black_concrete_powder";
    MinecraftBlockTypes2["BlackGlazedTerracotta"] = "minecraft:black_glazed_terracotta";
    MinecraftBlockTypes2["BlackShulkerBox"] = "minecraft:black_shulker_box";
    MinecraftBlockTypes2["BlackStainedGlass"] = "minecraft:black_stained_glass";
    MinecraftBlockTypes2["BlackStainedGlassPane"] = "minecraft:black_stained_glass_pane";
    MinecraftBlockTypes2["BlackTerracotta"] = "minecraft:black_terracotta";
    MinecraftBlockTypes2["BlackWool"] = "minecraft:black_wool";
    MinecraftBlockTypes2["Blackstone"] = "minecraft:blackstone";
    MinecraftBlockTypes2["BlackstoneDoubleSlab"] = "minecraft:blackstone_double_slab";
    MinecraftBlockTypes2["BlackstoneSlab"] = "minecraft:blackstone_slab";
    MinecraftBlockTypes2["BlackstoneStairs"] = "minecraft:blackstone_stairs";
    MinecraftBlockTypes2["BlackstoneWall"] = "minecraft:blackstone_wall";
    MinecraftBlockTypes2["BlastFurnace"] = "minecraft:blast_furnace";
    MinecraftBlockTypes2["BlueCandle"] = "minecraft:blue_candle";
    MinecraftBlockTypes2["BlueCandleCake"] = "minecraft:blue_candle_cake";
    MinecraftBlockTypes2["BlueCarpet"] = "minecraft:blue_carpet";
    MinecraftBlockTypes2["BlueConcrete"] = "minecraft:blue_concrete";
    MinecraftBlockTypes2["BlueConcretePowder"] = "minecraft:blue_concrete_powder";
    MinecraftBlockTypes2["BlueGlazedTerracotta"] = "minecraft:blue_glazed_terracotta";
    MinecraftBlockTypes2["BlueIce"] = "minecraft:blue_ice";
    MinecraftBlockTypes2["BlueShulkerBox"] = "minecraft:blue_shulker_box";
    MinecraftBlockTypes2["BlueStainedGlass"] = "minecraft:blue_stained_glass";
    MinecraftBlockTypes2["BlueStainedGlassPane"] = "minecraft:blue_stained_glass_pane";
    MinecraftBlockTypes2["BlueTerracotta"] = "minecraft:blue_terracotta";
    MinecraftBlockTypes2["BlueWool"] = "minecraft:blue_wool";
    MinecraftBlockTypes2["BoneBlock"] = "minecraft:bone_block";
    MinecraftBlockTypes2["Bookshelf"] = "minecraft:bookshelf";
    MinecraftBlockTypes2["BorderBlock"] = "minecraft:border_block";
    MinecraftBlockTypes2["BrainCoral"] = "minecraft:brain_coral";
    MinecraftBlockTypes2["BrewingStand"] = "minecraft:brewing_stand";
    MinecraftBlockTypes2["BrickBlock"] = "minecraft:brick_block";
    MinecraftBlockTypes2["BrickStairs"] = "minecraft:brick_stairs";
    MinecraftBlockTypes2["BrownCandle"] = "minecraft:brown_candle";
    MinecraftBlockTypes2["BrownCandleCake"] = "minecraft:brown_candle_cake";
    MinecraftBlockTypes2["BrownCarpet"] = "minecraft:brown_carpet";
    MinecraftBlockTypes2["BrownConcrete"] = "minecraft:brown_concrete";
    MinecraftBlockTypes2["BrownConcretePowder"] = "minecraft:brown_concrete_powder";
    MinecraftBlockTypes2["BrownGlazedTerracotta"] = "minecraft:brown_glazed_terracotta";
    MinecraftBlockTypes2["BrownMushroom"] = "minecraft:brown_mushroom";
    MinecraftBlockTypes2["BrownMushroomBlock"] = "minecraft:brown_mushroom_block";
    MinecraftBlockTypes2["BrownShulkerBox"] = "minecraft:brown_shulker_box";
    MinecraftBlockTypes2["BrownStainedGlass"] = "minecraft:brown_stained_glass";
    MinecraftBlockTypes2["BrownStainedGlassPane"] = "minecraft:brown_stained_glass_pane";
    MinecraftBlockTypes2["BrownTerracotta"] = "minecraft:brown_terracotta";
    MinecraftBlockTypes2["BrownWool"] = "minecraft:brown_wool";
    MinecraftBlockTypes2["BubbleColumn"] = "minecraft:bubble_column";
    MinecraftBlockTypes2["BubbleCoral"] = "minecraft:bubble_coral";
    MinecraftBlockTypes2["BuddingAmethyst"] = "minecraft:budding_amethyst";
    MinecraftBlockTypes2["Cactus"] = "minecraft:cactus";
    MinecraftBlockTypes2["Cake"] = "minecraft:cake";
    MinecraftBlockTypes2["Calcite"] = "minecraft:calcite";
    MinecraftBlockTypes2["CalibratedSculkSensor"] = "minecraft:calibrated_sculk_sensor";
    MinecraftBlockTypes2["Camera"] = "minecraft:camera";
    MinecraftBlockTypes2["Campfire"] = "minecraft:campfire";
    MinecraftBlockTypes2["Candle"] = "minecraft:candle";
    MinecraftBlockTypes2["CandleCake"] = "minecraft:candle_cake";
    MinecraftBlockTypes2["Carrots"] = "minecraft:carrots";
    MinecraftBlockTypes2["CartographyTable"] = "minecraft:cartography_table";
    MinecraftBlockTypes2["CarvedPumpkin"] = "minecraft:carved_pumpkin";
    MinecraftBlockTypes2["Cauldron"] = "minecraft:cauldron";
    MinecraftBlockTypes2["CaveVines"] = "minecraft:cave_vines";
    MinecraftBlockTypes2["CaveVinesBodyWithBerries"] = "minecraft:cave_vines_body_with_berries";
    MinecraftBlockTypes2["CaveVinesHeadWithBerries"] = "minecraft:cave_vines_head_with_berries";
    MinecraftBlockTypes2["Chain"] = "minecraft:chain";
    MinecraftBlockTypes2["ChainCommandBlock"] = "minecraft:chain_command_block";
    MinecraftBlockTypes2["ChemicalHeat"] = "minecraft:chemical_heat";
    MinecraftBlockTypes2["ChemistryTable"] = "minecraft:chemistry_table";
    MinecraftBlockTypes2["CherryButton"] = "minecraft:cherry_button";
    MinecraftBlockTypes2["CherryDoor"] = "minecraft:cherry_door";
    MinecraftBlockTypes2["CherryDoubleSlab"] = "minecraft:cherry_double_slab";
    MinecraftBlockTypes2["CherryFence"] = "minecraft:cherry_fence";
    MinecraftBlockTypes2["CherryFenceGate"] = "minecraft:cherry_fence_gate";
    MinecraftBlockTypes2["CherryHangingSign"] = "minecraft:cherry_hanging_sign";
    MinecraftBlockTypes2["CherryLeaves"] = "minecraft:cherry_leaves";
    MinecraftBlockTypes2["CherryLog"] = "minecraft:cherry_log";
    MinecraftBlockTypes2["CherryPlanks"] = "minecraft:cherry_planks";
    MinecraftBlockTypes2["CherryPressurePlate"] = "minecraft:cherry_pressure_plate";
    MinecraftBlockTypes2["CherrySapling"] = "minecraft:cherry_sapling";
    MinecraftBlockTypes2["CherrySlab"] = "minecraft:cherry_slab";
    MinecraftBlockTypes2["CherryStairs"] = "minecraft:cherry_stairs";
    MinecraftBlockTypes2["CherryStandingSign"] = "minecraft:cherry_standing_sign";
    MinecraftBlockTypes2["CherryTrapdoor"] = "minecraft:cherry_trapdoor";
    MinecraftBlockTypes2["CherryWallSign"] = "minecraft:cherry_wall_sign";
    MinecraftBlockTypes2["CherryWood"] = "minecraft:cherry_wood";
    MinecraftBlockTypes2["Chest"] = "minecraft:chest";
    MinecraftBlockTypes2["ChiseledBookshelf"] = "minecraft:chiseled_bookshelf";
    MinecraftBlockTypes2["ChiseledDeepslate"] = "minecraft:chiseled_deepslate";
    MinecraftBlockTypes2["ChiseledNetherBricks"] = "minecraft:chiseled_nether_bricks";
    MinecraftBlockTypes2["ChiseledPolishedBlackstone"] = "minecraft:chiseled_polished_blackstone";
    MinecraftBlockTypes2["ChorusFlower"] = "minecraft:chorus_flower";
    MinecraftBlockTypes2["ChorusPlant"] = "minecraft:chorus_plant";
    MinecraftBlockTypes2["Clay"] = "minecraft:clay";
    MinecraftBlockTypes2["ClientRequestPlaceholderBlock"] = "minecraft:client_request_placeholder_block";
    MinecraftBlockTypes2["CoalBlock"] = "minecraft:coal_block";
    MinecraftBlockTypes2["CoalOre"] = "minecraft:coal_ore";
    MinecraftBlockTypes2["CobbledDeepslate"] = "minecraft:cobbled_deepslate";
    MinecraftBlockTypes2["CobbledDeepslateDoubleSlab"] = "minecraft:cobbled_deepslate_double_slab";
    MinecraftBlockTypes2["CobbledDeepslateSlab"] = "minecraft:cobbled_deepslate_slab";
    MinecraftBlockTypes2["CobbledDeepslateStairs"] = "minecraft:cobbled_deepslate_stairs";
    MinecraftBlockTypes2["CobbledDeepslateWall"] = "minecraft:cobbled_deepslate_wall";
    MinecraftBlockTypes2["Cobblestone"] = "minecraft:cobblestone";
    MinecraftBlockTypes2["CobblestoneWall"] = "minecraft:cobblestone_wall";
    MinecraftBlockTypes2["Cocoa"] = "minecraft:cocoa";
    MinecraftBlockTypes2["ColoredTorchBp"] = "minecraft:colored_torch_bp";
    MinecraftBlockTypes2["ColoredTorchRg"] = "minecraft:colored_torch_rg";
    MinecraftBlockTypes2["CommandBlock"] = "minecraft:command_block";
    MinecraftBlockTypes2["Composter"] = "minecraft:composter";
    MinecraftBlockTypes2["Conduit"] = "minecraft:conduit";
    MinecraftBlockTypes2["CopperBlock"] = "minecraft:copper_block";
    MinecraftBlockTypes2["CopperOre"] = "minecraft:copper_ore";
    MinecraftBlockTypes2["CoralBlock"] = "minecraft:coral_block";
    MinecraftBlockTypes2["CoralFan"] = "minecraft:coral_fan";
    MinecraftBlockTypes2["CoralFanDead"] = "minecraft:coral_fan_dead";
    MinecraftBlockTypes2["CoralFanHang"] = "minecraft:coral_fan_hang";
    MinecraftBlockTypes2["CoralFanHang2"] = "minecraft:coral_fan_hang2";
    MinecraftBlockTypes2["CoralFanHang3"] = "minecraft:coral_fan_hang3";
    MinecraftBlockTypes2["CrackedDeepslateBricks"] = "minecraft:cracked_deepslate_bricks";
    MinecraftBlockTypes2["CrackedDeepslateTiles"] = "minecraft:cracked_deepslate_tiles";
    MinecraftBlockTypes2["CrackedNetherBricks"] = "minecraft:cracked_nether_bricks";
    MinecraftBlockTypes2["CrackedPolishedBlackstoneBricks"] = "minecraft:cracked_polished_blackstone_bricks";
    MinecraftBlockTypes2["CraftingTable"] = "minecraft:crafting_table";
    MinecraftBlockTypes2["CrimsonButton"] = "minecraft:crimson_button";
    MinecraftBlockTypes2["CrimsonDoor"] = "minecraft:crimson_door";
    MinecraftBlockTypes2["CrimsonDoubleSlab"] = "minecraft:crimson_double_slab";
    MinecraftBlockTypes2["CrimsonFence"] = "minecraft:crimson_fence";
    MinecraftBlockTypes2["CrimsonFenceGate"] = "minecraft:crimson_fence_gate";
    MinecraftBlockTypes2["CrimsonFungus"] = "minecraft:crimson_fungus";
    MinecraftBlockTypes2["CrimsonHangingSign"] = "minecraft:crimson_hanging_sign";
    MinecraftBlockTypes2["CrimsonHyphae"] = "minecraft:crimson_hyphae";
    MinecraftBlockTypes2["CrimsonNylium"] = "minecraft:crimson_nylium";
    MinecraftBlockTypes2["CrimsonPlanks"] = "minecraft:crimson_planks";
    MinecraftBlockTypes2["CrimsonPressurePlate"] = "minecraft:crimson_pressure_plate";
    MinecraftBlockTypes2["CrimsonRoots"] = "minecraft:crimson_roots";
    MinecraftBlockTypes2["CrimsonSlab"] = "minecraft:crimson_slab";
    MinecraftBlockTypes2["CrimsonStairs"] = "minecraft:crimson_stairs";
    MinecraftBlockTypes2["CrimsonStandingSign"] = "minecraft:crimson_standing_sign";
    MinecraftBlockTypes2["CrimsonStem"] = "minecraft:crimson_stem";
    MinecraftBlockTypes2["CrimsonTrapdoor"] = "minecraft:crimson_trapdoor";
    MinecraftBlockTypes2["CrimsonWallSign"] = "minecraft:crimson_wall_sign";
    MinecraftBlockTypes2["CryingObsidian"] = "minecraft:crying_obsidian";
    MinecraftBlockTypes2["CutCopper"] = "minecraft:cut_copper";
    MinecraftBlockTypes2["CutCopperSlab"] = "minecraft:cut_copper_slab";
    MinecraftBlockTypes2["CutCopperStairs"] = "minecraft:cut_copper_stairs";
    MinecraftBlockTypes2["CyanCandle"] = "minecraft:cyan_candle";
    MinecraftBlockTypes2["CyanCandleCake"] = "minecraft:cyan_candle_cake";
    MinecraftBlockTypes2["CyanCarpet"] = "minecraft:cyan_carpet";
    MinecraftBlockTypes2["CyanConcrete"] = "minecraft:cyan_concrete";
    MinecraftBlockTypes2["CyanConcretePowder"] = "minecraft:cyan_concrete_powder";
    MinecraftBlockTypes2["CyanGlazedTerracotta"] = "minecraft:cyan_glazed_terracotta";
    MinecraftBlockTypes2["CyanShulkerBox"] = "minecraft:cyan_shulker_box";
    MinecraftBlockTypes2["CyanStainedGlass"] = "minecraft:cyan_stained_glass";
    MinecraftBlockTypes2["CyanStainedGlassPane"] = "minecraft:cyan_stained_glass_pane";
    MinecraftBlockTypes2["CyanTerracotta"] = "minecraft:cyan_terracotta";
    MinecraftBlockTypes2["CyanWool"] = "minecraft:cyan_wool";
    MinecraftBlockTypes2["DarkOakButton"] = "minecraft:dark_oak_button";
    MinecraftBlockTypes2["DarkOakDoor"] = "minecraft:dark_oak_door";
    MinecraftBlockTypes2["DarkOakFence"] = "minecraft:dark_oak_fence";
    MinecraftBlockTypes2["DarkOakFenceGate"] = "minecraft:dark_oak_fence_gate";
    MinecraftBlockTypes2["DarkOakHangingSign"] = "minecraft:dark_oak_hanging_sign";
    MinecraftBlockTypes2["DarkOakLog"] = "minecraft:dark_oak_log";
    MinecraftBlockTypes2["DarkOakPressurePlate"] = "minecraft:dark_oak_pressure_plate";
    MinecraftBlockTypes2["DarkOakStairs"] = "minecraft:dark_oak_stairs";
    MinecraftBlockTypes2["DarkOakTrapdoor"] = "minecraft:dark_oak_trapdoor";
    MinecraftBlockTypes2["DarkPrismarineStairs"] = "minecraft:dark_prismarine_stairs";
    MinecraftBlockTypes2["DarkoakStandingSign"] = "minecraft:darkoak_standing_sign";
    MinecraftBlockTypes2["DarkoakWallSign"] = "minecraft:darkoak_wall_sign";
    MinecraftBlockTypes2["DaylightDetector"] = "minecraft:daylight_detector";
    MinecraftBlockTypes2["DaylightDetectorInverted"] = "minecraft:daylight_detector_inverted";
    MinecraftBlockTypes2["DeadBrainCoral"] = "minecraft:dead_brain_coral";
    MinecraftBlockTypes2["DeadBubbleCoral"] = "minecraft:dead_bubble_coral";
    MinecraftBlockTypes2["DeadFireCoral"] = "minecraft:dead_fire_coral";
    MinecraftBlockTypes2["DeadHornCoral"] = "minecraft:dead_horn_coral";
    MinecraftBlockTypes2["DeadTubeCoral"] = "minecraft:dead_tube_coral";
    MinecraftBlockTypes2["Deadbush"] = "minecraft:deadbush";
    MinecraftBlockTypes2["DecoratedPot"] = "minecraft:decorated_pot";
    MinecraftBlockTypes2["Deepslate"] = "minecraft:deepslate";
    MinecraftBlockTypes2["DeepslateBrickDoubleSlab"] = "minecraft:deepslate_brick_double_slab";
    MinecraftBlockTypes2["DeepslateBrickSlab"] = "minecraft:deepslate_brick_slab";
    MinecraftBlockTypes2["DeepslateBrickStairs"] = "minecraft:deepslate_brick_stairs";
    MinecraftBlockTypes2["DeepslateBrickWall"] = "minecraft:deepslate_brick_wall";
    MinecraftBlockTypes2["DeepslateBricks"] = "minecraft:deepslate_bricks";
    MinecraftBlockTypes2["DeepslateCoalOre"] = "minecraft:deepslate_coal_ore";
    MinecraftBlockTypes2["DeepslateCopperOre"] = "minecraft:deepslate_copper_ore";
    MinecraftBlockTypes2["DeepslateDiamondOre"] = "minecraft:deepslate_diamond_ore";
    MinecraftBlockTypes2["DeepslateEmeraldOre"] = "minecraft:deepslate_emerald_ore";
    MinecraftBlockTypes2["DeepslateGoldOre"] = "minecraft:deepslate_gold_ore";
    MinecraftBlockTypes2["DeepslateIronOre"] = "minecraft:deepslate_iron_ore";
    MinecraftBlockTypes2["DeepslateLapisOre"] = "minecraft:deepslate_lapis_ore";
    MinecraftBlockTypes2["DeepslateRedstoneOre"] = "minecraft:deepslate_redstone_ore";
    MinecraftBlockTypes2["DeepslateTileDoubleSlab"] = "minecraft:deepslate_tile_double_slab";
    MinecraftBlockTypes2["DeepslateTileSlab"] = "minecraft:deepslate_tile_slab";
    MinecraftBlockTypes2["DeepslateTileStairs"] = "minecraft:deepslate_tile_stairs";
    MinecraftBlockTypes2["DeepslateTileWall"] = "minecraft:deepslate_tile_wall";
    MinecraftBlockTypes2["DeepslateTiles"] = "minecraft:deepslate_tiles";
    MinecraftBlockTypes2["Deny"] = "minecraft:deny";
    MinecraftBlockTypes2["DetectorRail"] = "minecraft:detector_rail";
    MinecraftBlockTypes2["DiamondBlock"] = "minecraft:diamond_block";
    MinecraftBlockTypes2["DiamondOre"] = "minecraft:diamond_ore";
    MinecraftBlockTypes2["DioriteStairs"] = "minecraft:diorite_stairs";
    MinecraftBlockTypes2["Dirt"] = "minecraft:dirt";
    MinecraftBlockTypes2["DirtWithRoots"] = "minecraft:dirt_with_roots";
    MinecraftBlockTypes2["Dispenser"] = "minecraft:dispenser";
    MinecraftBlockTypes2["DoubleCutCopperSlab"] = "minecraft:double_cut_copper_slab";
    MinecraftBlockTypes2["DoublePlant"] = "minecraft:double_plant";
    MinecraftBlockTypes2["DoubleStoneBlockSlab"] = "minecraft:double_stone_block_slab";
    MinecraftBlockTypes2["DoubleStoneBlockSlab2"] = "minecraft:double_stone_block_slab2";
    MinecraftBlockTypes2["DoubleStoneBlockSlab3"] = "minecraft:double_stone_block_slab3";
    MinecraftBlockTypes2["DoubleStoneBlockSlab4"] = "minecraft:double_stone_block_slab4";
    MinecraftBlockTypes2["DoubleWoodenSlab"] = "minecraft:double_wooden_slab";
    MinecraftBlockTypes2["DragonEgg"] = "minecraft:dragon_egg";
    MinecraftBlockTypes2["DriedKelpBlock"] = "minecraft:dried_kelp_block";
    MinecraftBlockTypes2["DripstoneBlock"] = "minecraft:dripstone_block";
    MinecraftBlockTypes2["Dropper"] = "minecraft:dropper";
    MinecraftBlockTypes2["Element0"] = "minecraft:element_0";
    MinecraftBlockTypes2["Element1"] = "minecraft:element_1";
    MinecraftBlockTypes2["Element10"] = "minecraft:element_10";
    MinecraftBlockTypes2["Element100"] = "minecraft:element_100";
    MinecraftBlockTypes2["Element101"] = "minecraft:element_101";
    MinecraftBlockTypes2["Element102"] = "minecraft:element_102";
    MinecraftBlockTypes2["Element103"] = "minecraft:element_103";
    MinecraftBlockTypes2["Element104"] = "minecraft:element_104";
    MinecraftBlockTypes2["Element105"] = "minecraft:element_105";
    MinecraftBlockTypes2["Element106"] = "minecraft:element_106";
    MinecraftBlockTypes2["Element107"] = "minecraft:element_107";
    MinecraftBlockTypes2["Element108"] = "minecraft:element_108";
    MinecraftBlockTypes2["Element109"] = "minecraft:element_109";
    MinecraftBlockTypes2["Element11"] = "minecraft:element_11";
    MinecraftBlockTypes2["Element110"] = "minecraft:element_110";
    MinecraftBlockTypes2["Element111"] = "minecraft:element_111";
    MinecraftBlockTypes2["Element112"] = "minecraft:element_112";
    MinecraftBlockTypes2["Element113"] = "minecraft:element_113";
    MinecraftBlockTypes2["Element114"] = "minecraft:element_114";
    MinecraftBlockTypes2["Element115"] = "minecraft:element_115";
    MinecraftBlockTypes2["Element116"] = "minecraft:element_116";
    MinecraftBlockTypes2["Element117"] = "minecraft:element_117";
    MinecraftBlockTypes2["Element118"] = "minecraft:element_118";
    MinecraftBlockTypes2["Element12"] = "minecraft:element_12";
    MinecraftBlockTypes2["Element13"] = "minecraft:element_13";
    MinecraftBlockTypes2["Element14"] = "minecraft:element_14";
    MinecraftBlockTypes2["Element15"] = "minecraft:element_15";
    MinecraftBlockTypes2["Element16"] = "minecraft:element_16";
    MinecraftBlockTypes2["Element17"] = "minecraft:element_17";
    MinecraftBlockTypes2["Element18"] = "minecraft:element_18";
    MinecraftBlockTypes2["Element19"] = "minecraft:element_19";
    MinecraftBlockTypes2["Element2"] = "minecraft:element_2";
    MinecraftBlockTypes2["Element20"] = "minecraft:element_20";
    MinecraftBlockTypes2["Element21"] = "minecraft:element_21";
    MinecraftBlockTypes2["Element22"] = "minecraft:element_22";
    MinecraftBlockTypes2["Element23"] = "minecraft:element_23";
    MinecraftBlockTypes2["Element24"] = "minecraft:element_24";
    MinecraftBlockTypes2["Element25"] = "minecraft:element_25";
    MinecraftBlockTypes2["Element26"] = "minecraft:element_26";
    MinecraftBlockTypes2["Element27"] = "minecraft:element_27";
    MinecraftBlockTypes2["Element28"] = "minecraft:element_28";
    MinecraftBlockTypes2["Element29"] = "minecraft:element_29";
    MinecraftBlockTypes2["Element3"] = "minecraft:element_3";
    MinecraftBlockTypes2["Element30"] = "minecraft:element_30";
    MinecraftBlockTypes2["Element31"] = "minecraft:element_31";
    MinecraftBlockTypes2["Element32"] = "minecraft:element_32";
    MinecraftBlockTypes2["Element33"] = "minecraft:element_33";
    MinecraftBlockTypes2["Element34"] = "minecraft:element_34";
    MinecraftBlockTypes2["Element35"] = "minecraft:element_35";
    MinecraftBlockTypes2["Element36"] = "minecraft:element_36";
    MinecraftBlockTypes2["Element37"] = "minecraft:element_37";
    MinecraftBlockTypes2["Element38"] = "minecraft:element_38";
    MinecraftBlockTypes2["Element39"] = "minecraft:element_39";
    MinecraftBlockTypes2["Element4"] = "minecraft:element_4";
    MinecraftBlockTypes2["Element40"] = "minecraft:element_40";
    MinecraftBlockTypes2["Element41"] = "minecraft:element_41";
    MinecraftBlockTypes2["Element42"] = "minecraft:element_42";
    MinecraftBlockTypes2["Element43"] = "minecraft:element_43";
    MinecraftBlockTypes2["Element44"] = "minecraft:element_44";
    MinecraftBlockTypes2["Element45"] = "minecraft:element_45";
    MinecraftBlockTypes2["Element46"] = "minecraft:element_46";
    MinecraftBlockTypes2["Element47"] = "minecraft:element_47";
    MinecraftBlockTypes2["Element48"] = "minecraft:element_48";
    MinecraftBlockTypes2["Element49"] = "minecraft:element_49";
    MinecraftBlockTypes2["Element5"] = "minecraft:element_5";
    MinecraftBlockTypes2["Element50"] = "minecraft:element_50";
    MinecraftBlockTypes2["Element51"] = "minecraft:element_51";
    MinecraftBlockTypes2["Element52"] = "minecraft:element_52";
    MinecraftBlockTypes2["Element53"] = "minecraft:element_53";
    MinecraftBlockTypes2["Element54"] = "minecraft:element_54";
    MinecraftBlockTypes2["Element55"] = "minecraft:element_55";
    MinecraftBlockTypes2["Element56"] = "minecraft:element_56";
    MinecraftBlockTypes2["Element57"] = "minecraft:element_57";
    MinecraftBlockTypes2["Element58"] = "minecraft:element_58";
    MinecraftBlockTypes2["Element59"] = "minecraft:element_59";
    MinecraftBlockTypes2["Element6"] = "minecraft:element_6";
    MinecraftBlockTypes2["Element60"] = "minecraft:element_60";
    MinecraftBlockTypes2["Element61"] = "minecraft:element_61";
    MinecraftBlockTypes2["Element62"] = "minecraft:element_62";
    MinecraftBlockTypes2["Element63"] = "minecraft:element_63";
    MinecraftBlockTypes2["Element64"] = "minecraft:element_64";
    MinecraftBlockTypes2["Element65"] = "minecraft:element_65";
    MinecraftBlockTypes2["Element66"] = "minecraft:element_66";
    MinecraftBlockTypes2["Element67"] = "minecraft:element_67";
    MinecraftBlockTypes2["Element68"] = "minecraft:element_68";
    MinecraftBlockTypes2["Element69"] = "minecraft:element_69";
    MinecraftBlockTypes2["Element7"] = "minecraft:element_7";
    MinecraftBlockTypes2["Element70"] = "minecraft:element_70";
    MinecraftBlockTypes2["Element71"] = "minecraft:element_71";
    MinecraftBlockTypes2["Element72"] = "minecraft:element_72";
    MinecraftBlockTypes2["Element73"] = "minecraft:element_73";
    MinecraftBlockTypes2["Element74"] = "minecraft:element_74";
    MinecraftBlockTypes2["Element75"] = "minecraft:element_75";
    MinecraftBlockTypes2["Element76"] = "minecraft:element_76";
    MinecraftBlockTypes2["Element77"] = "minecraft:element_77";
    MinecraftBlockTypes2["Element78"] = "minecraft:element_78";
    MinecraftBlockTypes2["Element79"] = "minecraft:element_79";
    MinecraftBlockTypes2["Element8"] = "minecraft:element_8";
    MinecraftBlockTypes2["Element80"] = "minecraft:element_80";
    MinecraftBlockTypes2["Element81"] = "minecraft:element_81";
    MinecraftBlockTypes2["Element82"] = "minecraft:element_82";
    MinecraftBlockTypes2["Element83"] = "minecraft:element_83";
    MinecraftBlockTypes2["Element84"] = "minecraft:element_84";
    MinecraftBlockTypes2["Element85"] = "minecraft:element_85";
    MinecraftBlockTypes2["Element86"] = "minecraft:element_86";
    MinecraftBlockTypes2["Element87"] = "minecraft:element_87";
    MinecraftBlockTypes2["Element88"] = "minecraft:element_88";
    MinecraftBlockTypes2["Element89"] = "minecraft:element_89";
    MinecraftBlockTypes2["Element9"] = "minecraft:element_9";
    MinecraftBlockTypes2["Element90"] = "minecraft:element_90";
    MinecraftBlockTypes2["Element91"] = "minecraft:element_91";
    MinecraftBlockTypes2["Element92"] = "minecraft:element_92";
    MinecraftBlockTypes2["Element93"] = "minecraft:element_93";
    MinecraftBlockTypes2["Element94"] = "minecraft:element_94";
    MinecraftBlockTypes2["Element95"] = "minecraft:element_95";
    MinecraftBlockTypes2["Element96"] = "minecraft:element_96";
    MinecraftBlockTypes2["Element97"] = "minecraft:element_97";
    MinecraftBlockTypes2["Element98"] = "minecraft:element_98";
    MinecraftBlockTypes2["Element99"] = "minecraft:element_99";
    MinecraftBlockTypes2["EmeraldBlock"] = "minecraft:emerald_block";
    MinecraftBlockTypes2["EmeraldOre"] = "minecraft:emerald_ore";
    MinecraftBlockTypes2["EnchantingTable"] = "minecraft:enchanting_table";
    MinecraftBlockTypes2["EndBrickStairs"] = "minecraft:end_brick_stairs";
    MinecraftBlockTypes2["EndBricks"] = "minecraft:end_bricks";
    MinecraftBlockTypes2["EndGateway"] = "minecraft:end_gateway";
    MinecraftBlockTypes2["EndPortal"] = "minecraft:end_portal";
    MinecraftBlockTypes2["EndPortalFrame"] = "minecraft:end_portal_frame";
    MinecraftBlockTypes2["EndRod"] = "minecraft:end_rod";
    MinecraftBlockTypes2["EndStone"] = "minecraft:end_stone";
    MinecraftBlockTypes2["EnderChest"] = "minecraft:ender_chest";
    MinecraftBlockTypes2["ExposedCopper"] = "minecraft:exposed_copper";
    MinecraftBlockTypes2["ExposedCutCopper"] = "minecraft:exposed_cut_copper";
    MinecraftBlockTypes2["ExposedCutCopperSlab"] = "minecraft:exposed_cut_copper_slab";
    MinecraftBlockTypes2["ExposedCutCopperStairs"] = "minecraft:exposed_cut_copper_stairs";
    MinecraftBlockTypes2["ExposedDoubleCutCopperSlab"] = "minecraft:exposed_double_cut_copper_slab";
    MinecraftBlockTypes2["Farmland"] = "minecraft:farmland";
    MinecraftBlockTypes2["FenceGate"] = "minecraft:fence_gate";
    MinecraftBlockTypes2["Fire"] = "minecraft:fire";
    MinecraftBlockTypes2["FireCoral"] = "minecraft:fire_coral";
    MinecraftBlockTypes2["FletchingTable"] = "minecraft:fletching_table";
    MinecraftBlockTypes2["FlowerPot"] = "minecraft:flower_pot";
    MinecraftBlockTypes2["FloweringAzalea"] = "minecraft:flowering_azalea";
    MinecraftBlockTypes2["FlowingLava"] = "minecraft:flowing_lava";
    MinecraftBlockTypes2["FlowingWater"] = "minecraft:flowing_water";
    MinecraftBlockTypes2["Frame"] = "minecraft:frame";
    MinecraftBlockTypes2["FrogSpawn"] = "minecraft:frog_spawn";
    MinecraftBlockTypes2["FrostedIce"] = "minecraft:frosted_ice";
    MinecraftBlockTypes2["Furnace"] = "minecraft:furnace";
    MinecraftBlockTypes2["GildedBlackstone"] = "minecraft:gilded_blackstone";
    MinecraftBlockTypes2["Glass"] = "minecraft:glass";
    MinecraftBlockTypes2["GlassPane"] = "minecraft:glass_pane";
    MinecraftBlockTypes2["GlowFrame"] = "minecraft:glow_frame";
    MinecraftBlockTypes2["GlowLichen"] = "minecraft:glow_lichen";
    MinecraftBlockTypes2["Glowingobsidian"] = "minecraft:glowingobsidian";
    MinecraftBlockTypes2["Glowstone"] = "minecraft:glowstone";
    MinecraftBlockTypes2["GoldBlock"] = "minecraft:gold_block";
    MinecraftBlockTypes2["GoldOre"] = "minecraft:gold_ore";
    MinecraftBlockTypes2["GoldenRail"] = "minecraft:golden_rail";
    MinecraftBlockTypes2["GraniteStairs"] = "minecraft:granite_stairs";
    MinecraftBlockTypes2["Grass"] = "minecraft:grass";
    MinecraftBlockTypes2["GrassPath"] = "minecraft:grass_path";
    MinecraftBlockTypes2["Gravel"] = "minecraft:gravel";
    MinecraftBlockTypes2["GrayCandle"] = "minecraft:gray_candle";
    MinecraftBlockTypes2["GrayCandleCake"] = "minecraft:gray_candle_cake";
    MinecraftBlockTypes2["GrayCarpet"] = "minecraft:gray_carpet";
    MinecraftBlockTypes2["GrayConcrete"] = "minecraft:gray_concrete";
    MinecraftBlockTypes2["GrayConcretePowder"] = "minecraft:gray_concrete_powder";
    MinecraftBlockTypes2["GrayGlazedTerracotta"] = "minecraft:gray_glazed_terracotta";
    MinecraftBlockTypes2["GrayShulkerBox"] = "minecraft:gray_shulker_box";
    MinecraftBlockTypes2["GrayStainedGlass"] = "minecraft:gray_stained_glass";
    MinecraftBlockTypes2["GrayStainedGlassPane"] = "minecraft:gray_stained_glass_pane";
    MinecraftBlockTypes2["GrayTerracotta"] = "minecraft:gray_terracotta";
    MinecraftBlockTypes2["GrayWool"] = "minecraft:gray_wool";
    MinecraftBlockTypes2["GreenCandle"] = "minecraft:green_candle";
    MinecraftBlockTypes2["GreenCandleCake"] = "minecraft:green_candle_cake";
    MinecraftBlockTypes2["GreenCarpet"] = "minecraft:green_carpet";
    MinecraftBlockTypes2["GreenConcrete"] = "minecraft:green_concrete";
    MinecraftBlockTypes2["GreenConcretePowder"] = "minecraft:green_concrete_powder";
    MinecraftBlockTypes2["GreenGlazedTerracotta"] = "minecraft:green_glazed_terracotta";
    MinecraftBlockTypes2["GreenShulkerBox"] = "minecraft:green_shulker_box";
    MinecraftBlockTypes2["GreenStainedGlass"] = "minecraft:green_stained_glass";
    MinecraftBlockTypes2["GreenStainedGlassPane"] = "minecraft:green_stained_glass_pane";
    MinecraftBlockTypes2["GreenTerracotta"] = "minecraft:green_terracotta";
    MinecraftBlockTypes2["GreenWool"] = "minecraft:green_wool";
    MinecraftBlockTypes2["Grindstone"] = "minecraft:grindstone";
    MinecraftBlockTypes2["HangingRoots"] = "minecraft:hanging_roots";
    MinecraftBlockTypes2["HardGlass"] = "minecraft:hard_glass";
    MinecraftBlockTypes2["HardGlassPane"] = "minecraft:hard_glass_pane";
    MinecraftBlockTypes2["HardStainedGlass"] = "minecraft:hard_stained_glass";
    MinecraftBlockTypes2["HardStainedGlassPane"] = "minecraft:hard_stained_glass_pane";
    MinecraftBlockTypes2["HardenedClay"] = "minecraft:hardened_clay";
    MinecraftBlockTypes2["HayBlock"] = "minecraft:hay_block";
    MinecraftBlockTypes2["HeavyWeightedPressurePlate"] = "minecraft:heavy_weighted_pressure_plate";
    MinecraftBlockTypes2["HoneyBlock"] = "minecraft:honey_block";
    MinecraftBlockTypes2["HoneycombBlock"] = "minecraft:honeycomb_block";
    MinecraftBlockTypes2["Hopper"] = "minecraft:hopper";
    MinecraftBlockTypes2["HornCoral"] = "minecraft:horn_coral";
    MinecraftBlockTypes2["Ice"] = "minecraft:ice";
    MinecraftBlockTypes2["InfestedDeepslate"] = "minecraft:infested_deepslate";
    MinecraftBlockTypes2["InfoUpdate"] = "minecraft:info_update";
    MinecraftBlockTypes2["InfoUpdate2"] = "minecraft:info_update2";
    MinecraftBlockTypes2["InvisibleBedrock"] = "minecraft:invisible_bedrock";
    MinecraftBlockTypes2["IronBars"] = "minecraft:iron_bars";
    MinecraftBlockTypes2["IronBlock"] = "minecraft:iron_block";
    MinecraftBlockTypes2["IronDoor"] = "minecraft:iron_door";
    MinecraftBlockTypes2["IronOre"] = "minecraft:iron_ore";
    MinecraftBlockTypes2["IronTrapdoor"] = "minecraft:iron_trapdoor";
    MinecraftBlockTypes2["Jigsaw"] = "minecraft:jigsaw";
    MinecraftBlockTypes2["Jukebox"] = "minecraft:jukebox";
    MinecraftBlockTypes2["JungleButton"] = "minecraft:jungle_button";
    MinecraftBlockTypes2["JungleDoor"] = "minecraft:jungle_door";
    MinecraftBlockTypes2["JungleFence"] = "minecraft:jungle_fence";
    MinecraftBlockTypes2["JungleFenceGate"] = "minecraft:jungle_fence_gate";
    MinecraftBlockTypes2["JungleHangingSign"] = "minecraft:jungle_hanging_sign";
    MinecraftBlockTypes2["JungleLog"] = "minecraft:jungle_log";
    MinecraftBlockTypes2["JunglePressurePlate"] = "minecraft:jungle_pressure_plate";
    MinecraftBlockTypes2["JungleStairs"] = "minecraft:jungle_stairs";
    MinecraftBlockTypes2["JungleStandingSign"] = "minecraft:jungle_standing_sign";
    MinecraftBlockTypes2["JungleTrapdoor"] = "minecraft:jungle_trapdoor";
    MinecraftBlockTypes2["JungleWallSign"] = "minecraft:jungle_wall_sign";
    MinecraftBlockTypes2["Kelp"] = "minecraft:kelp";
    MinecraftBlockTypes2["Ladder"] = "minecraft:ladder";
    MinecraftBlockTypes2["Lantern"] = "minecraft:lantern";
    MinecraftBlockTypes2["LapisBlock"] = "minecraft:lapis_block";
    MinecraftBlockTypes2["LapisOre"] = "minecraft:lapis_ore";
    MinecraftBlockTypes2["LargeAmethystBud"] = "minecraft:large_amethyst_bud";
    MinecraftBlockTypes2["Lava"] = "minecraft:lava";
    MinecraftBlockTypes2["Leaves"] = "minecraft:leaves";
    MinecraftBlockTypes2["Leaves2"] = "minecraft:leaves2";
    MinecraftBlockTypes2["Lectern"] = "minecraft:lectern";
    MinecraftBlockTypes2["Lever"] = "minecraft:lever";
    MinecraftBlockTypes2["LightBlock"] = "minecraft:light_block";
    MinecraftBlockTypes2["LightBlueCandle"] = "minecraft:light_blue_candle";
    MinecraftBlockTypes2["LightBlueCandleCake"] = "minecraft:light_blue_candle_cake";
    MinecraftBlockTypes2["LightBlueCarpet"] = "minecraft:light_blue_carpet";
    MinecraftBlockTypes2["LightBlueConcrete"] = "minecraft:light_blue_concrete";
    MinecraftBlockTypes2["LightBlueConcretePowder"] = "minecraft:light_blue_concrete_powder";
    MinecraftBlockTypes2["LightBlueGlazedTerracotta"] = "minecraft:light_blue_glazed_terracotta";
    MinecraftBlockTypes2["LightBlueShulkerBox"] = "minecraft:light_blue_shulker_box";
    MinecraftBlockTypes2["LightBlueStainedGlass"] = "minecraft:light_blue_stained_glass";
    MinecraftBlockTypes2["LightBlueStainedGlassPane"] = "minecraft:light_blue_stained_glass_pane";
    MinecraftBlockTypes2["LightBlueTerracotta"] = "minecraft:light_blue_terracotta";
    MinecraftBlockTypes2["LightBlueWool"] = "minecraft:light_blue_wool";
    MinecraftBlockTypes2["LightGrayCandle"] = "minecraft:light_gray_candle";
    MinecraftBlockTypes2["LightGrayCandleCake"] = "minecraft:light_gray_candle_cake";
    MinecraftBlockTypes2["LightGrayCarpet"] = "minecraft:light_gray_carpet";
    MinecraftBlockTypes2["LightGrayConcrete"] = "minecraft:light_gray_concrete";
    MinecraftBlockTypes2["LightGrayConcretePowder"] = "minecraft:light_gray_concrete_powder";
    MinecraftBlockTypes2["LightGrayShulkerBox"] = "minecraft:light_gray_shulker_box";
    MinecraftBlockTypes2["LightGrayStainedGlass"] = "minecraft:light_gray_stained_glass";
    MinecraftBlockTypes2["LightGrayStainedGlassPane"] = "minecraft:light_gray_stained_glass_pane";
    MinecraftBlockTypes2["LightGrayTerracotta"] = "minecraft:light_gray_terracotta";
    MinecraftBlockTypes2["LightGrayWool"] = "minecraft:light_gray_wool";
    MinecraftBlockTypes2["LightWeightedPressurePlate"] = "minecraft:light_weighted_pressure_plate";
    MinecraftBlockTypes2["LightningRod"] = "minecraft:lightning_rod";
    MinecraftBlockTypes2["LimeCandle"] = "minecraft:lime_candle";
    MinecraftBlockTypes2["LimeCandleCake"] = "minecraft:lime_candle_cake";
    MinecraftBlockTypes2["LimeCarpet"] = "minecraft:lime_carpet";
    MinecraftBlockTypes2["LimeConcrete"] = "minecraft:lime_concrete";
    MinecraftBlockTypes2["LimeConcretePowder"] = "minecraft:lime_concrete_powder";
    MinecraftBlockTypes2["LimeGlazedTerracotta"] = "minecraft:lime_glazed_terracotta";
    MinecraftBlockTypes2["LimeShulkerBox"] = "minecraft:lime_shulker_box";
    MinecraftBlockTypes2["LimeStainedGlass"] = "minecraft:lime_stained_glass";
    MinecraftBlockTypes2["LimeStainedGlassPane"] = "minecraft:lime_stained_glass_pane";
    MinecraftBlockTypes2["LimeTerracotta"] = "minecraft:lime_terracotta";
    MinecraftBlockTypes2["LimeWool"] = "minecraft:lime_wool";
    MinecraftBlockTypes2["LitBlastFurnace"] = "minecraft:lit_blast_furnace";
    MinecraftBlockTypes2["LitDeepslateRedstoneOre"] = "minecraft:lit_deepslate_redstone_ore";
    MinecraftBlockTypes2["LitFurnace"] = "minecraft:lit_furnace";
    MinecraftBlockTypes2["LitPumpkin"] = "minecraft:lit_pumpkin";
    MinecraftBlockTypes2["LitRedstoneLamp"] = "minecraft:lit_redstone_lamp";
    MinecraftBlockTypes2["LitRedstoneOre"] = "minecraft:lit_redstone_ore";
    MinecraftBlockTypes2["LitSmoker"] = "minecraft:lit_smoker";
    MinecraftBlockTypes2["Lodestone"] = "minecraft:lodestone";
    MinecraftBlockTypes2["Loom"] = "minecraft:loom";
    MinecraftBlockTypes2["MagentaCandle"] = "minecraft:magenta_candle";
    MinecraftBlockTypes2["MagentaCandleCake"] = "minecraft:magenta_candle_cake";
    MinecraftBlockTypes2["MagentaCarpet"] = "minecraft:magenta_carpet";
    MinecraftBlockTypes2["MagentaConcrete"] = "minecraft:magenta_concrete";
    MinecraftBlockTypes2["MagentaConcretePowder"] = "minecraft:magenta_concrete_powder";
    MinecraftBlockTypes2["MagentaGlazedTerracotta"] = "minecraft:magenta_glazed_terracotta";
    MinecraftBlockTypes2["MagentaShulkerBox"] = "minecraft:magenta_shulker_box";
    MinecraftBlockTypes2["MagentaStainedGlass"] = "minecraft:magenta_stained_glass";
    MinecraftBlockTypes2["MagentaStainedGlassPane"] = "minecraft:magenta_stained_glass_pane";
    MinecraftBlockTypes2["MagentaTerracotta"] = "minecraft:magenta_terracotta";
    MinecraftBlockTypes2["MagentaWool"] = "minecraft:magenta_wool";
    MinecraftBlockTypes2["Magma"] = "minecraft:magma";
    MinecraftBlockTypes2["MangroveButton"] = "minecraft:mangrove_button";
    MinecraftBlockTypes2["MangroveDoor"] = "minecraft:mangrove_door";
    MinecraftBlockTypes2["MangroveDoubleSlab"] = "minecraft:mangrove_double_slab";
    MinecraftBlockTypes2["MangroveFence"] = "minecraft:mangrove_fence";
    MinecraftBlockTypes2["MangroveFenceGate"] = "minecraft:mangrove_fence_gate";
    MinecraftBlockTypes2["MangroveHangingSign"] = "minecraft:mangrove_hanging_sign";
    MinecraftBlockTypes2["MangroveLeaves"] = "minecraft:mangrove_leaves";
    MinecraftBlockTypes2["MangroveLog"] = "minecraft:mangrove_log";
    MinecraftBlockTypes2["MangrovePlanks"] = "minecraft:mangrove_planks";
    MinecraftBlockTypes2["MangrovePressurePlate"] = "minecraft:mangrove_pressure_plate";
    MinecraftBlockTypes2["MangrovePropagule"] = "minecraft:mangrove_propagule";
    MinecraftBlockTypes2["MangroveRoots"] = "minecraft:mangrove_roots";
    MinecraftBlockTypes2["MangroveSlab"] = "minecraft:mangrove_slab";
    MinecraftBlockTypes2["MangroveStairs"] = "minecraft:mangrove_stairs";
    MinecraftBlockTypes2["MangroveStandingSign"] = "minecraft:mangrove_standing_sign";
    MinecraftBlockTypes2["MangroveTrapdoor"] = "minecraft:mangrove_trapdoor";
    MinecraftBlockTypes2["MangroveWallSign"] = "minecraft:mangrove_wall_sign";
    MinecraftBlockTypes2["MangroveWood"] = "minecraft:mangrove_wood";
    MinecraftBlockTypes2["MediumAmethystBud"] = "minecraft:medium_amethyst_bud";
    MinecraftBlockTypes2["MelonBlock"] = "minecraft:melon_block";
    MinecraftBlockTypes2["MelonStem"] = "minecraft:melon_stem";
    MinecraftBlockTypes2["MobSpawner"] = "minecraft:mob_spawner";
    MinecraftBlockTypes2["MonsterEgg"] = "minecraft:monster_egg";
    MinecraftBlockTypes2["MossBlock"] = "minecraft:moss_block";
    MinecraftBlockTypes2["MossCarpet"] = "minecraft:moss_carpet";
    MinecraftBlockTypes2["MossyCobblestone"] = "minecraft:mossy_cobblestone";
    MinecraftBlockTypes2["MossyCobblestoneStairs"] = "minecraft:mossy_cobblestone_stairs";
    MinecraftBlockTypes2["MossyStoneBrickStairs"] = "minecraft:mossy_stone_brick_stairs";
    MinecraftBlockTypes2["MovingBlock"] = "minecraft:moving_block";
    MinecraftBlockTypes2["Mud"] = "minecraft:mud";
    MinecraftBlockTypes2["MudBrickDoubleSlab"] = "minecraft:mud_brick_double_slab";
    MinecraftBlockTypes2["MudBrickSlab"] = "minecraft:mud_brick_slab";
    MinecraftBlockTypes2["MudBrickStairs"] = "minecraft:mud_brick_stairs";
    MinecraftBlockTypes2["MudBrickWall"] = "minecraft:mud_brick_wall";
    MinecraftBlockTypes2["MudBricks"] = "minecraft:mud_bricks";
    MinecraftBlockTypes2["MuddyMangroveRoots"] = "minecraft:muddy_mangrove_roots";
    MinecraftBlockTypes2["Mycelium"] = "minecraft:mycelium";
    MinecraftBlockTypes2["NetherBrick"] = "minecraft:nether_brick";
    MinecraftBlockTypes2["NetherBrickFence"] = "minecraft:nether_brick_fence";
    MinecraftBlockTypes2["NetherBrickStairs"] = "minecraft:nether_brick_stairs";
    MinecraftBlockTypes2["NetherGoldOre"] = "minecraft:nether_gold_ore";
    MinecraftBlockTypes2["NetherSprouts"] = "minecraft:nether_sprouts";
    MinecraftBlockTypes2["NetherWart"] = "minecraft:nether_wart";
    MinecraftBlockTypes2["NetherWartBlock"] = "minecraft:nether_wart_block";
    MinecraftBlockTypes2["NetheriteBlock"] = "minecraft:netherite_block";
    MinecraftBlockTypes2["Netherrack"] = "minecraft:netherrack";
    MinecraftBlockTypes2["Netherreactor"] = "minecraft:netherreactor";
    MinecraftBlockTypes2["NormalStoneStairs"] = "minecraft:normal_stone_stairs";
    MinecraftBlockTypes2["Noteblock"] = "minecraft:noteblock";
    MinecraftBlockTypes2["OakFence"] = "minecraft:oak_fence";
    MinecraftBlockTypes2["OakHangingSign"] = "minecraft:oak_hanging_sign";
    MinecraftBlockTypes2["OakLog"] = "minecraft:oak_log";
    MinecraftBlockTypes2["OakStairs"] = "minecraft:oak_stairs";
    MinecraftBlockTypes2["Observer"] = "minecraft:observer";
    MinecraftBlockTypes2["Obsidian"] = "minecraft:obsidian";
    MinecraftBlockTypes2["OchreFroglight"] = "minecraft:ochre_froglight";
    MinecraftBlockTypes2["OrangeCandle"] = "minecraft:orange_candle";
    MinecraftBlockTypes2["OrangeCandleCake"] = "minecraft:orange_candle_cake";
    MinecraftBlockTypes2["OrangeCarpet"] = "minecraft:orange_carpet";
    MinecraftBlockTypes2["OrangeConcrete"] = "minecraft:orange_concrete";
    MinecraftBlockTypes2["OrangeConcretePowder"] = "minecraft:orange_concrete_powder";
    MinecraftBlockTypes2["OrangeGlazedTerracotta"] = "minecraft:orange_glazed_terracotta";
    MinecraftBlockTypes2["OrangeShulkerBox"] = "minecraft:orange_shulker_box";
    MinecraftBlockTypes2["OrangeStainedGlass"] = "minecraft:orange_stained_glass";
    MinecraftBlockTypes2["OrangeStainedGlassPane"] = "minecraft:orange_stained_glass_pane";
    MinecraftBlockTypes2["OrangeTerracotta"] = "minecraft:orange_terracotta";
    MinecraftBlockTypes2["OrangeWool"] = "minecraft:orange_wool";
    MinecraftBlockTypes2["OxidizedCopper"] = "minecraft:oxidized_copper";
    MinecraftBlockTypes2["OxidizedCutCopper"] = "minecraft:oxidized_cut_copper";
    MinecraftBlockTypes2["OxidizedCutCopperSlab"] = "minecraft:oxidized_cut_copper_slab";
    MinecraftBlockTypes2["OxidizedCutCopperStairs"] = "minecraft:oxidized_cut_copper_stairs";
    MinecraftBlockTypes2["OxidizedDoubleCutCopperSlab"] = "minecraft:oxidized_double_cut_copper_slab";
    MinecraftBlockTypes2["PackedIce"] = "minecraft:packed_ice";
    MinecraftBlockTypes2["PackedMud"] = "minecraft:packed_mud";
    MinecraftBlockTypes2["PearlescentFroglight"] = "minecraft:pearlescent_froglight";
    MinecraftBlockTypes2["PinkCandle"] = "minecraft:pink_candle";
    MinecraftBlockTypes2["PinkCandleCake"] = "minecraft:pink_candle_cake";
    MinecraftBlockTypes2["PinkCarpet"] = "minecraft:pink_carpet";
    MinecraftBlockTypes2["PinkConcrete"] = "minecraft:pink_concrete";
    MinecraftBlockTypes2["PinkConcretePowder"] = "minecraft:pink_concrete_powder";
    MinecraftBlockTypes2["PinkGlazedTerracotta"] = "minecraft:pink_glazed_terracotta";
    MinecraftBlockTypes2["PinkPetals"] = "minecraft:pink_petals";
    MinecraftBlockTypes2["PinkShulkerBox"] = "minecraft:pink_shulker_box";
    MinecraftBlockTypes2["PinkStainedGlass"] = "minecraft:pink_stained_glass";
    MinecraftBlockTypes2["PinkStainedGlassPane"] = "minecraft:pink_stained_glass_pane";
    MinecraftBlockTypes2["PinkTerracotta"] = "minecraft:pink_terracotta";
    MinecraftBlockTypes2["PinkWool"] = "minecraft:pink_wool";
    MinecraftBlockTypes2["Piston"] = "minecraft:piston";
    MinecraftBlockTypes2["PistonArmCollision"] = "minecraft:piston_arm_collision";
    MinecraftBlockTypes2["PitcherCrop"] = "minecraft:pitcher_crop";
    MinecraftBlockTypes2["PitcherPlant"] = "minecraft:pitcher_plant";
    MinecraftBlockTypes2["Planks"] = "minecraft:planks";
    MinecraftBlockTypes2["Podzol"] = "minecraft:podzol";
    MinecraftBlockTypes2["PointedDripstone"] = "minecraft:pointed_dripstone";
    MinecraftBlockTypes2["PolishedAndesiteStairs"] = "minecraft:polished_andesite_stairs";
    MinecraftBlockTypes2["PolishedBasalt"] = "minecraft:polished_basalt";
    MinecraftBlockTypes2["PolishedBlackstone"] = "minecraft:polished_blackstone";
    MinecraftBlockTypes2["PolishedBlackstoneBrickDoubleSlab"] = "minecraft:polished_blackstone_brick_double_slab";
    MinecraftBlockTypes2["PolishedBlackstoneBrickSlab"] = "minecraft:polished_blackstone_brick_slab";
    MinecraftBlockTypes2["PolishedBlackstoneBrickStairs"] = "minecraft:polished_blackstone_brick_stairs";
    MinecraftBlockTypes2["PolishedBlackstoneBrickWall"] = "minecraft:polished_blackstone_brick_wall";
    MinecraftBlockTypes2["PolishedBlackstoneBricks"] = "minecraft:polished_blackstone_bricks";
    MinecraftBlockTypes2["PolishedBlackstoneButton"] = "minecraft:polished_blackstone_button";
    MinecraftBlockTypes2["PolishedBlackstoneDoubleSlab"] = "minecraft:polished_blackstone_double_slab";
    MinecraftBlockTypes2["PolishedBlackstonePressurePlate"] = "minecraft:polished_blackstone_pressure_plate";
    MinecraftBlockTypes2["PolishedBlackstoneSlab"] = "minecraft:polished_blackstone_slab";
    MinecraftBlockTypes2["PolishedBlackstoneStairs"] = "minecraft:polished_blackstone_stairs";
    MinecraftBlockTypes2["PolishedBlackstoneWall"] = "minecraft:polished_blackstone_wall";
    MinecraftBlockTypes2["PolishedDeepslate"] = "minecraft:polished_deepslate";
    MinecraftBlockTypes2["PolishedDeepslateDoubleSlab"] = "minecraft:polished_deepslate_double_slab";
    MinecraftBlockTypes2["PolishedDeepslateSlab"] = "minecraft:polished_deepslate_slab";
    MinecraftBlockTypes2["PolishedDeepslateStairs"] = "minecraft:polished_deepslate_stairs";
    MinecraftBlockTypes2["PolishedDeepslateWall"] = "minecraft:polished_deepslate_wall";
    MinecraftBlockTypes2["PolishedDioriteStairs"] = "minecraft:polished_diorite_stairs";
    MinecraftBlockTypes2["PolishedGraniteStairs"] = "minecraft:polished_granite_stairs";
    MinecraftBlockTypes2["Portal"] = "minecraft:portal";
    MinecraftBlockTypes2["Potatoes"] = "minecraft:potatoes";
    MinecraftBlockTypes2["PowderSnow"] = "minecraft:powder_snow";
    MinecraftBlockTypes2["PoweredComparator"] = "minecraft:powered_comparator";
    MinecraftBlockTypes2["PoweredRepeater"] = "minecraft:powered_repeater";
    MinecraftBlockTypes2["Prismarine"] = "minecraft:prismarine";
    MinecraftBlockTypes2["PrismarineBricksStairs"] = "minecraft:prismarine_bricks_stairs";
    MinecraftBlockTypes2["PrismarineStairs"] = "minecraft:prismarine_stairs";
    MinecraftBlockTypes2["Pumpkin"] = "minecraft:pumpkin";
    MinecraftBlockTypes2["PumpkinStem"] = "minecraft:pumpkin_stem";
    MinecraftBlockTypes2["PurpleCandle"] = "minecraft:purple_candle";
    MinecraftBlockTypes2["PurpleCandleCake"] = "minecraft:purple_candle_cake";
    MinecraftBlockTypes2["PurpleCarpet"] = "minecraft:purple_carpet";
    MinecraftBlockTypes2["PurpleConcrete"] = "minecraft:purple_concrete";
    MinecraftBlockTypes2["PurpleConcretePowder"] = "minecraft:purple_concrete_powder";
    MinecraftBlockTypes2["PurpleGlazedTerracotta"] = "minecraft:purple_glazed_terracotta";
    MinecraftBlockTypes2["PurpleShulkerBox"] = "minecraft:purple_shulker_box";
    MinecraftBlockTypes2["PurpleStainedGlass"] = "minecraft:purple_stained_glass";
    MinecraftBlockTypes2["PurpleStainedGlassPane"] = "minecraft:purple_stained_glass_pane";
    MinecraftBlockTypes2["PurpleTerracotta"] = "minecraft:purple_terracotta";
    MinecraftBlockTypes2["PurpleWool"] = "minecraft:purple_wool";
    MinecraftBlockTypes2["PurpurBlock"] = "minecraft:purpur_block";
    MinecraftBlockTypes2["PurpurStairs"] = "minecraft:purpur_stairs";
    MinecraftBlockTypes2["QuartzBlock"] = "minecraft:quartz_block";
    MinecraftBlockTypes2["QuartzBricks"] = "minecraft:quartz_bricks";
    MinecraftBlockTypes2["QuartzOre"] = "minecraft:quartz_ore";
    MinecraftBlockTypes2["QuartzStairs"] = "minecraft:quartz_stairs";
    MinecraftBlockTypes2["Rail"] = "minecraft:rail";
    MinecraftBlockTypes2["RawCopperBlock"] = "minecraft:raw_copper_block";
    MinecraftBlockTypes2["RawGoldBlock"] = "minecraft:raw_gold_block";
    MinecraftBlockTypes2["RawIronBlock"] = "minecraft:raw_iron_block";
    MinecraftBlockTypes2["RedCandle"] = "minecraft:red_candle";
    MinecraftBlockTypes2["RedCandleCake"] = "minecraft:red_candle_cake";
    MinecraftBlockTypes2["RedCarpet"] = "minecraft:red_carpet";
    MinecraftBlockTypes2["RedConcrete"] = "minecraft:red_concrete";
    MinecraftBlockTypes2["RedConcretePowder"] = "minecraft:red_concrete_powder";
    MinecraftBlockTypes2["RedFlower"] = "minecraft:red_flower";
    MinecraftBlockTypes2["RedGlazedTerracotta"] = "minecraft:red_glazed_terracotta";
    MinecraftBlockTypes2["RedMushroom"] = "minecraft:red_mushroom";
    MinecraftBlockTypes2["RedMushroomBlock"] = "minecraft:red_mushroom_block";
    MinecraftBlockTypes2["RedNetherBrick"] = "minecraft:red_nether_brick";
    MinecraftBlockTypes2["RedNetherBrickStairs"] = "minecraft:red_nether_brick_stairs";
    MinecraftBlockTypes2["RedSandstone"] = "minecraft:red_sandstone";
    MinecraftBlockTypes2["RedSandstoneStairs"] = "minecraft:red_sandstone_stairs";
    MinecraftBlockTypes2["RedShulkerBox"] = "minecraft:red_shulker_box";
    MinecraftBlockTypes2["RedStainedGlass"] = "minecraft:red_stained_glass";
    MinecraftBlockTypes2["RedStainedGlassPane"] = "minecraft:red_stained_glass_pane";
    MinecraftBlockTypes2["RedTerracotta"] = "minecraft:red_terracotta";
    MinecraftBlockTypes2["RedWool"] = "minecraft:red_wool";
    MinecraftBlockTypes2["RedstoneBlock"] = "minecraft:redstone_block";
    MinecraftBlockTypes2["RedstoneLamp"] = "minecraft:redstone_lamp";
    MinecraftBlockTypes2["RedstoneOre"] = "minecraft:redstone_ore";
    MinecraftBlockTypes2["RedstoneTorch"] = "minecraft:redstone_torch";
    MinecraftBlockTypes2["RedstoneWire"] = "minecraft:redstone_wire";
    MinecraftBlockTypes2["Reeds"] = "minecraft:reeds";
    MinecraftBlockTypes2["ReinforcedDeepslate"] = "minecraft:reinforced_deepslate";
    MinecraftBlockTypes2["RepeatingCommandBlock"] = "minecraft:repeating_command_block";
    MinecraftBlockTypes2["Reserved6"] = "minecraft:reserved6";
    MinecraftBlockTypes2["RespawnAnchor"] = "minecraft:respawn_anchor";
    MinecraftBlockTypes2["Sand"] = "minecraft:sand";
    MinecraftBlockTypes2["Sandstone"] = "minecraft:sandstone";
    MinecraftBlockTypes2["SandstoneStairs"] = "minecraft:sandstone_stairs";
    MinecraftBlockTypes2["Sapling"] = "minecraft:sapling";
    MinecraftBlockTypes2["Scaffolding"] = "minecraft:scaffolding";
    MinecraftBlockTypes2["Sculk"] = "minecraft:sculk";
    MinecraftBlockTypes2["SculkCatalyst"] = "minecraft:sculk_catalyst";
    MinecraftBlockTypes2["SculkSensor"] = "minecraft:sculk_sensor";
    MinecraftBlockTypes2["SculkShrieker"] = "minecraft:sculk_shrieker";
    MinecraftBlockTypes2["SculkVein"] = "minecraft:sculk_vein";
    MinecraftBlockTypes2["SeaLantern"] = "minecraft:sea_lantern";
    MinecraftBlockTypes2["SeaPickle"] = "minecraft:sea_pickle";
    MinecraftBlockTypes2["Seagrass"] = "minecraft:seagrass";
    MinecraftBlockTypes2["Shroomlight"] = "minecraft:shroomlight";
    MinecraftBlockTypes2["SilverGlazedTerracotta"] = "minecraft:silver_glazed_terracotta";
    MinecraftBlockTypes2["Skull"] = "minecraft:skull";
    MinecraftBlockTypes2["Slime"] = "minecraft:slime";
    MinecraftBlockTypes2["SmallAmethystBud"] = "minecraft:small_amethyst_bud";
    MinecraftBlockTypes2["SmallDripleafBlock"] = "minecraft:small_dripleaf_block";
    MinecraftBlockTypes2["SmithingTable"] = "minecraft:smithing_table";
    MinecraftBlockTypes2["Smoker"] = "minecraft:smoker";
    MinecraftBlockTypes2["SmoothBasalt"] = "minecraft:smooth_basalt";
    MinecraftBlockTypes2["SmoothQuartzStairs"] = "minecraft:smooth_quartz_stairs";
    MinecraftBlockTypes2["SmoothRedSandstoneStairs"] = "minecraft:smooth_red_sandstone_stairs";
    MinecraftBlockTypes2["SmoothSandstoneStairs"] = "minecraft:smooth_sandstone_stairs";
    MinecraftBlockTypes2["SmoothStone"] = "minecraft:smooth_stone";
    MinecraftBlockTypes2["SnifferEgg"] = "minecraft:sniffer_egg";
    MinecraftBlockTypes2["Snow"] = "minecraft:snow";
    MinecraftBlockTypes2["SnowLayer"] = "minecraft:snow_layer";
    MinecraftBlockTypes2["SoulCampfire"] = "minecraft:soul_campfire";
    MinecraftBlockTypes2["SoulFire"] = "minecraft:soul_fire";
    MinecraftBlockTypes2["SoulLantern"] = "minecraft:soul_lantern";
    MinecraftBlockTypes2["SoulSand"] = "minecraft:soul_sand";
    MinecraftBlockTypes2["SoulSoil"] = "minecraft:soul_soil";
    MinecraftBlockTypes2["SoulTorch"] = "minecraft:soul_torch";
    MinecraftBlockTypes2["Sponge"] = "minecraft:sponge";
    MinecraftBlockTypes2["SporeBlossom"] = "minecraft:spore_blossom";
    MinecraftBlockTypes2["SpruceButton"] = "minecraft:spruce_button";
    MinecraftBlockTypes2["SpruceDoor"] = "minecraft:spruce_door";
    MinecraftBlockTypes2["SpruceFence"] = "minecraft:spruce_fence";
    MinecraftBlockTypes2["SpruceFenceGate"] = "minecraft:spruce_fence_gate";
    MinecraftBlockTypes2["SpruceHangingSign"] = "minecraft:spruce_hanging_sign";
    MinecraftBlockTypes2["SpruceLog"] = "minecraft:spruce_log";
    MinecraftBlockTypes2["SprucePressurePlate"] = "minecraft:spruce_pressure_plate";
    MinecraftBlockTypes2["SpruceStairs"] = "minecraft:spruce_stairs";
    MinecraftBlockTypes2["SpruceStandingSign"] = "minecraft:spruce_standing_sign";
    MinecraftBlockTypes2["SpruceTrapdoor"] = "minecraft:spruce_trapdoor";
    MinecraftBlockTypes2["SpruceWallSign"] = "minecraft:spruce_wall_sign";
    MinecraftBlockTypes2["StandingBanner"] = "minecraft:standing_banner";
    MinecraftBlockTypes2["StandingSign"] = "minecraft:standing_sign";
    MinecraftBlockTypes2["StickyPiston"] = "minecraft:sticky_piston";
    MinecraftBlockTypes2["StickyPistonArmCollision"] = "minecraft:sticky_piston_arm_collision";
    MinecraftBlockTypes2["Stone"] = "minecraft:stone";
    MinecraftBlockTypes2["StoneBlockSlab"] = "minecraft:stone_block_slab";
    MinecraftBlockTypes2["StoneBlockSlab2"] = "minecraft:stone_block_slab2";
    MinecraftBlockTypes2["StoneBlockSlab3"] = "minecraft:stone_block_slab3";
    MinecraftBlockTypes2["StoneBlockSlab4"] = "minecraft:stone_block_slab4";
    MinecraftBlockTypes2["StoneBrickStairs"] = "minecraft:stone_brick_stairs";
    MinecraftBlockTypes2["StoneButton"] = "minecraft:stone_button";
    MinecraftBlockTypes2["StonePressurePlate"] = "minecraft:stone_pressure_plate";
    MinecraftBlockTypes2["StoneStairs"] = "minecraft:stone_stairs";
    MinecraftBlockTypes2["Stonebrick"] = "minecraft:stonebrick";
    MinecraftBlockTypes2["Stonecutter"] = "minecraft:stonecutter";
    MinecraftBlockTypes2["StonecutterBlock"] = "minecraft:stonecutter_block";
    MinecraftBlockTypes2["StrippedAcaciaLog"] = "minecraft:stripped_acacia_log";
    MinecraftBlockTypes2["StrippedBambooBlock"] = "minecraft:stripped_bamboo_block";
    MinecraftBlockTypes2["StrippedBirchLog"] = "minecraft:stripped_birch_log";
    MinecraftBlockTypes2["StrippedCherryLog"] = "minecraft:stripped_cherry_log";
    MinecraftBlockTypes2["StrippedCherryWood"] = "minecraft:stripped_cherry_wood";
    MinecraftBlockTypes2["StrippedCrimsonHyphae"] = "minecraft:stripped_crimson_hyphae";
    MinecraftBlockTypes2["StrippedCrimsonStem"] = "minecraft:stripped_crimson_stem";
    MinecraftBlockTypes2["StrippedDarkOakLog"] = "minecraft:stripped_dark_oak_log";
    MinecraftBlockTypes2["StrippedJungleLog"] = "minecraft:stripped_jungle_log";
    MinecraftBlockTypes2["StrippedMangroveLog"] = "minecraft:stripped_mangrove_log";
    MinecraftBlockTypes2["StrippedMangroveWood"] = "minecraft:stripped_mangrove_wood";
    MinecraftBlockTypes2["StrippedOakLog"] = "minecraft:stripped_oak_log";
    MinecraftBlockTypes2["StrippedSpruceLog"] = "minecraft:stripped_spruce_log";
    MinecraftBlockTypes2["StrippedWarpedHyphae"] = "minecraft:stripped_warped_hyphae";
    MinecraftBlockTypes2["StrippedWarpedStem"] = "minecraft:stripped_warped_stem";
    MinecraftBlockTypes2["StructureBlock"] = "minecraft:structure_block";
    MinecraftBlockTypes2["StructureVoid"] = "minecraft:structure_void";
    MinecraftBlockTypes2["SuspiciousGravel"] = "minecraft:suspicious_gravel";
    MinecraftBlockTypes2["SuspiciousSand"] = "minecraft:suspicious_sand";
    MinecraftBlockTypes2["SweetBerryBush"] = "minecraft:sweet_berry_bush";
    MinecraftBlockTypes2["Tallgrass"] = "minecraft:tallgrass";
    MinecraftBlockTypes2["Target"] = "minecraft:target";
    MinecraftBlockTypes2["TintedGlass"] = "minecraft:tinted_glass";
    MinecraftBlockTypes2["Tnt"] = "minecraft:tnt";
    MinecraftBlockTypes2["Torch"] = "minecraft:torch";
    MinecraftBlockTypes2["Torchflower"] = "minecraft:torchflower";
    MinecraftBlockTypes2["TorchflowerCrop"] = "minecraft:torchflower_crop";
    MinecraftBlockTypes2["Trapdoor"] = "minecraft:trapdoor";
    MinecraftBlockTypes2["TrappedChest"] = "minecraft:trapped_chest";
    MinecraftBlockTypes2["TripWire"] = "minecraft:trip_wire";
    MinecraftBlockTypes2["TripwireHook"] = "minecraft:tripwire_hook";
    MinecraftBlockTypes2["TubeCoral"] = "minecraft:tube_coral";
    MinecraftBlockTypes2["Tuff"] = "minecraft:tuff";
    MinecraftBlockTypes2["TurtleEgg"] = "minecraft:turtle_egg";
    MinecraftBlockTypes2["TwistingVines"] = "minecraft:twisting_vines";
    MinecraftBlockTypes2["UnderwaterTorch"] = "minecraft:underwater_torch";
    MinecraftBlockTypes2["UndyedShulkerBox"] = "minecraft:undyed_shulker_box";
    MinecraftBlockTypes2["Unknown"] = "minecraft:unknown";
    MinecraftBlockTypes2["UnlitRedstoneTorch"] = "minecraft:unlit_redstone_torch";
    MinecraftBlockTypes2["UnpoweredComparator"] = "minecraft:unpowered_comparator";
    MinecraftBlockTypes2["UnpoweredRepeater"] = "minecraft:unpowered_repeater";
    MinecraftBlockTypes2["VerdantFroglight"] = "minecraft:verdant_froglight";
    MinecraftBlockTypes2["Vine"] = "minecraft:vine";
    MinecraftBlockTypes2["WallBanner"] = "minecraft:wall_banner";
    MinecraftBlockTypes2["WallSign"] = "minecraft:wall_sign";
    MinecraftBlockTypes2["WarpedButton"] = "minecraft:warped_button";
    MinecraftBlockTypes2["WarpedDoor"] = "minecraft:warped_door";
    MinecraftBlockTypes2["WarpedDoubleSlab"] = "minecraft:warped_double_slab";
    MinecraftBlockTypes2["WarpedFence"] = "minecraft:warped_fence";
    MinecraftBlockTypes2["WarpedFenceGate"] = "minecraft:warped_fence_gate";
    MinecraftBlockTypes2["WarpedFungus"] = "minecraft:warped_fungus";
    MinecraftBlockTypes2["WarpedHangingSign"] = "minecraft:warped_hanging_sign";
    MinecraftBlockTypes2["WarpedHyphae"] = "minecraft:warped_hyphae";
    MinecraftBlockTypes2["WarpedNylium"] = "minecraft:warped_nylium";
    MinecraftBlockTypes2["WarpedPlanks"] = "minecraft:warped_planks";
    MinecraftBlockTypes2["WarpedPressurePlate"] = "minecraft:warped_pressure_plate";
    MinecraftBlockTypes2["WarpedRoots"] = "minecraft:warped_roots";
    MinecraftBlockTypes2["WarpedSlab"] = "minecraft:warped_slab";
    MinecraftBlockTypes2["WarpedStairs"] = "minecraft:warped_stairs";
    MinecraftBlockTypes2["WarpedStandingSign"] = "minecraft:warped_standing_sign";
    MinecraftBlockTypes2["WarpedStem"] = "minecraft:warped_stem";
    MinecraftBlockTypes2["WarpedTrapdoor"] = "minecraft:warped_trapdoor";
    MinecraftBlockTypes2["WarpedWallSign"] = "minecraft:warped_wall_sign";
    MinecraftBlockTypes2["WarpedWartBlock"] = "minecraft:warped_wart_block";
    MinecraftBlockTypes2["Water"] = "minecraft:water";
    MinecraftBlockTypes2["Waterlily"] = "minecraft:waterlily";
    MinecraftBlockTypes2["WaxedCopper"] = "minecraft:waxed_copper";
    MinecraftBlockTypes2["WaxedCutCopper"] = "minecraft:waxed_cut_copper";
    MinecraftBlockTypes2["WaxedCutCopperSlab"] = "minecraft:waxed_cut_copper_slab";
    MinecraftBlockTypes2["WaxedCutCopperStairs"] = "minecraft:waxed_cut_copper_stairs";
    MinecraftBlockTypes2["WaxedDoubleCutCopperSlab"] = "minecraft:waxed_double_cut_copper_slab";
    MinecraftBlockTypes2["WaxedExposedCopper"] = "minecraft:waxed_exposed_copper";
    MinecraftBlockTypes2["WaxedExposedCutCopper"] = "minecraft:waxed_exposed_cut_copper";
    MinecraftBlockTypes2["WaxedExposedCutCopperSlab"] = "minecraft:waxed_exposed_cut_copper_slab";
    MinecraftBlockTypes2["WaxedExposedCutCopperStairs"] = "minecraft:waxed_exposed_cut_copper_stairs";
    MinecraftBlockTypes2["WaxedExposedDoubleCutCopperSlab"] = "minecraft:waxed_exposed_double_cut_copper_slab";
    MinecraftBlockTypes2["WaxedOxidizedCopper"] = "minecraft:waxed_oxidized_copper";
    MinecraftBlockTypes2["WaxedOxidizedCutCopper"] = "minecraft:waxed_oxidized_cut_copper";
    MinecraftBlockTypes2["WaxedOxidizedCutCopperSlab"] = "minecraft:waxed_oxidized_cut_copper_slab";
    MinecraftBlockTypes2["WaxedOxidizedCutCopperStairs"] = "minecraft:waxed_oxidized_cut_copper_stairs";
    MinecraftBlockTypes2["WaxedOxidizedDoubleCutCopperSlab"] = "minecraft:waxed_oxidized_double_cut_copper_slab";
    MinecraftBlockTypes2["WaxedWeatheredCopper"] = "minecraft:waxed_weathered_copper";
    MinecraftBlockTypes2["WaxedWeatheredCutCopper"] = "minecraft:waxed_weathered_cut_copper";
    MinecraftBlockTypes2["WaxedWeatheredCutCopperSlab"] = "minecraft:waxed_weathered_cut_copper_slab";
    MinecraftBlockTypes2["WaxedWeatheredCutCopperStairs"] = "minecraft:waxed_weathered_cut_copper_stairs";
    MinecraftBlockTypes2["WaxedWeatheredDoubleCutCopperSlab"] = "minecraft:waxed_weathered_double_cut_copper_slab";
    MinecraftBlockTypes2["WeatheredCopper"] = "minecraft:weathered_copper";
    MinecraftBlockTypes2["WeatheredCutCopper"] = "minecraft:weathered_cut_copper";
    MinecraftBlockTypes2["WeatheredCutCopperSlab"] = "minecraft:weathered_cut_copper_slab";
    MinecraftBlockTypes2["WeatheredCutCopperStairs"] = "minecraft:weathered_cut_copper_stairs";
    MinecraftBlockTypes2["WeatheredDoubleCutCopperSlab"] = "minecraft:weathered_double_cut_copper_slab";
    MinecraftBlockTypes2["Web"] = "minecraft:web";
    MinecraftBlockTypes2["WeepingVines"] = "minecraft:weeping_vines";
    MinecraftBlockTypes2["Wheat"] = "minecraft:wheat";
    MinecraftBlockTypes2["WhiteCandle"] = "minecraft:white_candle";
    MinecraftBlockTypes2["WhiteCandleCake"] = "minecraft:white_candle_cake";
    MinecraftBlockTypes2["WhiteCarpet"] = "minecraft:white_carpet";
    MinecraftBlockTypes2["WhiteConcrete"] = "minecraft:white_concrete";
    MinecraftBlockTypes2["WhiteConcretePowder"] = "minecraft:white_concrete_powder";
    MinecraftBlockTypes2["WhiteGlazedTerracotta"] = "minecraft:white_glazed_terracotta";
    MinecraftBlockTypes2["WhiteShulkerBox"] = "minecraft:white_shulker_box";
    MinecraftBlockTypes2["WhiteStainedGlass"] = "minecraft:white_stained_glass";
    MinecraftBlockTypes2["WhiteStainedGlassPane"] = "minecraft:white_stained_glass_pane";
    MinecraftBlockTypes2["WhiteTerracotta"] = "minecraft:white_terracotta";
    MinecraftBlockTypes2["WhiteWool"] = "minecraft:white_wool";
    MinecraftBlockTypes2["WitherRose"] = "minecraft:wither_rose";
    MinecraftBlockTypes2["Wood"] = "minecraft:wood";
    MinecraftBlockTypes2["WoodenButton"] = "minecraft:wooden_button";
    MinecraftBlockTypes2["WoodenDoor"] = "minecraft:wooden_door";
    MinecraftBlockTypes2["WoodenPressurePlate"] = "minecraft:wooden_pressure_plate";
    MinecraftBlockTypes2["WoodenSlab"] = "minecraft:wooden_slab";
    MinecraftBlockTypes2["YellowCandle"] = "minecraft:yellow_candle";
    MinecraftBlockTypes2["YellowCandleCake"] = "minecraft:yellow_candle_cake";
    MinecraftBlockTypes2["YellowCarpet"] = "minecraft:yellow_carpet";
    MinecraftBlockTypes2["YellowConcrete"] = "minecraft:yellow_concrete";
    MinecraftBlockTypes2["YellowConcretePowder"] = "minecraft:yellow_concrete_powder";
    MinecraftBlockTypes2["YellowFlower"] = "minecraft:yellow_flower";
    MinecraftBlockTypes2["YellowGlazedTerracotta"] = "minecraft:yellow_glazed_terracotta";
    MinecraftBlockTypes2["YellowShulkerBox"] = "minecraft:yellow_shulker_box";
    MinecraftBlockTypes2["YellowStainedGlass"] = "minecraft:yellow_stained_glass";
    MinecraftBlockTypes2["YellowStainedGlassPane"] = "minecraft:yellow_stained_glass_pane";
    MinecraftBlockTypes2["YellowTerracotta"] = "minecraft:yellow_terracotta";
    MinecraftBlockTypes2["YellowWool"] = "minecraft:yellow_wool";
    return MinecraftBlockTypes2;
})(MinecraftBlockTypes || {});

var MinecraftCameraPresetsTypes = (MinecraftCameraPresetsTypes2 => {
    MinecraftCameraPresetsTypes2["FirstPerson"] = "minecraft:first_person";
    MinecraftCameraPresetsTypes2["Free"] = "minecraft:free";
    MinecraftCameraPresetsTypes2["ThirdPerson"] = "minecraft:third_person";
    MinecraftCameraPresetsTypes2["ThirdPersonFront"] = "minecraft:third_person_front";
    return MinecraftCameraPresetsTypes2;
})(MinecraftCameraPresetsTypes || {});

var MinecraftDimensionTypes = (MinecraftDimensionTypes2 => {
    MinecraftDimensionTypes2["Nether"] = "minecraft:nether";
    MinecraftDimensionTypes2["Overworld"] = "minecraft:overworld";
    MinecraftDimensionTypes2["TheEnd"] = "minecraft:the_end";
    return MinecraftDimensionTypes2;
})(MinecraftDimensionTypes || {});

var MinecraftEffectTypes = (MinecraftEffectTypes2 => {
    MinecraftEffectTypes2["Absorption"] = "absorption";
    MinecraftEffectTypes2["BadOmen"] = "bad_omen";
    MinecraftEffectTypes2["Blindness"] = "blindness";
    MinecraftEffectTypes2["ConduitPower"] = "conduit_power";
    MinecraftEffectTypes2["Darkness"] = "darkness";
    MinecraftEffectTypes2["Empty"] = "empty";
    MinecraftEffectTypes2["FatalPoison"] = "fatal_poison";
    MinecraftEffectTypes2["FireResistance"] = "fire_resistance";
    MinecraftEffectTypes2["Haste"] = "haste";
    MinecraftEffectTypes2["HealthBoost"] = "health_boost";
    MinecraftEffectTypes2["Hunger"] = "hunger";
    MinecraftEffectTypes2["InstantDamage"] = "instant_damage";
    MinecraftEffectTypes2["InstantHealth"] = "instant_health";
    MinecraftEffectTypes2["Invisibility"] = "invisibility";
    MinecraftEffectTypes2["JumpBoost"] = "jump_boost";
    MinecraftEffectTypes2["Levitation"] = "levitation";
    MinecraftEffectTypes2["MiningFatigue"] = "mining_fatigue";
    MinecraftEffectTypes2["Nausea"] = "nausea";
    MinecraftEffectTypes2["NightVision"] = "night_vision";
    MinecraftEffectTypes2["Poison"] = "poison";
    MinecraftEffectTypes2["Regeneration"] = "regeneration";
    MinecraftEffectTypes2["Resistance"] = "resistance";
    MinecraftEffectTypes2["Saturation"] = "saturation";
    MinecraftEffectTypes2["SlowFalling"] = "slow_falling";
    MinecraftEffectTypes2["Slowness"] = "slowness";
    MinecraftEffectTypes2["Speed"] = "speed";
    MinecraftEffectTypes2["Strength"] = "strength";
    MinecraftEffectTypes2["VillageHero"] = "village_hero";
    MinecraftEffectTypes2["WaterBreathing"] = "water_breathing";
    MinecraftEffectTypes2["Weakness"] = "weakness";
    MinecraftEffectTypes2["Wither"] = "wither";
    return MinecraftEffectTypes2;
})(MinecraftEffectTypes || {});

var MinecraftEnchantmentTypes = (MinecraftEnchantmentTypes2 => {
    MinecraftEnchantmentTypes2["AquaAffinity"] = "aqua_affinity";
    MinecraftEnchantmentTypes2["BaneOfArthropods"] = "bane_of_arthropods";
    MinecraftEnchantmentTypes2["Binding"] = "binding";
    MinecraftEnchantmentTypes2["BlastProtection"] = "blast_protection";
    MinecraftEnchantmentTypes2["Channeling"] = "channeling";
    MinecraftEnchantmentTypes2["DepthStrider"] = "depth_strider";
    MinecraftEnchantmentTypes2["Efficiency"] = "efficiency";
    MinecraftEnchantmentTypes2["FeatherFalling"] = "feather_falling";
    MinecraftEnchantmentTypes2["FireAspect"] = "fire_aspect";
    MinecraftEnchantmentTypes2["FireProtection"] = "fire_protection";
    MinecraftEnchantmentTypes2["Flame"] = "flame";
    MinecraftEnchantmentTypes2["Fortune"] = "fortune";
    MinecraftEnchantmentTypes2["FrostWalker"] = "frost_walker";
    MinecraftEnchantmentTypes2["Impaling"] = "impaling";
    MinecraftEnchantmentTypes2["Infinity"] = "infinity";
    MinecraftEnchantmentTypes2["Knockback"] = "knockback";
    MinecraftEnchantmentTypes2["Looting"] = "looting";
    MinecraftEnchantmentTypes2["Loyalty"] = "loyalty";
    MinecraftEnchantmentTypes2["LuckOfTheSea"] = "luck_of_the_sea";
    MinecraftEnchantmentTypes2["Lure"] = "lure";
    MinecraftEnchantmentTypes2["Mending"] = "mending";
    MinecraftEnchantmentTypes2["Multishot"] = "multishot";
    MinecraftEnchantmentTypes2["Piercing"] = "piercing";
    MinecraftEnchantmentTypes2["Power"] = "power";
    MinecraftEnchantmentTypes2["ProjectileProtection"] = "projectile_protection";
    MinecraftEnchantmentTypes2["Protection"] = "protection";
    MinecraftEnchantmentTypes2["Punch"] = "punch";
    MinecraftEnchantmentTypes2["QuickCharge"] = "quick_charge";
    MinecraftEnchantmentTypes2["Respiration"] = "respiration";
    MinecraftEnchantmentTypes2["Riptide"] = "riptide";
    MinecraftEnchantmentTypes2["Sharpness"] = "sharpness";
    MinecraftEnchantmentTypes2["SilkTouch"] = "silk_touch";
    MinecraftEnchantmentTypes2["Smite"] = "smite";
    MinecraftEnchantmentTypes2["SoulSpeed"] = "soul_speed";
    MinecraftEnchantmentTypes2["SwiftSneak"] = "swift_sneak";
    MinecraftEnchantmentTypes2["Thorns"] = "thorns";
    MinecraftEnchantmentTypes2["Unbreaking"] = "unbreaking";
    MinecraftEnchantmentTypes2["Vanishing"] = "vanishing";
    return MinecraftEnchantmentTypes2;
})(MinecraftEnchantmentTypes || {});

var MinecraftEntityTypes = (MinecraftEntityTypes2 => {
    MinecraftEntityTypes2["Agent"] = "agent";
    MinecraftEntityTypes2["Allay"] = "allay";
    MinecraftEntityTypes2["AreaEffectCloud"] = "area_effect_cloud";
    MinecraftEntityTypes2["ArmorStand"] = "armor_stand";
    MinecraftEntityTypes2["Arrow"] = "arrow";
    MinecraftEntityTypes2["Axolotl"] = "axolotl";
    MinecraftEntityTypes2["Bat"] = "bat";
    MinecraftEntityTypes2["Bee"] = "bee";
    MinecraftEntityTypes2["Blaze"] = "blaze";
    MinecraftEntityTypes2["Boat"] = "boat";
    MinecraftEntityTypes2["Camel"] = "camel";
    MinecraftEntityTypes2["Cat"] = "cat";
    MinecraftEntityTypes2["CaveSpider"] = "cave_spider";
    MinecraftEntityTypes2["ChestBoat"] = "chest_boat";
    MinecraftEntityTypes2["ChestMinecart"] = "chest_minecart";
    MinecraftEntityTypes2["Chicken"] = "chicken";
    MinecraftEntityTypes2["Cod"] = "cod";
    MinecraftEntityTypes2["CommandBlockMinecart"] = "command_block_minecart";
    MinecraftEntityTypes2["Cow"] = "cow";
    MinecraftEntityTypes2["Creeper"] = "creeper";
    MinecraftEntityTypes2["Dolphin"] = "dolphin";
    MinecraftEntityTypes2["Donkey"] = "donkey";
    MinecraftEntityTypes2["DragonFireball"] = "dragon_fireball";
    MinecraftEntityTypes2["Drowned"] = "drowned";
    MinecraftEntityTypes2["Egg"] = "egg";
    MinecraftEntityTypes2["ElderGuardian"] = "elder_guardian";
    MinecraftEntityTypes2["EnderCrystal"] = "ender_crystal";
    MinecraftEntityTypes2["EnderDragon"] = "ender_dragon";
    MinecraftEntityTypes2["EnderPearl"] = "ender_pearl";
    MinecraftEntityTypes2["Enderman"] = "enderman";
    MinecraftEntityTypes2["Endermite"] = "endermite";
    MinecraftEntityTypes2["EvocationIllager"] = "evocation_illager";
    MinecraftEntityTypes2["EyeOfEnderSignal"] = "eye_of_ender_signal";
    MinecraftEntityTypes2["Fireball"] = "fireball";
    MinecraftEntityTypes2["FireworksRocket"] = "fireworks_rocket";
    MinecraftEntityTypes2["FishingHook"] = "fishing_hook";
    MinecraftEntityTypes2["Fox"] = "fox";
    MinecraftEntityTypes2["Frog"] = "frog";
    MinecraftEntityTypes2["Ghast"] = "ghast";
    MinecraftEntityTypes2["GlowSquid"] = "glow_squid";
    MinecraftEntityTypes2["Goat"] = "goat";
    MinecraftEntityTypes2["Guardian"] = "guardian";
    MinecraftEntityTypes2["Hoglin"] = "hoglin";
    MinecraftEntityTypes2["HopperMinecart"] = "hopper_minecart";
    MinecraftEntityTypes2["Horse"] = "horse";
    MinecraftEntityTypes2["Husk"] = "husk";
    MinecraftEntityTypes2["IronGolem"] = "iron_golem";
    MinecraftEntityTypes2["LightningBolt"] = "lightning_bolt";
    MinecraftEntityTypes2["LingeringPotion"] = "lingering_potion";
    MinecraftEntityTypes2["Llama"] = "llama";
    MinecraftEntityTypes2["LlamaSpit"] = "llama_spit";
    MinecraftEntityTypes2["MagmaCube"] = "magma_cube";
    MinecraftEntityTypes2["Minecart"] = "minecart";
    MinecraftEntityTypes2["Mooshroom"] = "mooshroom";
    MinecraftEntityTypes2["Mule"] = "mule";
    MinecraftEntityTypes2["Npc"] = "npc";
    MinecraftEntityTypes2["Ocelot"] = "ocelot";
    MinecraftEntityTypes2["Panda"] = "panda";
    MinecraftEntityTypes2["Parrot"] = "parrot";
    MinecraftEntityTypes2["Phantom"] = "phantom";
    MinecraftEntityTypes2["Pig"] = "pig";
    MinecraftEntityTypes2["Piglin"] = "piglin";
    MinecraftEntityTypes2["PiglinBrute"] = "piglin_brute";
    MinecraftEntityTypes2["Pillager"] = "pillager";
    MinecraftEntityTypes2["Player"] = "player";
    MinecraftEntityTypes2["PolarBear"] = "polar_bear";
    MinecraftEntityTypes2["Pufferfish"] = "pufferfish";
    MinecraftEntityTypes2["Rabbit"] = "rabbit";
    MinecraftEntityTypes2["Ravager"] = "ravager";
    MinecraftEntityTypes2["Salmon"] = "salmon";
    MinecraftEntityTypes2["Sheep"] = "sheep";
    MinecraftEntityTypes2["Shulker"] = "shulker";
    MinecraftEntityTypes2["ShulkerBullet"] = "shulker_bullet";
    MinecraftEntityTypes2["Silverfish"] = "silverfish";
    MinecraftEntityTypes2["Skeleton"] = "skeleton";
    MinecraftEntityTypes2["SkeletonHorse"] = "skeleton_horse";
    MinecraftEntityTypes2["Slime"] = "slime";
    MinecraftEntityTypes2["SmallFireball"] = "small_fireball";
    MinecraftEntityTypes2["Sniffer"] = "sniffer";
    MinecraftEntityTypes2["SnowGolem"] = "snow_golem";
    MinecraftEntityTypes2["Snowball"] = "snowball";
    MinecraftEntityTypes2["Spider"] = "spider";
    MinecraftEntityTypes2["SplashPotion"] = "splash_potion";
    MinecraftEntityTypes2["Squid"] = "squid";
    MinecraftEntityTypes2["Stray"] = "stray";
    MinecraftEntityTypes2["Strider"] = "strider";
    MinecraftEntityTypes2["Tadpole"] = "tadpole";
    MinecraftEntityTypes2["ThrownTrident"] = "thrown_trident";
    MinecraftEntityTypes2["Tnt"] = "tnt";
    MinecraftEntityTypes2["TntMinecart"] = "tnt_minecart";
    MinecraftEntityTypes2["TraderLlama"] = "trader_llama";
    MinecraftEntityTypes2["TripodCamera"] = "tripod_camera";
    MinecraftEntityTypes2["Tropicalfish"] = "tropicalfish";
    MinecraftEntityTypes2["Turtle"] = "turtle";
    MinecraftEntityTypes2["Vex"] = "vex";
    MinecraftEntityTypes2["Villager"] = "villager";
    MinecraftEntityTypes2["VillagerV2"] = "villager_v2";
    MinecraftEntityTypes2["Vindicator"] = "vindicator";
    MinecraftEntityTypes2["WanderingTrader"] = "wandering_trader";
    MinecraftEntityTypes2["Warden"] = "warden";
    MinecraftEntityTypes2["Witch"] = "witch";
    MinecraftEntityTypes2["Wither"] = "wither";
    MinecraftEntityTypes2["WitherSkeleton"] = "wither_skeleton";
    MinecraftEntityTypes2["WitherSkull"] = "wither_skull";
    MinecraftEntityTypes2["WitherSkullDangerous"] = "wither_skull_dangerous";
    MinecraftEntityTypes2["Wolf"] = "wolf";
    MinecraftEntityTypes2["XpBottle"] = "xp_bottle";
    MinecraftEntityTypes2["XpOrb"] = "xp_orb";
    MinecraftEntityTypes2["Zoglin"] = "zoglin";
    MinecraftEntityTypes2["Zombie"] = "zombie";
    MinecraftEntityTypes2["ZombieHorse"] = "zombie_horse";
    MinecraftEntityTypes2["ZombiePigman"] = "zombie_pigman";
    MinecraftEntityTypes2["ZombieVillager"] = "zombie_villager";
    MinecraftEntityTypes2["ZombieVillagerV2"] = "zombie_villager_v2";
    return MinecraftEntityTypes2;
})(MinecraftEntityTypes || {});

var MinecraftItemTypes = (MinecraftItemTypes2 => {
    MinecraftItemTypes2["AcaciaBoat"] = "minecraft:acacia_boat";
    MinecraftItemTypes2["AcaciaButton"] = "minecraft:acacia_button";
    MinecraftItemTypes2["AcaciaChestBoat"] = "minecraft:acacia_chest_boat";
    MinecraftItemTypes2["AcaciaDoor"] = "minecraft:acacia_door";
    MinecraftItemTypes2["AcaciaFence"] = "minecraft:acacia_fence";
    MinecraftItemTypes2["AcaciaFenceGate"] = "minecraft:acacia_fence_gate";
    MinecraftItemTypes2["AcaciaHangingSign"] = "minecraft:acacia_hanging_sign";
    MinecraftItemTypes2["AcaciaLog"] = "minecraft:acacia_log";
    MinecraftItemTypes2["AcaciaPressurePlate"] = "minecraft:acacia_pressure_plate";
    MinecraftItemTypes2["AcaciaSign"] = "minecraft:acacia_sign";
    MinecraftItemTypes2["AcaciaStairs"] = "minecraft:acacia_stairs";
    MinecraftItemTypes2["AcaciaTrapdoor"] = "minecraft:acacia_trapdoor";
    MinecraftItemTypes2["ActivatorRail"] = "minecraft:activator_rail";
    MinecraftItemTypes2["AllaySpawnEgg"] = "minecraft:allay_spawn_egg";
    MinecraftItemTypes2["Allow"] = "minecraft:allow";
    MinecraftItemTypes2["AmethystBlock"] = "minecraft:amethyst_block";
    MinecraftItemTypes2["AmethystCluster"] = "minecraft:amethyst_cluster";
    MinecraftItemTypes2["AmethystShard"] = "minecraft:amethyst_shard";
    MinecraftItemTypes2["AncientDebris"] = "minecraft:ancient_debris";
    MinecraftItemTypes2["AndesiteStairs"] = "minecraft:andesite_stairs";
    MinecraftItemTypes2["AnglerPotterySherd"] = "minecraft:angler_pottery_sherd";
    MinecraftItemTypes2["Anvil"] = "minecraft:anvil";
    MinecraftItemTypes2["Apple"] = "minecraft:apple";
    MinecraftItemTypes2["ArcherPotterySherd"] = "minecraft:archer_pottery_sherd";
    MinecraftItemTypes2["ArmorStand"] = "minecraft:armor_stand";
    MinecraftItemTypes2["ArmsUpPotterySherd"] = "minecraft:arms_up_pottery_sherd";
    MinecraftItemTypes2["Arrow"] = "minecraft:arrow";
    MinecraftItemTypes2["AxolotlBucket"] = "minecraft:axolotl_bucket";
    MinecraftItemTypes2["AxolotlSpawnEgg"] = "minecraft:axolotl_spawn_egg";
    MinecraftItemTypes2["Azalea"] = "minecraft:azalea";
    MinecraftItemTypes2["AzaleaLeaves"] = "minecraft:azalea_leaves";
    MinecraftItemTypes2["AzaleaLeavesFlowered"] = "minecraft:azalea_leaves_flowered";
    MinecraftItemTypes2["BakedPotato"] = "minecraft:baked_potato";
    MinecraftItemTypes2["Bamboo"] = "minecraft:bamboo";
    MinecraftItemTypes2["BambooBlock"] = "minecraft:bamboo_block";
    MinecraftItemTypes2["BambooButton"] = "minecraft:bamboo_button";
    MinecraftItemTypes2["BambooChestRaft"] = "minecraft:bamboo_chest_raft";
    MinecraftItemTypes2["BambooDoor"] = "minecraft:bamboo_door";
    MinecraftItemTypes2["BambooFence"] = "minecraft:bamboo_fence";
    MinecraftItemTypes2["BambooFenceGate"] = "minecraft:bamboo_fence_gate";
    MinecraftItemTypes2["BambooHangingSign"] = "minecraft:bamboo_hanging_sign";
    MinecraftItemTypes2["BambooMosaic"] = "minecraft:bamboo_mosaic";
    MinecraftItemTypes2["BambooMosaicSlab"] = "minecraft:bamboo_mosaic_slab";
    MinecraftItemTypes2["BambooMosaicStairs"] = "minecraft:bamboo_mosaic_stairs";
    MinecraftItemTypes2["BambooPlanks"] = "minecraft:bamboo_planks";
    MinecraftItemTypes2["BambooPressurePlate"] = "minecraft:bamboo_pressure_plate";
    MinecraftItemTypes2["BambooRaft"] = "minecraft:bamboo_raft";
    MinecraftItemTypes2["BambooSign"] = "minecraft:bamboo_sign";
    MinecraftItemTypes2["BambooSlab"] = "minecraft:bamboo_slab";
    MinecraftItemTypes2["BambooStairs"] = "minecraft:bamboo_stairs";
    MinecraftItemTypes2["BambooTrapdoor"] = "minecraft:bamboo_trapdoor";
    MinecraftItemTypes2["Banner"] = "minecraft:banner";
    MinecraftItemTypes2["BannerPattern"] = "minecraft:banner_pattern";
    MinecraftItemTypes2["Barrel"] = "minecraft:barrel";
    MinecraftItemTypes2["Barrier"] = "minecraft:barrier";
    MinecraftItemTypes2["Basalt"] = "minecraft:basalt";
    MinecraftItemTypes2["BatSpawnEgg"] = "minecraft:bat_spawn_egg";
    MinecraftItemTypes2["Beacon"] = "minecraft:beacon";
    MinecraftItemTypes2["Bed"] = "minecraft:bed";
    MinecraftItemTypes2["Bedrock"] = "minecraft:bedrock";
    MinecraftItemTypes2["BeeNest"] = "minecraft:bee_nest";
    MinecraftItemTypes2["BeeSpawnEgg"] = "minecraft:bee_spawn_egg";
    MinecraftItemTypes2["Beef"] = "minecraft:beef";
    MinecraftItemTypes2["Beehive"] = "minecraft:beehive";
    MinecraftItemTypes2["Beetroot"] = "minecraft:beetroot";
    MinecraftItemTypes2["BeetrootSeeds"] = "minecraft:beetroot_seeds";
    MinecraftItemTypes2["BeetrootSoup"] = "minecraft:beetroot_soup";
    MinecraftItemTypes2["Bell"] = "minecraft:bell";
    MinecraftItemTypes2["BigDripleaf"] = "minecraft:big_dripleaf";
    MinecraftItemTypes2["BirchBoat"] = "minecraft:birch_boat";
    MinecraftItemTypes2["BirchButton"] = "minecraft:birch_button";
    MinecraftItemTypes2["BirchChestBoat"] = "minecraft:birch_chest_boat";
    MinecraftItemTypes2["BirchDoor"] = "minecraft:birch_door";
    MinecraftItemTypes2["BirchFence"] = "minecraft:birch_fence";
    MinecraftItemTypes2["BirchFenceGate"] = "minecraft:birch_fence_gate";
    MinecraftItemTypes2["BirchHangingSign"] = "minecraft:birch_hanging_sign";
    MinecraftItemTypes2["BirchLog"] = "minecraft:birch_log";
    MinecraftItemTypes2["BirchPressurePlate"] = "minecraft:birch_pressure_plate";
    MinecraftItemTypes2["BirchSign"] = "minecraft:birch_sign";
    MinecraftItemTypes2["BirchStairs"] = "minecraft:birch_stairs";
    MinecraftItemTypes2["BirchTrapdoor"] = "minecraft:birch_trapdoor";
    MinecraftItemTypes2["BlackCandle"] = "minecraft:black_candle";
    MinecraftItemTypes2["BlackCarpet"] = "minecraft:black_carpet";
    MinecraftItemTypes2["BlackConcrete"] = "minecraft:black_concrete";
    MinecraftItemTypes2["BlackConcretePowder"] = "minecraft:black_concrete_powder";
    MinecraftItemTypes2["BlackDye"] = "minecraft:black_dye";
    MinecraftItemTypes2["BlackGlazedTerracotta"] = "minecraft:black_glazed_terracotta";
    MinecraftItemTypes2["BlackShulkerBox"] = "minecraft:black_shulker_box";
    MinecraftItemTypes2["BlackStainedGlass"] = "minecraft:black_stained_glass";
    MinecraftItemTypes2["BlackStainedGlassPane"] = "minecraft:black_stained_glass_pane";
    MinecraftItemTypes2["BlackTerracotta"] = "minecraft:black_terracotta";
    MinecraftItemTypes2["BlackWool"] = "minecraft:black_wool";
    MinecraftItemTypes2["Blackstone"] = "minecraft:blackstone";
    MinecraftItemTypes2["BlackstoneSlab"] = "minecraft:blackstone_slab";
    MinecraftItemTypes2["BlackstoneStairs"] = "minecraft:blackstone_stairs";
    MinecraftItemTypes2["BlackstoneWall"] = "minecraft:blackstone_wall";
    MinecraftItemTypes2["BladePotterySherd"] = "minecraft:blade_pottery_sherd";
    MinecraftItemTypes2["BlastFurnace"] = "minecraft:blast_furnace";
    MinecraftItemTypes2["BlazePowder"] = "minecraft:blaze_powder";
    MinecraftItemTypes2["BlazeRod"] = "minecraft:blaze_rod";
    MinecraftItemTypes2["BlazeSpawnEgg"] = "minecraft:blaze_spawn_egg";
    MinecraftItemTypes2["BlueCandle"] = "minecraft:blue_candle";
    MinecraftItemTypes2["BlueCarpet"] = "minecraft:blue_carpet";
    MinecraftItemTypes2["BlueConcrete"] = "minecraft:blue_concrete";
    MinecraftItemTypes2["BlueConcretePowder"] = "minecraft:blue_concrete_powder";
    MinecraftItemTypes2["BlueDye"] = "minecraft:blue_dye";
    MinecraftItemTypes2["BlueGlazedTerracotta"] = "minecraft:blue_glazed_terracotta";
    MinecraftItemTypes2["BlueIce"] = "minecraft:blue_ice";
    MinecraftItemTypes2["BlueShulkerBox"] = "minecraft:blue_shulker_box";
    MinecraftItemTypes2["BlueStainedGlass"] = "minecraft:blue_stained_glass";
    MinecraftItemTypes2["BlueStainedGlassPane"] = "minecraft:blue_stained_glass_pane";
    MinecraftItemTypes2["BlueTerracotta"] = "minecraft:blue_terracotta";
    MinecraftItemTypes2["BlueWool"] = "minecraft:blue_wool";
    MinecraftItemTypes2["Boat"] = "minecraft:boat";
    MinecraftItemTypes2["Bone"] = "minecraft:bone";
    MinecraftItemTypes2["BoneBlock"] = "minecraft:bone_block";
    MinecraftItemTypes2["BoneMeal"] = "minecraft:bone_meal";
    MinecraftItemTypes2["Book"] = "minecraft:book";
    MinecraftItemTypes2["Bookshelf"] = "minecraft:bookshelf";
    MinecraftItemTypes2["BorderBlock"] = "minecraft:border_block";
    MinecraftItemTypes2["BordureIndentedBannerPattern"] = "minecraft:bordure_indented_banner_pattern";
    MinecraftItemTypes2["Bow"] = "minecraft:bow";
    MinecraftItemTypes2["Bowl"] = "minecraft:bowl";
    MinecraftItemTypes2["BrainCoral"] = "minecraft:brain_coral";
    MinecraftItemTypes2["Bread"] = "minecraft:bread";
    MinecraftItemTypes2["BrewerPotterySherd"] = "minecraft:brewer_pottery_sherd";
    MinecraftItemTypes2["BrewingStand"] = "minecraft:brewing_stand";
    MinecraftItemTypes2["Brick"] = "minecraft:brick";
    MinecraftItemTypes2["BrickBlock"] = "minecraft:brick_block";
    MinecraftItemTypes2["BrickStairs"] = "minecraft:brick_stairs";
    MinecraftItemTypes2["BrownCandle"] = "minecraft:brown_candle";
    MinecraftItemTypes2["BrownCarpet"] = "minecraft:brown_carpet";
    MinecraftItemTypes2["BrownConcrete"] = "minecraft:brown_concrete";
    MinecraftItemTypes2["BrownConcretePowder"] = "minecraft:brown_concrete_powder";
    MinecraftItemTypes2["BrownDye"] = "minecraft:brown_dye";
    MinecraftItemTypes2["BrownGlazedTerracotta"] = "minecraft:brown_glazed_terracotta";
    MinecraftItemTypes2["BrownMushroom"] = "minecraft:brown_mushroom";
    MinecraftItemTypes2["BrownMushroomBlock"] = "minecraft:brown_mushroom_block";
    MinecraftItemTypes2["BrownShulkerBox"] = "minecraft:brown_shulker_box";
    MinecraftItemTypes2["BrownStainedGlass"] = "minecraft:brown_stained_glass";
    MinecraftItemTypes2["BrownStainedGlassPane"] = "minecraft:brown_stained_glass_pane";
    MinecraftItemTypes2["BrownTerracotta"] = "minecraft:brown_terracotta";
    MinecraftItemTypes2["BrownWool"] = "minecraft:brown_wool";
    MinecraftItemTypes2["Brush"] = "minecraft:brush";
    MinecraftItemTypes2["BubbleCoral"] = "minecraft:bubble_coral";
    MinecraftItemTypes2["Bucket"] = "minecraft:bucket";
    MinecraftItemTypes2["BuddingAmethyst"] = "minecraft:budding_amethyst";
    MinecraftItemTypes2["BurnPotterySherd"] = "minecraft:burn_pottery_sherd";
    MinecraftItemTypes2["Cactus"] = "minecraft:cactus";
    MinecraftItemTypes2["Cake"] = "minecraft:cake";
    MinecraftItemTypes2["Calcite"] = "minecraft:calcite";
    MinecraftItemTypes2["CalibratedSculkSensor"] = "minecraft:calibrated_sculk_sensor";
    MinecraftItemTypes2["CamelSpawnEgg"] = "minecraft:camel_spawn_egg";
    MinecraftItemTypes2["Campfire"] = "minecraft:campfire";
    MinecraftItemTypes2["Candle"] = "minecraft:candle";
    MinecraftItemTypes2["Carpet"] = "minecraft:carpet";
    MinecraftItemTypes2["Carrot"] = "minecraft:carrot";
    MinecraftItemTypes2["CarrotOnAStick"] = "minecraft:carrot_on_a_stick";
    MinecraftItemTypes2["CartographyTable"] = "minecraft:cartography_table";
    MinecraftItemTypes2["CarvedPumpkin"] = "minecraft:carved_pumpkin";
    MinecraftItemTypes2["CatSpawnEgg"] = "minecraft:cat_spawn_egg";
    MinecraftItemTypes2["Cauldron"] = "minecraft:cauldron";
    MinecraftItemTypes2["CaveSpiderSpawnEgg"] = "minecraft:cave_spider_spawn_egg";
    MinecraftItemTypes2["Chain"] = "minecraft:chain";
    MinecraftItemTypes2["ChainCommandBlock"] = "minecraft:chain_command_block";
    MinecraftItemTypes2["ChainmailBoots"] = "minecraft:chainmail_boots";
    MinecraftItemTypes2["ChainmailChestplate"] = "minecraft:chainmail_chestplate";
    MinecraftItemTypes2["ChainmailHelmet"] = "minecraft:chainmail_helmet";
    MinecraftItemTypes2["ChainmailLeggings"] = "minecraft:chainmail_leggings";
    MinecraftItemTypes2["Charcoal"] = "minecraft:charcoal";
    MinecraftItemTypes2["CherryBoat"] = "minecraft:cherry_boat";
    MinecraftItemTypes2["CherryButton"] = "minecraft:cherry_button";
    MinecraftItemTypes2["CherryChestBoat"] = "minecraft:cherry_chest_boat";
    MinecraftItemTypes2["CherryDoor"] = "minecraft:cherry_door";
    MinecraftItemTypes2["CherryFence"] = "minecraft:cherry_fence";
    MinecraftItemTypes2["CherryFenceGate"] = "minecraft:cherry_fence_gate";
    MinecraftItemTypes2["CherryHangingSign"] = "minecraft:cherry_hanging_sign";
    MinecraftItemTypes2["CherryLeaves"] = "minecraft:cherry_leaves";
    MinecraftItemTypes2["CherryLog"] = "minecraft:cherry_log";
    MinecraftItemTypes2["CherryPlanks"] = "minecraft:cherry_planks";
    MinecraftItemTypes2["CherryPressurePlate"] = "minecraft:cherry_pressure_plate";
    MinecraftItemTypes2["CherrySapling"] = "minecraft:cherry_sapling";
    MinecraftItemTypes2["CherrySign"] = "minecraft:cherry_sign";
    MinecraftItemTypes2["CherrySlab"] = "minecraft:cherry_slab";
    MinecraftItemTypes2["CherryStairs"] = "minecraft:cherry_stairs";
    MinecraftItemTypes2["CherryTrapdoor"] = "minecraft:cherry_trapdoor";
    MinecraftItemTypes2["CherryWood"] = "minecraft:cherry_wood";
    MinecraftItemTypes2["Chest"] = "minecraft:chest";
    MinecraftItemTypes2["ChestBoat"] = "minecraft:chest_boat";
    MinecraftItemTypes2["ChestMinecart"] = "minecraft:chest_minecart";
    MinecraftItemTypes2["Chicken"] = "minecraft:chicken";
    MinecraftItemTypes2["ChickenSpawnEgg"] = "minecraft:chicken_spawn_egg";
    MinecraftItemTypes2["ChiseledBookshelf"] = "minecraft:chiseled_bookshelf";
    MinecraftItemTypes2["ChiseledDeepslate"] = "minecraft:chiseled_deepslate";
    MinecraftItemTypes2["ChiseledNetherBricks"] = "minecraft:chiseled_nether_bricks";
    MinecraftItemTypes2["ChiseledPolishedBlackstone"] = "minecraft:chiseled_polished_blackstone";
    MinecraftItemTypes2["ChorusFlower"] = "minecraft:chorus_flower";
    MinecraftItemTypes2["ChorusFruit"] = "minecraft:chorus_fruit";
    MinecraftItemTypes2["ChorusPlant"] = "minecraft:chorus_plant";
    MinecraftItemTypes2["Clay"] = "minecraft:clay";
    MinecraftItemTypes2["ClayBall"] = "minecraft:clay_ball";
    MinecraftItemTypes2["Clock"] = "minecraft:clock";
    MinecraftItemTypes2["Coal"] = "minecraft:coal";
    MinecraftItemTypes2["CoalBlock"] = "minecraft:coal_block";
    MinecraftItemTypes2["CoalOre"] = "minecraft:coal_ore";
    MinecraftItemTypes2["CoastArmorTrimSmithingTemplate"] = "minecraft:coast_armor_trim_smithing_template";
    MinecraftItemTypes2["CobbledDeepslate"] = "minecraft:cobbled_deepslate";
    MinecraftItemTypes2["CobbledDeepslateSlab"] = "minecraft:cobbled_deepslate_slab";
    MinecraftItemTypes2["CobbledDeepslateStairs"] = "minecraft:cobbled_deepslate_stairs";
    MinecraftItemTypes2["CobbledDeepslateWall"] = "minecraft:cobbled_deepslate_wall";
    MinecraftItemTypes2["Cobblestone"] = "minecraft:cobblestone";
    MinecraftItemTypes2["CobblestoneWall"] = "minecraft:cobblestone_wall";
    MinecraftItemTypes2["CocoaBeans"] = "minecraft:cocoa_beans";
    MinecraftItemTypes2["Cod"] = "minecraft:cod";
    MinecraftItemTypes2["CodBucket"] = "minecraft:cod_bucket";
    MinecraftItemTypes2["CodSpawnEgg"] = "minecraft:cod_spawn_egg";
    MinecraftItemTypes2["CommandBlock"] = "minecraft:command_block";
    MinecraftItemTypes2["CommandBlockMinecart"] = "minecraft:command_block_minecart";
    MinecraftItemTypes2["Comparator"] = "minecraft:comparator";
    MinecraftItemTypes2["Compass"] = "minecraft:compass";
    MinecraftItemTypes2["Composter"] = "minecraft:composter";
    MinecraftItemTypes2["Concrete"] = "minecraft:concrete";
    MinecraftItemTypes2["ConcretePowder"] = "minecraft:concrete_powder";
    MinecraftItemTypes2["Conduit"] = "minecraft:conduit";
    MinecraftItemTypes2["CookedBeef"] = "minecraft:cooked_beef";
    MinecraftItemTypes2["CookedChicken"] = "minecraft:cooked_chicken";
    MinecraftItemTypes2["CookedCod"] = "minecraft:cooked_cod";
    MinecraftItemTypes2["CookedMutton"] = "minecraft:cooked_mutton";
    MinecraftItemTypes2["CookedPorkchop"] = "minecraft:cooked_porkchop";
    MinecraftItemTypes2["CookedRabbit"] = "minecraft:cooked_rabbit";
    MinecraftItemTypes2["CookedSalmon"] = "minecraft:cooked_salmon";
    MinecraftItemTypes2["Cookie"] = "minecraft:cookie";
    MinecraftItemTypes2["CopperBlock"] = "minecraft:copper_block";
    MinecraftItemTypes2["CopperIngot"] = "minecraft:copper_ingot";
    MinecraftItemTypes2["CopperOre"] = "minecraft:copper_ore";
    MinecraftItemTypes2["Coral"] = "minecraft:coral";
    MinecraftItemTypes2["CoralBlock"] = "minecraft:coral_block";
    MinecraftItemTypes2["CoralFan"] = "minecraft:coral_fan";
    MinecraftItemTypes2["CoralFanDead"] = "minecraft:coral_fan_dead";
    MinecraftItemTypes2["CowSpawnEgg"] = "minecraft:cow_spawn_egg";
    MinecraftItemTypes2["CrackedDeepslateBricks"] = "minecraft:cracked_deepslate_bricks";
    MinecraftItemTypes2["CrackedDeepslateTiles"] = "minecraft:cracked_deepslate_tiles";
    MinecraftItemTypes2["CrackedNetherBricks"] = "minecraft:cracked_nether_bricks";
    MinecraftItemTypes2["CrackedPolishedBlackstoneBricks"] = "minecraft:cracked_polished_blackstone_bricks";
    MinecraftItemTypes2["CraftingTable"] = "minecraft:crafting_table";
    MinecraftItemTypes2["CreeperBannerPattern"] = "minecraft:creeper_banner_pattern";
    MinecraftItemTypes2["CreeperSpawnEgg"] = "minecraft:creeper_spawn_egg";
    MinecraftItemTypes2["CrimsonButton"] = "minecraft:crimson_button";
    MinecraftItemTypes2["CrimsonDoor"] = "minecraft:crimson_door";
    MinecraftItemTypes2["CrimsonFence"] = "minecraft:crimson_fence";
    MinecraftItemTypes2["CrimsonFenceGate"] = "minecraft:crimson_fence_gate";
    MinecraftItemTypes2["CrimsonFungus"] = "minecraft:crimson_fungus";
    MinecraftItemTypes2["CrimsonHangingSign"] = "minecraft:crimson_hanging_sign";
    MinecraftItemTypes2["CrimsonHyphae"] = "minecraft:crimson_hyphae";
    MinecraftItemTypes2["CrimsonNylium"] = "minecraft:crimson_nylium";
    MinecraftItemTypes2["CrimsonPlanks"] = "minecraft:crimson_planks";
    MinecraftItemTypes2["CrimsonPressurePlate"] = "minecraft:crimson_pressure_plate";
    MinecraftItemTypes2["CrimsonRoots"] = "minecraft:crimson_roots";
    MinecraftItemTypes2["CrimsonSign"] = "minecraft:crimson_sign";
    MinecraftItemTypes2["CrimsonSlab"] = "minecraft:crimson_slab";
    MinecraftItemTypes2["CrimsonStairs"] = "minecraft:crimson_stairs";
    MinecraftItemTypes2["CrimsonStem"] = "minecraft:crimson_stem";
    MinecraftItemTypes2["CrimsonTrapdoor"] = "minecraft:crimson_trapdoor";
    MinecraftItemTypes2["Crossbow"] = "minecraft:crossbow";
    MinecraftItemTypes2["CryingObsidian"] = "minecraft:crying_obsidian";
    MinecraftItemTypes2["CutCopper"] = "minecraft:cut_copper";
    MinecraftItemTypes2["CutCopperSlab"] = "minecraft:cut_copper_slab";
    MinecraftItemTypes2["CutCopperStairs"] = "minecraft:cut_copper_stairs";
    MinecraftItemTypes2["CyanCandle"] = "minecraft:cyan_candle";
    MinecraftItemTypes2["CyanCarpet"] = "minecraft:cyan_carpet";
    MinecraftItemTypes2["CyanConcrete"] = "minecraft:cyan_concrete";
    MinecraftItemTypes2["CyanConcretePowder"] = "minecraft:cyan_concrete_powder";
    MinecraftItemTypes2["CyanDye"] = "minecraft:cyan_dye";
    MinecraftItemTypes2["CyanGlazedTerracotta"] = "minecraft:cyan_glazed_terracotta";
    MinecraftItemTypes2["CyanShulkerBox"] = "minecraft:cyan_shulker_box";
    MinecraftItemTypes2["CyanStainedGlass"] = "minecraft:cyan_stained_glass";
    MinecraftItemTypes2["CyanStainedGlassPane"] = "minecraft:cyan_stained_glass_pane";
    MinecraftItemTypes2["CyanTerracotta"] = "minecraft:cyan_terracotta";
    MinecraftItemTypes2["CyanWool"] = "minecraft:cyan_wool";
    MinecraftItemTypes2["DangerPotterySherd"] = "minecraft:danger_pottery_sherd";
    MinecraftItemTypes2["DarkOakBoat"] = "minecraft:dark_oak_boat";
    MinecraftItemTypes2["DarkOakButton"] = "minecraft:dark_oak_button";
    MinecraftItemTypes2["DarkOakChestBoat"] = "minecraft:dark_oak_chest_boat";
    MinecraftItemTypes2["DarkOakDoor"] = "minecraft:dark_oak_door";
    MinecraftItemTypes2["DarkOakFence"] = "minecraft:dark_oak_fence";
    MinecraftItemTypes2["DarkOakFenceGate"] = "minecraft:dark_oak_fence_gate";
    MinecraftItemTypes2["DarkOakHangingSign"] = "minecraft:dark_oak_hanging_sign";
    MinecraftItemTypes2["DarkOakLog"] = "minecraft:dark_oak_log";
    MinecraftItemTypes2["DarkOakPressurePlate"] = "minecraft:dark_oak_pressure_plate";
    MinecraftItemTypes2["DarkOakSign"] = "minecraft:dark_oak_sign";
    MinecraftItemTypes2["DarkOakStairs"] = "minecraft:dark_oak_stairs";
    MinecraftItemTypes2["DarkOakTrapdoor"] = "minecraft:dark_oak_trapdoor";
    MinecraftItemTypes2["DarkPrismarineStairs"] = "minecraft:dark_prismarine_stairs";
    MinecraftItemTypes2["DaylightDetector"] = "minecraft:daylight_detector";
    MinecraftItemTypes2["DeadBrainCoral"] = "minecraft:dead_brain_coral";
    MinecraftItemTypes2["DeadBubbleCoral"] = "minecraft:dead_bubble_coral";
    MinecraftItemTypes2["DeadFireCoral"] = "minecraft:dead_fire_coral";
    MinecraftItemTypes2["DeadHornCoral"] = "minecraft:dead_horn_coral";
    MinecraftItemTypes2["DeadTubeCoral"] = "minecraft:dead_tube_coral";
    MinecraftItemTypes2["Deadbush"] = "minecraft:deadbush";
    MinecraftItemTypes2["DecoratedPot"] = "minecraft:decorated_pot";
    MinecraftItemTypes2["Deepslate"] = "minecraft:deepslate";
    MinecraftItemTypes2["DeepslateBrickSlab"] = "minecraft:deepslate_brick_slab";
    MinecraftItemTypes2["DeepslateBrickStairs"] = "minecraft:deepslate_brick_stairs";
    MinecraftItemTypes2["DeepslateBrickWall"] = "minecraft:deepslate_brick_wall";
    MinecraftItemTypes2["DeepslateBricks"] = "minecraft:deepslate_bricks";
    MinecraftItemTypes2["DeepslateCoalOre"] = "minecraft:deepslate_coal_ore";
    MinecraftItemTypes2["DeepslateCopperOre"] = "minecraft:deepslate_copper_ore";
    MinecraftItemTypes2["DeepslateDiamondOre"] = "minecraft:deepslate_diamond_ore";
    MinecraftItemTypes2["DeepslateEmeraldOre"] = "minecraft:deepslate_emerald_ore";
    MinecraftItemTypes2["DeepslateGoldOre"] = "minecraft:deepslate_gold_ore";
    MinecraftItemTypes2["DeepslateIronOre"] = "minecraft:deepslate_iron_ore";
    MinecraftItemTypes2["DeepslateLapisOre"] = "minecraft:deepslate_lapis_ore";
    MinecraftItemTypes2["DeepslateRedstoneOre"] = "minecraft:deepslate_redstone_ore";
    MinecraftItemTypes2["DeepslateTileSlab"] = "minecraft:deepslate_tile_slab";
    MinecraftItemTypes2["DeepslateTileStairs"] = "minecraft:deepslate_tile_stairs";
    MinecraftItemTypes2["DeepslateTileWall"] = "minecraft:deepslate_tile_wall";
    MinecraftItemTypes2["DeepslateTiles"] = "minecraft:deepslate_tiles";
    MinecraftItemTypes2["Deny"] = "minecraft:deny";
    MinecraftItemTypes2["DetectorRail"] = "minecraft:detector_rail";
    MinecraftItemTypes2["Diamond"] = "minecraft:diamond";
    MinecraftItemTypes2["DiamondAxe"] = "minecraft:diamond_axe";
    MinecraftItemTypes2["DiamondBlock"] = "minecraft:diamond_block";
    MinecraftItemTypes2["DiamondBoots"] = "minecraft:diamond_boots";
    MinecraftItemTypes2["DiamondChestplate"] = "minecraft:diamond_chestplate";
    MinecraftItemTypes2["DiamondHelmet"] = "minecraft:diamond_helmet";
    MinecraftItemTypes2["DiamondHoe"] = "minecraft:diamond_hoe";
    MinecraftItemTypes2["DiamondHorseArmor"] = "minecraft:diamond_horse_armor";
    MinecraftItemTypes2["DiamondLeggings"] = "minecraft:diamond_leggings";
    MinecraftItemTypes2["DiamondOre"] = "minecraft:diamond_ore";
    MinecraftItemTypes2["DiamondPickaxe"] = "minecraft:diamond_pickaxe";
    MinecraftItemTypes2["DiamondShovel"] = "minecraft:diamond_shovel";
    MinecraftItemTypes2["DiamondSword"] = "minecraft:diamond_sword";
    MinecraftItemTypes2["DioriteStairs"] = "minecraft:diorite_stairs";
    MinecraftItemTypes2["Dirt"] = "minecraft:dirt";
    MinecraftItemTypes2["DirtWithRoots"] = "minecraft:dirt_with_roots";
    MinecraftItemTypes2["DiscFragment5"] = "minecraft:disc_fragment_5";
    MinecraftItemTypes2["Dispenser"] = "minecraft:dispenser";
    MinecraftItemTypes2["DolphinSpawnEgg"] = "minecraft:dolphin_spawn_egg";
    MinecraftItemTypes2["DonkeySpawnEgg"] = "minecraft:donkey_spawn_egg";
    MinecraftItemTypes2["DoublePlant"] = "minecraft:double_plant";
    MinecraftItemTypes2["DragonBreath"] = "minecraft:dragon_breath";
    MinecraftItemTypes2["DragonEgg"] = "minecraft:dragon_egg";
    MinecraftItemTypes2["DriedKelp"] = "minecraft:dried_kelp";
    MinecraftItemTypes2["DriedKelpBlock"] = "minecraft:dried_kelp_block";
    MinecraftItemTypes2["DripstoneBlock"] = "minecraft:dripstone_block";
    MinecraftItemTypes2["Dropper"] = "minecraft:dropper";
    MinecraftItemTypes2["DrownedSpawnEgg"] = "minecraft:drowned_spawn_egg";
    MinecraftItemTypes2["DuneArmorTrimSmithingTemplate"] = "minecraft:dune_armor_trim_smithing_template";
    MinecraftItemTypes2["Dye"] = "minecraft:dye";
    MinecraftItemTypes2["EchoShard"] = "minecraft:echo_shard";
    MinecraftItemTypes2["Egg"] = "minecraft:egg";
    MinecraftItemTypes2["ElderGuardianSpawnEgg"] = "minecraft:elder_guardian_spawn_egg";
    MinecraftItemTypes2["Elytra"] = "minecraft:elytra";
    MinecraftItemTypes2["Emerald"] = "minecraft:emerald";
    MinecraftItemTypes2["EmeraldBlock"] = "minecraft:emerald_block";
    MinecraftItemTypes2["EmeraldOre"] = "minecraft:emerald_ore";
    MinecraftItemTypes2["EmptyMap"] = "minecraft:empty_map";
    MinecraftItemTypes2["EnchantedBook"] = "minecraft:enchanted_book";
    MinecraftItemTypes2["EnchantedGoldenApple"] = "minecraft:enchanted_golden_apple";
    MinecraftItemTypes2["EnchantingTable"] = "minecraft:enchanting_table";
    MinecraftItemTypes2["EndBrickStairs"] = "minecraft:end_brick_stairs";
    MinecraftItemTypes2["EndBricks"] = "minecraft:end_bricks";
    MinecraftItemTypes2["EndCrystal"] = "minecraft:end_crystal";
    MinecraftItemTypes2["EndPortalFrame"] = "minecraft:end_portal_frame";
    MinecraftItemTypes2["EndRod"] = "minecraft:end_rod";
    MinecraftItemTypes2["EndStone"] = "minecraft:end_stone";
    MinecraftItemTypes2["EnderChest"] = "minecraft:ender_chest";
    MinecraftItemTypes2["EnderDragonSpawnEgg"] = "minecraft:ender_dragon_spawn_egg";
    MinecraftItemTypes2["EnderEye"] = "minecraft:ender_eye";
    MinecraftItemTypes2["EnderPearl"] = "minecraft:ender_pearl";
    MinecraftItemTypes2["EndermanSpawnEgg"] = "minecraft:enderman_spawn_egg";
    MinecraftItemTypes2["EndermiteSpawnEgg"] = "minecraft:endermite_spawn_egg";
    MinecraftItemTypes2["EvokerSpawnEgg"] = "minecraft:evoker_spawn_egg";
    MinecraftItemTypes2["ExperienceBottle"] = "minecraft:experience_bottle";
    MinecraftItemTypes2["ExplorerPotterySherd"] = "minecraft:explorer_pottery_sherd";
    MinecraftItemTypes2["ExposedCopper"] = "minecraft:exposed_copper";
    MinecraftItemTypes2["ExposedCutCopper"] = "minecraft:exposed_cut_copper";
    MinecraftItemTypes2["ExposedCutCopperSlab"] = "minecraft:exposed_cut_copper_slab";
    MinecraftItemTypes2["ExposedCutCopperStairs"] = "minecraft:exposed_cut_copper_stairs";
    MinecraftItemTypes2["EyeArmorTrimSmithingTemplate"] = "minecraft:eye_armor_trim_smithing_template";
    MinecraftItemTypes2["Farmland"] = "minecraft:farmland";
    MinecraftItemTypes2["Feather"] = "minecraft:feather";
    MinecraftItemTypes2["Fence"] = "minecraft:fence";
    MinecraftItemTypes2["FenceGate"] = "minecraft:fence_gate";
    MinecraftItemTypes2["FermentedSpiderEye"] = "minecraft:fermented_spider_eye";
    MinecraftItemTypes2["FieldMasonedBannerPattern"] = "minecraft:field_masoned_banner_pattern";
    MinecraftItemTypes2["FilledMap"] = "minecraft:filled_map";
    MinecraftItemTypes2["FireCharge"] = "minecraft:fire_charge";
    MinecraftItemTypes2["FireCoral"] = "minecraft:fire_coral";
    MinecraftItemTypes2["FireworkRocket"] = "minecraft:firework_rocket";
    MinecraftItemTypes2["FireworkStar"] = "minecraft:firework_star";
    MinecraftItemTypes2["FishingRod"] = "minecraft:fishing_rod";
    MinecraftItemTypes2["FletchingTable"] = "minecraft:fletching_table";
    MinecraftItemTypes2["Flint"] = "minecraft:flint";
    MinecraftItemTypes2["FlintAndSteel"] = "minecraft:flint_and_steel";
    MinecraftItemTypes2["FlowerBannerPattern"] = "minecraft:flower_banner_pattern";
    MinecraftItemTypes2["FlowerPot"] = "minecraft:flower_pot";
    MinecraftItemTypes2["FloweringAzalea"] = "minecraft:flowering_azalea";
    MinecraftItemTypes2["FoxSpawnEgg"] = "minecraft:fox_spawn_egg";
    MinecraftItemTypes2["Frame"] = "minecraft:frame";
    MinecraftItemTypes2["FriendPotterySherd"] = "minecraft:friend_pottery_sherd";
    MinecraftItemTypes2["FrogSpawn"] = "minecraft:frog_spawn";
    MinecraftItemTypes2["FrogSpawnEgg"] = "minecraft:frog_spawn_egg";
    MinecraftItemTypes2["FrostedIce"] = "minecraft:frosted_ice";
    MinecraftItemTypes2["Furnace"] = "minecraft:furnace";
    MinecraftItemTypes2["GhastSpawnEgg"] = "minecraft:ghast_spawn_egg";
    MinecraftItemTypes2["GhastTear"] = "minecraft:ghast_tear";
    MinecraftItemTypes2["GildedBlackstone"] = "minecraft:gilded_blackstone";
    MinecraftItemTypes2["Glass"] = "minecraft:glass";
    MinecraftItemTypes2["GlassBottle"] = "minecraft:glass_bottle";
    MinecraftItemTypes2["GlassPane"] = "minecraft:glass_pane";
    MinecraftItemTypes2["GlisteringMelonSlice"] = "minecraft:glistering_melon_slice";
    MinecraftItemTypes2["GlobeBannerPattern"] = "minecraft:globe_banner_pattern";
    MinecraftItemTypes2["GlowBerries"] = "minecraft:glow_berries";
    MinecraftItemTypes2["GlowFrame"] = "minecraft:glow_frame";
    MinecraftItemTypes2["GlowInkSac"] = "minecraft:glow_ink_sac";
    MinecraftItemTypes2["GlowLichen"] = "minecraft:glow_lichen";
    MinecraftItemTypes2["GlowSquidSpawnEgg"] = "minecraft:glow_squid_spawn_egg";
    MinecraftItemTypes2["Glowstone"] = "minecraft:glowstone";
    MinecraftItemTypes2["GlowstoneDust"] = "minecraft:glowstone_dust";
    MinecraftItemTypes2["GoatHorn"] = "minecraft:goat_horn";
    MinecraftItemTypes2["GoatSpawnEgg"] = "minecraft:goat_spawn_egg";
    MinecraftItemTypes2["GoldBlock"] = "minecraft:gold_block";
    MinecraftItemTypes2["GoldIngot"] = "minecraft:gold_ingot";
    MinecraftItemTypes2["GoldNugget"] = "minecraft:gold_nugget";
    MinecraftItemTypes2["GoldOre"] = "minecraft:gold_ore";
    MinecraftItemTypes2["GoldenApple"] = "minecraft:golden_apple";
    MinecraftItemTypes2["GoldenAxe"] = "minecraft:golden_axe";
    MinecraftItemTypes2["GoldenBoots"] = "minecraft:golden_boots";
    MinecraftItemTypes2["GoldenCarrot"] = "minecraft:golden_carrot";
    MinecraftItemTypes2["GoldenChestplate"] = "minecraft:golden_chestplate";
    MinecraftItemTypes2["GoldenHelmet"] = "minecraft:golden_helmet";
    MinecraftItemTypes2["GoldenHoe"] = "minecraft:golden_hoe";
    MinecraftItemTypes2["GoldenHorseArmor"] = "minecraft:golden_horse_armor";
    MinecraftItemTypes2["GoldenLeggings"] = "minecraft:golden_leggings";
    MinecraftItemTypes2["GoldenPickaxe"] = "minecraft:golden_pickaxe";
    MinecraftItemTypes2["GoldenRail"] = "minecraft:golden_rail";
    MinecraftItemTypes2["GoldenShovel"] = "minecraft:golden_shovel";
    MinecraftItemTypes2["GoldenSword"] = "minecraft:golden_sword";
    MinecraftItemTypes2["GraniteStairs"] = "minecraft:granite_stairs";
    MinecraftItemTypes2["Grass"] = "minecraft:grass";
    MinecraftItemTypes2["GrassPath"] = "minecraft:grass_path";
    MinecraftItemTypes2["Gravel"] = "minecraft:gravel";
    MinecraftItemTypes2["GrayCandle"] = "minecraft:gray_candle";
    MinecraftItemTypes2["GrayCarpet"] = "minecraft:gray_carpet";
    MinecraftItemTypes2["GrayConcrete"] = "minecraft:gray_concrete";
    MinecraftItemTypes2["GrayConcretePowder"] = "minecraft:gray_concrete_powder";
    MinecraftItemTypes2["GrayDye"] = "minecraft:gray_dye";
    MinecraftItemTypes2["GrayGlazedTerracotta"] = "minecraft:gray_glazed_terracotta";
    MinecraftItemTypes2["GrayShulkerBox"] = "minecraft:gray_shulker_box";
    MinecraftItemTypes2["GrayStainedGlass"] = "minecraft:gray_stained_glass";
    MinecraftItemTypes2["GrayStainedGlassPane"] = "minecraft:gray_stained_glass_pane";
    MinecraftItemTypes2["GrayTerracotta"] = "minecraft:gray_terracotta";
    MinecraftItemTypes2["GrayWool"] = "minecraft:gray_wool";
    MinecraftItemTypes2["GreenCandle"] = "minecraft:green_candle";
    MinecraftItemTypes2["GreenCarpet"] = "minecraft:green_carpet";
    MinecraftItemTypes2["GreenConcrete"] = "minecraft:green_concrete";
    MinecraftItemTypes2["GreenConcretePowder"] = "minecraft:green_concrete_powder";
    MinecraftItemTypes2["GreenDye"] = "minecraft:green_dye";
    MinecraftItemTypes2["GreenGlazedTerracotta"] = "minecraft:green_glazed_terracotta";
    MinecraftItemTypes2["GreenShulkerBox"] = "minecraft:green_shulker_box";
    MinecraftItemTypes2["GreenStainedGlass"] = "minecraft:green_stained_glass";
    MinecraftItemTypes2["GreenStainedGlassPane"] = "minecraft:green_stained_glass_pane";
    MinecraftItemTypes2["GreenTerracotta"] = "minecraft:green_terracotta";
    MinecraftItemTypes2["GreenWool"] = "minecraft:green_wool";
    MinecraftItemTypes2["Grindstone"] = "minecraft:grindstone";
    MinecraftItemTypes2["GuardianSpawnEgg"] = "minecraft:guardian_spawn_egg";
    MinecraftItemTypes2["Gunpowder"] = "minecraft:gunpowder";
    MinecraftItemTypes2["HangingRoots"] = "minecraft:hanging_roots";
    MinecraftItemTypes2["HardenedClay"] = "minecraft:hardened_clay";
    MinecraftItemTypes2["HayBlock"] = "minecraft:hay_block";
    MinecraftItemTypes2["HeartOfTheSea"] = "minecraft:heart_of_the_sea";
    MinecraftItemTypes2["HeartPotterySherd"] = "minecraft:heart_pottery_sherd";
    MinecraftItemTypes2["HeartbreakPotterySherd"] = "minecraft:heartbreak_pottery_sherd";
    MinecraftItemTypes2["HeavyWeightedPressurePlate"] = "minecraft:heavy_weighted_pressure_plate";
    MinecraftItemTypes2["HoglinSpawnEgg"] = "minecraft:hoglin_spawn_egg";
    MinecraftItemTypes2["HoneyBlock"] = "minecraft:honey_block";
    MinecraftItemTypes2["HoneyBottle"] = "minecraft:honey_bottle";
    MinecraftItemTypes2["Honeycomb"] = "minecraft:honeycomb";
    MinecraftItemTypes2["HoneycombBlock"] = "minecraft:honeycomb_block";
    MinecraftItemTypes2["Hopper"] = "minecraft:hopper";
    MinecraftItemTypes2["HopperMinecart"] = "minecraft:hopper_minecart";
    MinecraftItemTypes2["HornCoral"] = "minecraft:horn_coral";
    MinecraftItemTypes2["HorseSpawnEgg"] = "minecraft:horse_spawn_egg";
    MinecraftItemTypes2["HostArmorTrimSmithingTemplate"] = "minecraft:host_armor_trim_smithing_template";
    MinecraftItemTypes2["HowlPotterySherd"] = "minecraft:howl_pottery_sherd";
    MinecraftItemTypes2["HuskSpawnEgg"] = "minecraft:husk_spawn_egg";
    MinecraftItemTypes2["Ice"] = "minecraft:ice";
    MinecraftItemTypes2["InfestedDeepslate"] = "minecraft:infested_deepslate";
    MinecraftItemTypes2["InkSac"] = "minecraft:ink_sac";
    MinecraftItemTypes2["IronAxe"] = "minecraft:iron_axe";
    MinecraftItemTypes2["IronBars"] = "minecraft:iron_bars";
    MinecraftItemTypes2["IronBlock"] = "minecraft:iron_block";
    MinecraftItemTypes2["IronBoots"] = "minecraft:iron_boots";
    MinecraftItemTypes2["IronChestplate"] = "minecraft:iron_chestplate";
    MinecraftItemTypes2["IronDoor"] = "minecraft:iron_door";
    MinecraftItemTypes2["IronGolemSpawnEgg"] = "minecraft:iron_golem_spawn_egg";
    MinecraftItemTypes2["IronHelmet"] = "minecraft:iron_helmet";
    MinecraftItemTypes2["IronHoe"] = "minecraft:iron_hoe";
    MinecraftItemTypes2["IronHorseArmor"] = "minecraft:iron_horse_armor";
    MinecraftItemTypes2["IronIngot"] = "minecraft:iron_ingot";
    MinecraftItemTypes2["IronLeggings"] = "minecraft:iron_leggings";
    MinecraftItemTypes2["IronNugget"] = "minecraft:iron_nugget";
    MinecraftItemTypes2["IronOre"] = "minecraft:iron_ore";
    MinecraftItemTypes2["IronPickaxe"] = "minecraft:iron_pickaxe";
    MinecraftItemTypes2["IronShovel"] = "minecraft:iron_shovel";
    MinecraftItemTypes2["IronSword"] = "minecraft:iron_sword";
    MinecraftItemTypes2["IronTrapdoor"] = "minecraft:iron_trapdoor";
    MinecraftItemTypes2["Jigsaw"] = "minecraft:jigsaw";
    MinecraftItemTypes2["Jukebox"] = "minecraft:jukebox";
    MinecraftItemTypes2["JungleBoat"] = "minecraft:jungle_boat";
    MinecraftItemTypes2["JungleButton"] = "minecraft:jungle_button";
    MinecraftItemTypes2["JungleChestBoat"] = "minecraft:jungle_chest_boat";
    MinecraftItemTypes2["JungleDoor"] = "minecraft:jungle_door";
    MinecraftItemTypes2["JungleFence"] = "minecraft:jungle_fence";
    MinecraftItemTypes2["JungleFenceGate"] = "minecraft:jungle_fence_gate";
    MinecraftItemTypes2["JungleHangingSign"] = "minecraft:jungle_hanging_sign";
    MinecraftItemTypes2["JungleLog"] = "minecraft:jungle_log";
    MinecraftItemTypes2["JunglePressurePlate"] = "minecraft:jungle_pressure_plate";
    MinecraftItemTypes2["JungleSign"] = "minecraft:jungle_sign";
    MinecraftItemTypes2["JungleStairs"] = "minecraft:jungle_stairs";
    MinecraftItemTypes2["JungleTrapdoor"] = "minecraft:jungle_trapdoor";
    MinecraftItemTypes2["Kelp"] = "minecraft:kelp";
    MinecraftItemTypes2["Ladder"] = "minecraft:ladder";
    MinecraftItemTypes2["Lantern"] = "minecraft:lantern";
    MinecraftItemTypes2["LapisBlock"] = "minecraft:lapis_block";
    MinecraftItemTypes2["LapisLazuli"] = "minecraft:lapis_lazuli";
    MinecraftItemTypes2["LapisOre"] = "minecraft:lapis_ore";
    MinecraftItemTypes2["LargeAmethystBud"] = "minecraft:large_amethyst_bud";
    MinecraftItemTypes2["LavaBucket"] = "minecraft:lava_bucket";
    MinecraftItemTypes2["Lead"] = "minecraft:lead";
    MinecraftItemTypes2["Leather"] = "minecraft:leather";
    MinecraftItemTypes2["LeatherBoots"] = "minecraft:leather_boots";
    MinecraftItemTypes2["LeatherChestplate"] = "minecraft:leather_chestplate";
    MinecraftItemTypes2["LeatherHelmet"] = "minecraft:leather_helmet";
    MinecraftItemTypes2["LeatherHorseArmor"] = "minecraft:leather_horse_armor";
    MinecraftItemTypes2["LeatherLeggings"] = "minecraft:leather_leggings";
    MinecraftItemTypes2["Leaves"] = "minecraft:leaves";
    MinecraftItemTypes2["Leaves2"] = "minecraft:leaves2";
    MinecraftItemTypes2["Lectern"] = "minecraft:lectern";
    MinecraftItemTypes2["Lever"] = "minecraft:lever";
    MinecraftItemTypes2["LightBlock"] = "minecraft:light_block";
    MinecraftItemTypes2["LightBlueCandle"] = "minecraft:light_blue_candle";
    MinecraftItemTypes2["LightBlueCarpet"] = "minecraft:light_blue_carpet";
    MinecraftItemTypes2["LightBlueConcrete"] = "minecraft:light_blue_concrete";
    MinecraftItemTypes2["LightBlueConcretePowder"] = "minecraft:light_blue_concrete_powder";
    MinecraftItemTypes2["LightBlueDye"] = "minecraft:light_blue_dye";
    MinecraftItemTypes2["LightBlueGlazedTerracotta"] = "minecraft:light_blue_glazed_terracotta";
    MinecraftItemTypes2["LightBlueShulkerBox"] = "minecraft:light_blue_shulker_box";
    MinecraftItemTypes2["LightBlueStainedGlass"] = "minecraft:light_blue_stained_glass";
    MinecraftItemTypes2["LightBlueStainedGlassPane"] = "minecraft:light_blue_stained_glass_pane";
    MinecraftItemTypes2["LightBlueTerracotta"] = "minecraft:light_blue_terracotta";
    MinecraftItemTypes2["LightBlueWool"] = "minecraft:light_blue_wool";
    MinecraftItemTypes2["LightGrayCandle"] = "minecraft:light_gray_candle";
    MinecraftItemTypes2["LightGrayCarpet"] = "minecraft:light_gray_carpet";
    MinecraftItemTypes2["LightGrayConcrete"] = "minecraft:light_gray_concrete";
    MinecraftItemTypes2["LightGrayConcretePowder"] = "minecraft:light_gray_concrete_powder";
    MinecraftItemTypes2["LightGrayDye"] = "minecraft:light_gray_dye";
    MinecraftItemTypes2["LightGrayShulkerBox"] = "minecraft:light_gray_shulker_box";
    MinecraftItemTypes2["LightGrayStainedGlass"] = "minecraft:light_gray_stained_glass";
    MinecraftItemTypes2["LightGrayStainedGlassPane"] = "minecraft:light_gray_stained_glass_pane";
    MinecraftItemTypes2["LightGrayTerracotta"] = "minecraft:light_gray_terracotta";
    MinecraftItemTypes2["LightGrayWool"] = "minecraft:light_gray_wool";
    MinecraftItemTypes2["LightWeightedPressurePlate"] = "minecraft:light_weighted_pressure_plate";
    MinecraftItemTypes2["LightningRod"] = "minecraft:lightning_rod";
    MinecraftItemTypes2["LimeCandle"] = "minecraft:lime_candle";
    MinecraftItemTypes2["LimeCarpet"] = "minecraft:lime_carpet";
    MinecraftItemTypes2["LimeConcrete"] = "minecraft:lime_concrete";
    MinecraftItemTypes2["LimeConcretePowder"] = "minecraft:lime_concrete_powder";
    MinecraftItemTypes2["LimeDye"] = "minecraft:lime_dye";
    MinecraftItemTypes2["LimeGlazedTerracotta"] = "minecraft:lime_glazed_terracotta";
    MinecraftItemTypes2["LimeShulkerBox"] = "minecraft:lime_shulker_box";
    MinecraftItemTypes2["LimeStainedGlass"] = "minecraft:lime_stained_glass";
    MinecraftItemTypes2["LimeStainedGlassPane"] = "minecraft:lime_stained_glass_pane";
    MinecraftItemTypes2["LimeTerracotta"] = "minecraft:lime_terracotta";
    MinecraftItemTypes2["LimeWool"] = "minecraft:lime_wool";
    MinecraftItemTypes2["LingeringPotion"] = "minecraft:lingering_potion";
    MinecraftItemTypes2["LitPumpkin"] = "minecraft:lit_pumpkin";
    MinecraftItemTypes2["LlamaSpawnEgg"] = "minecraft:llama_spawn_egg";
    MinecraftItemTypes2["Lodestone"] = "minecraft:lodestone";
    MinecraftItemTypes2["LodestoneCompass"] = "minecraft:lodestone_compass";
    MinecraftItemTypes2["Log"] = "minecraft:log";
    MinecraftItemTypes2["Log2"] = "minecraft:log2";
    MinecraftItemTypes2["Loom"] = "minecraft:loom";
    MinecraftItemTypes2["MagentaCandle"] = "minecraft:magenta_candle";
    MinecraftItemTypes2["MagentaCarpet"] = "minecraft:magenta_carpet";
    MinecraftItemTypes2["MagentaConcrete"] = "minecraft:magenta_concrete";
    MinecraftItemTypes2["MagentaConcretePowder"] = "minecraft:magenta_concrete_powder";
    MinecraftItemTypes2["MagentaDye"] = "minecraft:magenta_dye";
    MinecraftItemTypes2["MagentaGlazedTerracotta"] = "minecraft:magenta_glazed_terracotta";
    MinecraftItemTypes2["MagentaShulkerBox"] = "minecraft:magenta_shulker_box";
    MinecraftItemTypes2["MagentaStainedGlass"] = "minecraft:magenta_stained_glass";
    MinecraftItemTypes2["MagentaStainedGlassPane"] = "minecraft:magenta_stained_glass_pane";
    MinecraftItemTypes2["MagentaTerracotta"] = "minecraft:magenta_terracotta";
    MinecraftItemTypes2["MagentaWool"] = "minecraft:magenta_wool";
    MinecraftItemTypes2["Magma"] = "minecraft:magma";
    MinecraftItemTypes2["MagmaCream"] = "minecraft:magma_cream";
    MinecraftItemTypes2["MagmaCubeSpawnEgg"] = "minecraft:magma_cube_spawn_egg";
    MinecraftItemTypes2["MangroveBoat"] = "minecraft:mangrove_boat";
    MinecraftItemTypes2["MangroveButton"] = "minecraft:mangrove_button";
    MinecraftItemTypes2["MangroveChestBoat"] = "minecraft:mangrove_chest_boat";
    MinecraftItemTypes2["MangroveDoor"] = "minecraft:mangrove_door";
    MinecraftItemTypes2["MangroveFence"] = "minecraft:mangrove_fence";
    MinecraftItemTypes2["MangroveFenceGate"] = "minecraft:mangrove_fence_gate";
    MinecraftItemTypes2["MangroveHangingSign"] = "minecraft:mangrove_hanging_sign";
    MinecraftItemTypes2["MangroveLeaves"] = "minecraft:mangrove_leaves";
    MinecraftItemTypes2["MangroveLog"] = "minecraft:mangrove_log";
    MinecraftItemTypes2["MangrovePlanks"] = "minecraft:mangrove_planks";
    MinecraftItemTypes2["MangrovePressurePlate"] = "minecraft:mangrove_pressure_plate";
    MinecraftItemTypes2["MangrovePropagule"] = "minecraft:mangrove_propagule";
    MinecraftItemTypes2["MangroveRoots"] = "minecraft:mangrove_roots";
    MinecraftItemTypes2["MangroveSign"] = "minecraft:mangrove_sign";
    MinecraftItemTypes2["MangroveSlab"] = "minecraft:mangrove_slab";
    MinecraftItemTypes2["MangroveStairs"] = "minecraft:mangrove_stairs";
    MinecraftItemTypes2["MangroveTrapdoor"] = "minecraft:mangrove_trapdoor";
    MinecraftItemTypes2["MangroveWood"] = "minecraft:mangrove_wood";
    MinecraftItemTypes2["MediumAmethystBud"] = "minecraft:medium_amethyst_bud";
    MinecraftItemTypes2["MelonBlock"] = "minecraft:melon_block";
    MinecraftItemTypes2["MelonSeeds"] = "minecraft:melon_seeds";
    MinecraftItemTypes2["MelonSlice"] = "minecraft:melon_slice";
    MinecraftItemTypes2["MilkBucket"] = "minecraft:milk_bucket";
    MinecraftItemTypes2["Minecart"] = "minecraft:minecart";
    MinecraftItemTypes2["MinerPotterySherd"] = "minecraft:miner_pottery_sherd";
    MinecraftItemTypes2["MobSpawner"] = "minecraft:mob_spawner";
    MinecraftItemTypes2["MojangBannerPattern"] = "minecraft:mojang_banner_pattern";
    MinecraftItemTypes2["MonsterEgg"] = "minecraft:monster_egg";
    MinecraftItemTypes2["MooshroomSpawnEgg"] = "minecraft:mooshroom_spawn_egg";
    MinecraftItemTypes2["MossBlock"] = "minecraft:moss_block";
    MinecraftItemTypes2["MossCarpet"] = "minecraft:moss_carpet";
    MinecraftItemTypes2["MossyCobblestone"] = "minecraft:mossy_cobblestone";
    MinecraftItemTypes2["MossyCobblestoneStairs"] = "minecraft:mossy_cobblestone_stairs";
    MinecraftItemTypes2["MossyStoneBrickStairs"] = "minecraft:mossy_stone_brick_stairs";
    MinecraftItemTypes2["MournerPotterySherd"] = "minecraft:mourner_pottery_sherd";
    MinecraftItemTypes2["Mud"] = "minecraft:mud";
    MinecraftItemTypes2["MudBrickSlab"] = "minecraft:mud_brick_slab";
    MinecraftItemTypes2["MudBrickStairs"] = "minecraft:mud_brick_stairs";
    MinecraftItemTypes2["MudBrickWall"] = "minecraft:mud_brick_wall";
    MinecraftItemTypes2["MudBricks"] = "minecraft:mud_bricks";
    MinecraftItemTypes2["MuddyMangroveRoots"] = "minecraft:muddy_mangrove_roots";
    MinecraftItemTypes2["MuleSpawnEgg"] = "minecraft:mule_spawn_egg";
    MinecraftItemTypes2["MushroomStew"] = "minecraft:mushroom_stew";
    MinecraftItemTypes2["MusicDisc11"] = "minecraft:music_disc_11";
    MinecraftItemTypes2["MusicDisc13"] = "minecraft:music_disc_13";
    MinecraftItemTypes2["MusicDisc5"] = "minecraft:music_disc_5";
    MinecraftItemTypes2["MusicDiscBlocks"] = "minecraft:music_disc_blocks";
    MinecraftItemTypes2["MusicDiscCat"] = "minecraft:music_disc_cat";
    MinecraftItemTypes2["MusicDiscChirp"] = "minecraft:music_disc_chirp";
    MinecraftItemTypes2["MusicDiscFar"] = "minecraft:music_disc_far";
    MinecraftItemTypes2["MusicDiscMall"] = "minecraft:music_disc_mall";
    MinecraftItemTypes2["MusicDiscMellohi"] = "minecraft:music_disc_mellohi";
    MinecraftItemTypes2["MusicDiscOtherside"] = "minecraft:music_disc_otherside";
    MinecraftItemTypes2["MusicDiscPigstep"] = "minecraft:music_disc_pigstep";
    MinecraftItemTypes2["MusicDiscRelic"] = "minecraft:music_disc_relic";
    MinecraftItemTypes2["MusicDiscStal"] = "minecraft:music_disc_stal";
    MinecraftItemTypes2["MusicDiscStrad"] = "minecraft:music_disc_strad";
    MinecraftItemTypes2["MusicDiscWait"] = "minecraft:music_disc_wait";
    MinecraftItemTypes2["MusicDiscWard"] = "minecraft:music_disc_ward";
    MinecraftItemTypes2["Mutton"] = "minecraft:mutton";
    MinecraftItemTypes2["Mycelium"] = "minecraft:mycelium";
    MinecraftItemTypes2["NameTag"] = "minecraft:name_tag";
    MinecraftItemTypes2["NautilusShell"] = "minecraft:nautilus_shell";
    MinecraftItemTypes2["NetherBrick"] = "minecraft:nether_brick";
    MinecraftItemTypes2["NetherBrickFence"] = "minecraft:nether_brick_fence";
    MinecraftItemTypes2["NetherBrickStairs"] = "minecraft:nether_brick_stairs";
    MinecraftItemTypes2["NetherGoldOre"] = "minecraft:nether_gold_ore";
    MinecraftItemTypes2["NetherSprouts"] = "minecraft:nether_sprouts";
    MinecraftItemTypes2["NetherStar"] = "minecraft:nether_star";
    MinecraftItemTypes2["NetherWart"] = "minecraft:nether_wart";
    MinecraftItemTypes2["NetherWartBlock"] = "minecraft:nether_wart_block";
    MinecraftItemTypes2["Netherbrick"] = "minecraft:netherbrick";
    MinecraftItemTypes2["NetheriteAxe"] = "minecraft:netherite_axe";
    MinecraftItemTypes2["NetheriteBlock"] = "minecraft:netherite_block";
    MinecraftItemTypes2["NetheriteBoots"] = "minecraft:netherite_boots";
    MinecraftItemTypes2["NetheriteChestplate"] = "minecraft:netherite_chestplate";
    MinecraftItemTypes2["NetheriteHelmet"] = "minecraft:netherite_helmet";
    MinecraftItemTypes2["NetheriteHoe"] = "minecraft:netherite_hoe";
    MinecraftItemTypes2["NetheriteIngot"] = "minecraft:netherite_ingot";
    MinecraftItemTypes2["NetheriteLeggings"] = "minecraft:netherite_leggings";
    MinecraftItemTypes2["NetheritePickaxe"] = "minecraft:netherite_pickaxe";
    MinecraftItemTypes2["NetheriteScrap"] = "minecraft:netherite_scrap";
    MinecraftItemTypes2["NetheriteShovel"] = "minecraft:netherite_shovel";
    MinecraftItemTypes2["NetheriteSword"] = "minecraft:netherite_sword";
    MinecraftItemTypes2["NetheriteUpgradeSmithingTemplate"] = "minecraft:netherite_upgrade_smithing_template";
    MinecraftItemTypes2["Netherrack"] = "minecraft:netherrack";
    MinecraftItemTypes2["NormalStoneStairs"] = "minecraft:normal_stone_stairs";
    MinecraftItemTypes2["Noteblock"] = "minecraft:noteblock";
    MinecraftItemTypes2["OakBoat"] = "minecraft:oak_boat";
    MinecraftItemTypes2["OakChestBoat"] = "minecraft:oak_chest_boat";
    MinecraftItemTypes2["OakFence"] = "minecraft:oak_fence";
    MinecraftItemTypes2["OakHangingSign"] = "minecraft:oak_hanging_sign";
    MinecraftItemTypes2["OakLog"] = "minecraft:oak_log";
    MinecraftItemTypes2["OakSign"] = "minecraft:oak_sign";
    MinecraftItemTypes2["OakStairs"] = "minecraft:oak_stairs";
    MinecraftItemTypes2["Observer"] = "minecraft:observer";
    MinecraftItemTypes2["Obsidian"] = "minecraft:obsidian";
    MinecraftItemTypes2["OcelotSpawnEgg"] = "minecraft:ocelot_spawn_egg";
    MinecraftItemTypes2["OchreFroglight"] = "minecraft:ochre_froglight";
    MinecraftItemTypes2["OrangeCandle"] = "minecraft:orange_candle";
    MinecraftItemTypes2["OrangeCarpet"] = "minecraft:orange_carpet";
    MinecraftItemTypes2["OrangeConcrete"] = "minecraft:orange_concrete";
    MinecraftItemTypes2["OrangeConcretePowder"] = "minecraft:orange_concrete_powder";
    MinecraftItemTypes2["OrangeDye"] = "minecraft:orange_dye";
    MinecraftItemTypes2["OrangeGlazedTerracotta"] = "minecraft:orange_glazed_terracotta";
    MinecraftItemTypes2["OrangeShulkerBox"] = "minecraft:orange_shulker_box";
    MinecraftItemTypes2["OrangeStainedGlass"] = "minecraft:orange_stained_glass";
    MinecraftItemTypes2["OrangeStainedGlassPane"] = "minecraft:orange_stained_glass_pane";
    MinecraftItemTypes2["OrangeTerracotta"] = "minecraft:orange_terracotta";
    MinecraftItemTypes2["OrangeWool"] = "minecraft:orange_wool";
    MinecraftItemTypes2["OxidizedCopper"] = "minecraft:oxidized_copper";
    MinecraftItemTypes2["OxidizedCutCopper"] = "minecraft:oxidized_cut_copper";
    MinecraftItemTypes2["OxidizedCutCopperSlab"] = "minecraft:oxidized_cut_copper_slab";
    MinecraftItemTypes2["OxidizedCutCopperStairs"] = "minecraft:oxidized_cut_copper_stairs";
    MinecraftItemTypes2["PackedIce"] = "minecraft:packed_ice";
    MinecraftItemTypes2["PackedMud"] = "minecraft:packed_mud";
    MinecraftItemTypes2["Painting"] = "minecraft:painting";
    MinecraftItemTypes2["PandaSpawnEgg"] = "minecraft:panda_spawn_egg";
    MinecraftItemTypes2["Paper"] = "minecraft:paper";
    MinecraftItemTypes2["ParrotSpawnEgg"] = "minecraft:parrot_spawn_egg";
    MinecraftItemTypes2["PearlescentFroglight"] = "minecraft:pearlescent_froglight";
    MinecraftItemTypes2["PhantomMembrane"] = "minecraft:phantom_membrane";
    MinecraftItemTypes2["PhantomSpawnEgg"] = "minecraft:phantom_spawn_egg";
    MinecraftItemTypes2["PigSpawnEgg"] = "minecraft:pig_spawn_egg";
    MinecraftItemTypes2["PiglinBannerPattern"] = "minecraft:piglin_banner_pattern";
    MinecraftItemTypes2["PiglinBruteSpawnEgg"] = "minecraft:piglin_brute_spawn_egg";
    MinecraftItemTypes2["PiglinSpawnEgg"] = "minecraft:piglin_spawn_egg";
    MinecraftItemTypes2["PillagerSpawnEgg"] = "minecraft:pillager_spawn_egg";
    MinecraftItemTypes2["PinkCandle"] = "minecraft:pink_candle";
    MinecraftItemTypes2["PinkCarpet"] = "minecraft:pink_carpet";
    MinecraftItemTypes2["PinkConcrete"] = "minecraft:pink_concrete";
    MinecraftItemTypes2["PinkConcretePowder"] = "minecraft:pink_concrete_powder";
    MinecraftItemTypes2["PinkDye"] = "minecraft:pink_dye";
    MinecraftItemTypes2["PinkGlazedTerracotta"] = "minecraft:pink_glazed_terracotta";
    MinecraftItemTypes2["PinkPetals"] = "minecraft:pink_petals";
    MinecraftItemTypes2["PinkShulkerBox"] = "minecraft:pink_shulker_box";
    MinecraftItemTypes2["PinkStainedGlass"] = "minecraft:pink_stained_glass";
    MinecraftItemTypes2["PinkStainedGlassPane"] = "minecraft:pink_stained_glass_pane";
    MinecraftItemTypes2["PinkTerracotta"] = "minecraft:pink_terracotta";
    MinecraftItemTypes2["PinkWool"] = "minecraft:pink_wool";
    MinecraftItemTypes2["Piston"] = "minecraft:piston";
    MinecraftItemTypes2["PitcherPlant"] = "minecraft:pitcher_plant";
    MinecraftItemTypes2["PitcherPod"] = "minecraft:pitcher_pod";
    MinecraftItemTypes2["Planks"] = "minecraft:planks";
    MinecraftItemTypes2["PlentyPotterySherd"] = "minecraft:plenty_pottery_sherd";
    MinecraftItemTypes2["Podzol"] = "minecraft:podzol";
    MinecraftItemTypes2["PointedDripstone"] = "minecraft:pointed_dripstone";
    MinecraftItemTypes2["PoisonousPotato"] = "minecraft:poisonous_potato";
    MinecraftItemTypes2["PolarBearSpawnEgg"] = "minecraft:polar_bear_spawn_egg";
    MinecraftItemTypes2["PolishedAndesiteStairs"] = "minecraft:polished_andesite_stairs";
    MinecraftItemTypes2["PolishedBasalt"] = "minecraft:polished_basalt";
    MinecraftItemTypes2["PolishedBlackstone"] = "minecraft:polished_blackstone";
    MinecraftItemTypes2["PolishedBlackstoneBrickSlab"] = "minecraft:polished_blackstone_brick_slab";
    MinecraftItemTypes2["PolishedBlackstoneBrickStairs"] = "minecraft:polished_blackstone_brick_stairs";
    MinecraftItemTypes2["PolishedBlackstoneBrickWall"] = "minecraft:polished_blackstone_brick_wall";
    MinecraftItemTypes2["PolishedBlackstoneBricks"] = "minecraft:polished_blackstone_bricks";
    MinecraftItemTypes2["PolishedBlackstoneButton"] = "minecraft:polished_blackstone_button";
    MinecraftItemTypes2["PolishedBlackstonePressurePlate"] = "minecraft:polished_blackstone_pressure_plate";
    MinecraftItemTypes2["PolishedBlackstoneSlab"] = "minecraft:polished_blackstone_slab";
    MinecraftItemTypes2["PolishedBlackstoneStairs"] = "minecraft:polished_blackstone_stairs";
    MinecraftItemTypes2["PolishedBlackstoneWall"] = "minecraft:polished_blackstone_wall";
    MinecraftItemTypes2["PolishedDeepslate"] = "minecraft:polished_deepslate";
    MinecraftItemTypes2["PolishedDeepslateSlab"] = "minecraft:polished_deepslate_slab";
    MinecraftItemTypes2["PolishedDeepslateStairs"] = "minecraft:polished_deepslate_stairs";
    MinecraftItemTypes2["PolishedDeepslateWall"] = "minecraft:polished_deepslate_wall";
    MinecraftItemTypes2["PolishedDioriteStairs"] = "minecraft:polished_diorite_stairs";
    MinecraftItemTypes2["PolishedGraniteStairs"] = "minecraft:polished_granite_stairs";
    MinecraftItemTypes2["PoppedChorusFruit"] = "minecraft:popped_chorus_fruit";
    MinecraftItemTypes2["Porkchop"] = "minecraft:porkchop";
    MinecraftItemTypes2["Potato"] = "minecraft:potato";
    MinecraftItemTypes2["Potion"] = "minecraft:potion";
    MinecraftItemTypes2["PowderSnowBucket"] = "minecraft:powder_snow_bucket";
    MinecraftItemTypes2["Prismarine"] = "minecraft:prismarine";
    MinecraftItemTypes2["PrismarineBricksStairs"] = "minecraft:prismarine_bricks_stairs";
    MinecraftItemTypes2["PrismarineCrystals"] = "minecraft:prismarine_crystals";
    MinecraftItemTypes2["PrismarineShard"] = "minecraft:prismarine_shard";
    MinecraftItemTypes2["PrismarineStairs"] = "minecraft:prismarine_stairs";
    MinecraftItemTypes2["PrizePotterySherd"] = "minecraft:prize_pottery_sherd";
    MinecraftItemTypes2["Pufferfish"] = "minecraft:pufferfish";
    MinecraftItemTypes2["PufferfishBucket"] = "minecraft:pufferfish_bucket";
    MinecraftItemTypes2["PufferfishSpawnEgg"] = "minecraft:pufferfish_spawn_egg";
    MinecraftItemTypes2["Pumpkin"] = "minecraft:pumpkin";
    MinecraftItemTypes2["PumpkinPie"] = "minecraft:pumpkin_pie";
    MinecraftItemTypes2["PumpkinSeeds"] = "minecraft:pumpkin_seeds";
    MinecraftItemTypes2["PurpleCandle"] = "minecraft:purple_candle";
    MinecraftItemTypes2["PurpleCarpet"] = "minecraft:purple_carpet";
    MinecraftItemTypes2["PurpleConcrete"] = "minecraft:purple_concrete";
    MinecraftItemTypes2["PurpleConcretePowder"] = "minecraft:purple_concrete_powder";
    MinecraftItemTypes2["PurpleDye"] = "minecraft:purple_dye";
    MinecraftItemTypes2["PurpleGlazedTerracotta"] = "minecraft:purple_glazed_terracotta";
    MinecraftItemTypes2["PurpleShulkerBox"] = "minecraft:purple_shulker_box";
    MinecraftItemTypes2["PurpleStainedGlass"] = "minecraft:purple_stained_glass";
    MinecraftItemTypes2["PurpleStainedGlassPane"] = "minecraft:purple_stained_glass_pane";
    MinecraftItemTypes2["PurpleTerracotta"] = "minecraft:purple_terracotta";
    MinecraftItemTypes2["PurpleWool"] = "minecraft:purple_wool";
    MinecraftItemTypes2["PurpurBlock"] = "minecraft:purpur_block";
    MinecraftItemTypes2["PurpurStairs"] = "minecraft:purpur_stairs";
    MinecraftItemTypes2["Quartz"] = "minecraft:quartz";
    MinecraftItemTypes2["QuartzBlock"] = "minecraft:quartz_block";
    MinecraftItemTypes2["QuartzBricks"] = "minecraft:quartz_bricks";
    MinecraftItemTypes2["QuartzOre"] = "minecraft:quartz_ore";
    MinecraftItemTypes2["QuartzStairs"] = "minecraft:quartz_stairs";
    MinecraftItemTypes2["Rabbit"] = "minecraft:rabbit";
    MinecraftItemTypes2["RabbitFoot"] = "minecraft:rabbit_foot";
    MinecraftItemTypes2["RabbitHide"] = "minecraft:rabbit_hide";
    MinecraftItemTypes2["RabbitSpawnEgg"] = "minecraft:rabbit_spawn_egg";
    MinecraftItemTypes2["RabbitStew"] = "minecraft:rabbit_stew";
    MinecraftItemTypes2["Rail"] = "minecraft:rail";
    MinecraftItemTypes2["RaiserArmorTrimSmithingTemplate"] = "minecraft:raiser_armor_trim_smithing_template";
    MinecraftItemTypes2["RavagerSpawnEgg"] = "minecraft:ravager_spawn_egg";
    MinecraftItemTypes2["RawCopper"] = "minecraft:raw_copper";
    MinecraftItemTypes2["RawCopperBlock"] = "minecraft:raw_copper_block";
    MinecraftItemTypes2["RawGold"] = "minecraft:raw_gold";
    MinecraftItemTypes2["RawGoldBlock"] = "minecraft:raw_gold_block";
    MinecraftItemTypes2["RawIron"] = "minecraft:raw_iron";
    MinecraftItemTypes2["RawIronBlock"] = "minecraft:raw_iron_block";
    MinecraftItemTypes2["RecoveryCompass"] = "minecraft:recovery_compass";
    MinecraftItemTypes2["RedCandle"] = "minecraft:red_candle";
    MinecraftItemTypes2["RedCarpet"] = "minecraft:red_carpet";
    MinecraftItemTypes2["RedConcrete"] = "minecraft:red_concrete";
    MinecraftItemTypes2["RedConcretePowder"] = "minecraft:red_concrete_powder";
    MinecraftItemTypes2["RedDye"] = "minecraft:red_dye";
    MinecraftItemTypes2["RedFlower"] = "minecraft:red_flower";
    MinecraftItemTypes2["RedGlazedTerracotta"] = "minecraft:red_glazed_terracotta";
    MinecraftItemTypes2["RedMushroom"] = "minecraft:red_mushroom";
    MinecraftItemTypes2["RedMushroomBlock"] = "minecraft:red_mushroom_block";
    MinecraftItemTypes2["RedNetherBrick"] = "minecraft:red_nether_brick";
    MinecraftItemTypes2["RedNetherBrickStairs"] = "minecraft:red_nether_brick_stairs";
    MinecraftItemTypes2["RedSandstone"] = "minecraft:red_sandstone";
    MinecraftItemTypes2["RedSandstoneStairs"] = "minecraft:red_sandstone_stairs";
    MinecraftItemTypes2["RedShulkerBox"] = "minecraft:red_shulker_box";
    MinecraftItemTypes2["RedStainedGlass"] = "minecraft:red_stained_glass";
    MinecraftItemTypes2["RedStainedGlassPane"] = "minecraft:red_stained_glass_pane";
    MinecraftItemTypes2["RedTerracotta"] = "minecraft:red_terracotta";
    MinecraftItemTypes2["RedWool"] = "minecraft:red_wool";
    MinecraftItemTypes2["Redstone"] = "minecraft:redstone";
    MinecraftItemTypes2["RedstoneBlock"] = "minecraft:redstone_block";
    MinecraftItemTypes2["RedstoneLamp"] = "minecraft:redstone_lamp";
    MinecraftItemTypes2["RedstoneOre"] = "minecraft:redstone_ore";
    MinecraftItemTypes2["RedstoneTorch"] = "minecraft:redstone_torch";
    MinecraftItemTypes2["ReinforcedDeepslate"] = "minecraft:reinforced_deepslate";
    MinecraftItemTypes2["Repeater"] = "minecraft:repeater";
    MinecraftItemTypes2["RepeatingCommandBlock"] = "minecraft:repeating_command_block";
    MinecraftItemTypes2["RespawnAnchor"] = "minecraft:respawn_anchor";
    MinecraftItemTypes2["RibArmorTrimSmithingTemplate"] = "minecraft:rib_armor_trim_smithing_template";
    MinecraftItemTypes2["RottenFlesh"] = "minecraft:rotten_flesh";
    MinecraftItemTypes2["Saddle"] = "minecraft:saddle";
    MinecraftItemTypes2["Salmon"] = "minecraft:salmon";
    MinecraftItemTypes2["SalmonBucket"] = "minecraft:salmon_bucket";
    MinecraftItemTypes2["SalmonSpawnEgg"] = "minecraft:salmon_spawn_egg";
    MinecraftItemTypes2["Sand"] = "minecraft:sand";
    MinecraftItemTypes2["Sandstone"] = "minecraft:sandstone";
    MinecraftItemTypes2["SandstoneStairs"] = "minecraft:sandstone_stairs";
    MinecraftItemTypes2["Sapling"] = "minecraft:sapling";
    MinecraftItemTypes2["Scaffolding"] = "minecraft:scaffolding";
    MinecraftItemTypes2["Sculk"] = "minecraft:sculk";
    MinecraftItemTypes2["SculkCatalyst"] = "minecraft:sculk_catalyst";
    MinecraftItemTypes2["SculkSensor"] = "minecraft:sculk_sensor";
    MinecraftItemTypes2["SculkShrieker"] = "minecraft:sculk_shrieker";
    MinecraftItemTypes2["SculkVein"] = "minecraft:sculk_vein";
    MinecraftItemTypes2["Scute"] = "minecraft:scute";
    MinecraftItemTypes2["SeaLantern"] = "minecraft:sea_lantern";
    MinecraftItemTypes2["SeaPickle"] = "minecraft:sea_pickle";
    MinecraftItemTypes2["Seagrass"] = "minecraft:seagrass";
    MinecraftItemTypes2["SentryArmorTrimSmithingTemplate"] = "minecraft:sentry_armor_trim_smithing_template";
    MinecraftItemTypes2["ShaperArmorTrimSmithingTemplate"] = "minecraft:shaper_armor_trim_smithing_template";
    MinecraftItemTypes2["SheafPotterySherd"] = "minecraft:sheaf_pottery_sherd";
    MinecraftItemTypes2["Shears"] = "minecraft:shears";
    MinecraftItemTypes2["SheepSpawnEgg"] = "minecraft:sheep_spawn_egg";
    MinecraftItemTypes2["ShelterPotterySherd"] = "minecraft:shelter_pottery_sherd";
    MinecraftItemTypes2["Shield"] = "minecraft:shield";
    MinecraftItemTypes2["Shroomlight"] = "minecraft:shroomlight";
    MinecraftItemTypes2["ShulkerBox"] = "minecraft:shulker_box";
    MinecraftItemTypes2["ShulkerShell"] = "minecraft:shulker_shell";
    MinecraftItemTypes2["ShulkerSpawnEgg"] = "minecraft:shulker_spawn_egg";
    MinecraftItemTypes2["SilenceArmorTrimSmithingTemplate"] = "minecraft:silence_armor_trim_smithing_template";
    MinecraftItemTypes2["SilverGlazedTerracotta"] = "minecraft:silver_glazed_terracotta";
    MinecraftItemTypes2["SilverfishSpawnEgg"] = "minecraft:silverfish_spawn_egg";
    MinecraftItemTypes2["SkeletonHorseSpawnEgg"] = "minecraft:skeleton_horse_spawn_egg";
    MinecraftItemTypes2["SkeletonSpawnEgg"] = "minecraft:skeleton_spawn_egg";
    MinecraftItemTypes2["Skull"] = "minecraft:skull";
    MinecraftItemTypes2["SkullBannerPattern"] = "minecraft:skull_banner_pattern";
    MinecraftItemTypes2["SkullPotterySherd"] = "minecraft:skull_pottery_sherd";
    MinecraftItemTypes2["Slime"] = "minecraft:slime";
    MinecraftItemTypes2["SlimeBall"] = "minecraft:slime_ball";
    MinecraftItemTypes2["SlimeSpawnEgg"] = "minecraft:slime_spawn_egg";
    MinecraftItemTypes2["SmallAmethystBud"] = "minecraft:small_amethyst_bud";
    MinecraftItemTypes2["SmallDripleafBlock"] = "minecraft:small_dripleaf_block";
    MinecraftItemTypes2["SmithingTable"] = "minecraft:smithing_table";
    MinecraftItemTypes2["Smoker"] = "minecraft:smoker";
    MinecraftItemTypes2["SmoothBasalt"] = "minecraft:smooth_basalt";
    MinecraftItemTypes2["SmoothQuartzStairs"] = "minecraft:smooth_quartz_stairs";
    MinecraftItemTypes2["SmoothRedSandstoneStairs"] = "minecraft:smooth_red_sandstone_stairs";
    MinecraftItemTypes2["SmoothSandstoneStairs"] = "minecraft:smooth_sandstone_stairs";
    MinecraftItemTypes2["SmoothStone"] = "minecraft:smooth_stone";
    MinecraftItemTypes2["SnifferEgg"] = "minecraft:sniffer_egg";
    MinecraftItemTypes2["SnifferSpawnEgg"] = "minecraft:sniffer_spawn_egg";
    MinecraftItemTypes2["SnortPotterySherd"] = "minecraft:snort_pottery_sherd";
    MinecraftItemTypes2["SnoutArmorTrimSmithingTemplate"] = "minecraft:snout_armor_trim_smithing_template";
    MinecraftItemTypes2["Snow"] = "minecraft:snow";
    MinecraftItemTypes2["SnowGolemSpawnEgg"] = "minecraft:snow_golem_spawn_egg";
    MinecraftItemTypes2["SnowLayer"] = "minecraft:snow_layer";
    MinecraftItemTypes2["Snowball"] = "minecraft:snowball";
    MinecraftItemTypes2["SoulCampfire"] = "minecraft:soul_campfire";
    MinecraftItemTypes2["SoulLantern"] = "minecraft:soul_lantern";
    MinecraftItemTypes2["SoulSand"] = "minecraft:soul_sand";
    MinecraftItemTypes2["SoulSoil"] = "minecraft:soul_soil";
    MinecraftItemTypes2["SoulTorch"] = "minecraft:soul_torch";
    MinecraftItemTypes2["SpawnEgg"] = "minecraft:spawn_egg";
    MinecraftItemTypes2["SpiderEye"] = "minecraft:spider_eye";
    MinecraftItemTypes2["SpiderSpawnEgg"] = "minecraft:spider_spawn_egg";
    MinecraftItemTypes2["SpireArmorTrimSmithingTemplate"] = "minecraft:spire_armor_trim_smithing_template";
    MinecraftItemTypes2["SplashPotion"] = "minecraft:splash_potion";
    MinecraftItemTypes2["Sponge"] = "minecraft:sponge";
    MinecraftItemTypes2["SporeBlossom"] = "minecraft:spore_blossom";
    MinecraftItemTypes2["SpruceBoat"] = "minecraft:spruce_boat";
    MinecraftItemTypes2["SpruceButton"] = "minecraft:spruce_button";
    MinecraftItemTypes2["SpruceChestBoat"] = "minecraft:spruce_chest_boat";
    MinecraftItemTypes2["SpruceDoor"] = "minecraft:spruce_door";
    MinecraftItemTypes2["SpruceFence"] = "minecraft:spruce_fence";
    MinecraftItemTypes2["SpruceFenceGate"] = "minecraft:spruce_fence_gate";
    MinecraftItemTypes2["SpruceHangingSign"] = "minecraft:spruce_hanging_sign";
    MinecraftItemTypes2["SpruceLog"] = "minecraft:spruce_log";
    MinecraftItemTypes2["SprucePressurePlate"] = "minecraft:spruce_pressure_plate";
    MinecraftItemTypes2["SpruceSign"] = "minecraft:spruce_sign";
    MinecraftItemTypes2["SpruceStairs"] = "minecraft:spruce_stairs";
    MinecraftItemTypes2["SpruceTrapdoor"] = "minecraft:spruce_trapdoor";
    MinecraftItemTypes2["Spyglass"] = "minecraft:spyglass";
    MinecraftItemTypes2["SquidSpawnEgg"] = "minecraft:squid_spawn_egg";
    MinecraftItemTypes2["StainedGlass"] = "minecraft:stained_glass";
    MinecraftItemTypes2["StainedGlassPane"] = "minecraft:stained_glass_pane";
    MinecraftItemTypes2["StainedHardenedClay"] = "minecraft:stained_hardened_clay";
    MinecraftItemTypes2["Stick"] = "minecraft:stick";
    MinecraftItemTypes2["StickyPiston"] = "minecraft:sticky_piston";
    MinecraftItemTypes2["Stone"] = "minecraft:stone";
    MinecraftItemTypes2["StoneAxe"] = "minecraft:stone_axe";
    MinecraftItemTypes2["StoneBlockSlab"] = "minecraft:stone_block_slab";
    MinecraftItemTypes2["StoneBlockSlab2"] = "minecraft:stone_block_slab2";
    MinecraftItemTypes2["StoneBlockSlab3"] = "minecraft:stone_block_slab3";
    MinecraftItemTypes2["StoneBlockSlab4"] = "minecraft:stone_block_slab4";
    MinecraftItemTypes2["StoneBrickStairs"] = "minecraft:stone_brick_stairs";
    MinecraftItemTypes2["StoneButton"] = "minecraft:stone_button";
    MinecraftItemTypes2["StoneHoe"] = "minecraft:stone_hoe";
    MinecraftItemTypes2["StonePickaxe"] = "minecraft:stone_pickaxe";
    MinecraftItemTypes2["StonePressurePlate"] = "minecraft:stone_pressure_plate";
    MinecraftItemTypes2["StoneShovel"] = "minecraft:stone_shovel";
    MinecraftItemTypes2["StoneStairs"] = "minecraft:stone_stairs";
    MinecraftItemTypes2["StoneSword"] = "minecraft:stone_sword";
    MinecraftItemTypes2["Stonebrick"] = "minecraft:stonebrick";
    MinecraftItemTypes2["StonecutterBlock"] = "minecraft:stonecutter_block";
    MinecraftItemTypes2["StraySpawnEgg"] = "minecraft:stray_spawn_egg";
    MinecraftItemTypes2["StriderSpawnEgg"] = "minecraft:strider_spawn_egg";
    MinecraftItemTypes2["String"] = "minecraft:string";
    MinecraftItemTypes2["StrippedAcaciaLog"] = "minecraft:stripped_acacia_log";
    MinecraftItemTypes2["StrippedBambooBlock"] = "minecraft:stripped_bamboo_block";
    MinecraftItemTypes2["StrippedBirchLog"] = "minecraft:stripped_birch_log";
    MinecraftItemTypes2["StrippedCherryLog"] = "minecraft:stripped_cherry_log";
    MinecraftItemTypes2["StrippedCherryWood"] = "minecraft:stripped_cherry_wood";
    MinecraftItemTypes2["StrippedCrimsonHyphae"] = "minecraft:stripped_crimson_hyphae";
    MinecraftItemTypes2["StrippedCrimsonStem"] = "minecraft:stripped_crimson_stem";
    MinecraftItemTypes2["StrippedDarkOakLog"] = "minecraft:stripped_dark_oak_log";
    MinecraftItemTypes2["StrippedJungleLog"] = "minecraft:stripped_jungle_log";
    MinecraftItemTypes2["StrippedMangroveLog"] = "minecraft:stripped_mangrove_log";
    MinecraftItemTypes2["StrippedMangroveWood"] = "minecraft:stripped_mangrove_wood";
    MinecraftItemTypes2["StrippedOakLog"] = "minecraft:stripped_oak_log";
    MinecraftItemTypes2["StrippedSpruceLog"] = "minecraft:stripped_spruce_log";
    MinecraftItemTypes2["StrippedWarpedHyphae"] = "minecraft:stripped_warped_hyphae";
    MinecraftItemTypes2["StrippedWarpedStem"] = "minecraft:stripped_warped_stem";
    MinecraftItemTypes2["StructureBlock"] = "minecraft:structure_block";
    MinecraftItemTypes2["StructureVoid"] = "minecraft:structure_void";
    MinecraftItemTypes2["Sugar"] = "minecraft:sugar";
    MinecraftItemTypes2["SugarCane"] = "minecraft:sugar_cane";
    MinecraftItemTypes2["SuspiciousGravel"] = "minecraft:suspicious_gravel";
    MinecraftItemTypes2["SuspiciousSand"] = "minecraft:suspicious_sand";
    MinecraftItemTypes2["SuspiciousStew"] = "minecraft:suspicious_stew";
    MinecraftItemTypes2["SweetBerries"] = "minecraft:sweet_berries";
    MinecraftItemTypes2["TadpoleBucket"] = "minecraft:tadpole_bucket";
    MinecraftItemTypes2["TadpoleSpawnEgg"] = "minecraft:tadpole_spawn_egg";
    MinecraftItemTypes2["Tallgrass"] = "minecraft:tallgrass";
    MinecraftItemTypes2["Target"] = "minecraft:target";
    MinecraftItemTypes2["TideArmorTrimSmithingTemplate"] = "minecraft:tide_armor_trim_smithing_template";
    MinecraftItemTypes2["TintedGlass"] = "minecraft:tinted_glass";
    MinecraftItemTypes2["Tnt"] = "minecraft:tnt";
    MinecraftItemTypes2["TntMinecart"] = "minecraft:tnt_minecart";
    MinecraftItemTypes2["Torch"] = "minecraft:torch";
    MinecraftItemTypes2["Torchflower"] = "minecraft:torchflower";
    MinecraftItemTypes2["TorchflowerSeeds"] = "minecraft:torchflower_seeds";
    MinecraftItemTypes2["TotemOfUndying"] = "minecraft:totem_of_undying";
    MinecraftItemTypes2["TraderLlamaSpawnEgg"] = "minecraft:trader_llama_spawn_egg";
    MinecraftItemTypes2["Trapdoor"] = "minecraft:trapdoor";
    MinecraftItemTypes2["TrappedChest"] = "minecraft:trapped_chest";
    MinecraftItemTypes2["Trident"] = "minecraft:trident";
    MinecraftItemTypes2["TripwireHook"] = "minecraft:tripwire_hook";
    MinecraftItemTypes2["TropicalFish"] = "minecraft:tropical_fish";
    MinecraftItemTypes2["TropicalFishBucket"] = "minecraft:tropical_fish_bucket";
    MinecraftItemTypes2["TropicalFishSpawnEgg"] = "minecraft:tropical_fish_spawn_egg";
    MinecraftItemTypes2["TubeCoral"] = "minecraft:tube_coral";
    MinecraftItemTypes2["Tuff"] = "minecraft:tuff";
    MinecraftItemTypes2["TurtleEgg"] = "minecraft:turtle_egg";
    MinecraftItemTypes2["TurtleHelmet"] = "minecraft:turtle_helmet";
    MinecraftItemTypes2["TurtleSpawnEgg"] = "minecraft:turtle_spawn_egg";
    MinecraftItemTypes2["TwistingVines"] = "minecraft:twisting_vines";
    MinecraftItemTypes2["UndyedShulkerBox"] = "minecraft:undyed_shulker_box";
    MinecraftItemTypes2["VerdantFroglight"] = "minecraft:verdant_froglight";
    MinecraftItemTypes2["VexArmorTrimSmithingTemplate"] = "minecraft:vex_armor_trim_smithing_template";
    MinecraftItemTypes2["VexSpawnEgg"] = "minecraft:vex_spawn_egg";
    MinecraftItemTypes2["VillagerSpawnEgg"] = "minecraft:villager_spawn_egg";
    MinecraftItemTypes2["VindicatorSpawnEgg"] = "minecraft:vindicator_spawn_egg";
    MinecraftItemTypes2["Vine"] = "minecraft:vine";
    MinecraftItemTypes2["WanderingTraderSpawnEgg"] = "minecraft:wandering_trader_spawn_egg";
    MinecraftItemTypes2["WardArmorTrimSmithingTemplate"] = "minecraft:ward_armor_trim_smithing_template";
    MinecraftItemTypes2["WardenSpawnEgg"] = "minecraft:warden_spawn_egg";
    MinecraftItemTypes2["WarpedButton"] = "minecraft:warped_button";
    MinecraftItemTypes2["WarpedDoor"] = "minecraft:warped_door";
    MinecraftItemTypes2["WarpedFence"] = "minecraft:warped_fence";
    MinecraftItemTypes2["WarpedFenceGate"] = "minecraft:warped_fence_gate";
    MinecraftItemTypes2["WarpedFungus"] = "minecraft:warped_fungus";
    MinecraftItemTypes2["WarpedFungusOnAStick"] = "minecraft:warped_fungus_on_a_stick";
    MinecraftItemTypes2["WarpedHangingSign"] = "minecraft:warped_hanging_sign";
    MinecraftItemTypes2["WarpedHyphae"] = "minecraft:warped_hyphae";
    MinecraftItemTypes2["WarpedNylium"] = "minecraft:warped_nylium";
    MinecraftItemTypes2["WarpedPlanks"] = "minecraft:warped_planks";
    MinecraftItemTypes2["WarpedPressurePlate"] = "minecraft:warped_pressure_plate";
    MinecraftItemTypes2["WarpedRoots"] = "minecraft:warped_roots";
    MinecraftItemTypes2["WarpedSign"] = "minecraft:warped_sign";
    MinecraftItemTypes2["WarpedSlab"] = "minecraft:warped_slab";
    MinecraftItemTypes2["WarpedStairs"] = "minecraft:warped_stairs";
    MinecraftItemTypes2["WarpedStem"] = "minecraft:warped_stem";
    MinecraftItemTypes2["WarpedTrapdoor"] = "minecraft:warped_trapdoor";
    MinecraftItemTypes2["WarpedWartBlock"] = "minecraft:warped_wart_block";
    MinecraftItemTypes2["WaterBucket"] = "minecraft:water_bucket";
    MinecraftItemTypes2["Waterlily"] = "minecraft:waterlily";
    MinecraftItemTypes2["WaxedCopper"] = "minecraft:waxed_copper";
    MinecraftItemTypes2["WaxedCutCopper"] = "minecraft:waxed_cut_copper";
    MinecraftItemTypes2["WaxedCutCopperSlab"] = "minecraft:waxed_cut_copper_slab";
    MinecraftItemTypes2["WaxedCutCopperStairs"] = "minecraft:waxed_cut_copper_stairs";
    MinecraftItemTypes2["WaxedExposedCopper"] = "minecraft:waxed_exposed_copper";
    MinecraftItemTypes2["WaxedExposedCutCopper"] = "minecraft:waxed_exposed_cut_copper";
    MinecraftItemTypes2["WaxedExposedCutCopperSlab"] = "minecraft:waxed_exposed_cut_copper_slab";
    MinecraftItemTypes2["WaxedExposedCutCopperStairs"] = "minecraft:waxed_exposed_cut_copper_stairs";
    MinecraftItemTypes2["WaxedOxidizedCopper"] = "minecraft:waxed_oxidized_copper";
    MinecraftItemTypes2["WaxedOxidizedCutCopper"] = "minecraft:waxed_oxidized_cut_copper";
    MinecraftItemTypes2["WaxedOxidizedCutCopperSlab"] = "minecraft:waxed_oxidized_cut_copper_slab";
    MinecraftItemTypes2["WaxedOxidizedCutCopperStairs"] = "minecraft:waxed_oxidized_cut_copper_stairs";
    MinecraftItemTypes2["WaxedWeatheredCopper"] = "minecraft:waxed_weathered_copper";
    MinecraftItemTypes2["WaxedWeatheredCutCopper"] = "minecraft:waxed_weathered_cut_copper";
    MinecraftItemTypes2["WaxedWeatheredCutCopperSlab"] = "minecraft:waxed_weathered_cut_copper_slab";
    MinecraftItemTypes2["WaxedWeatheredCutCopperStairs"] = "minecraft:waxed_weathered_cut_copper_stairs";
    MinecraftItemTypes2["WayfinderArmorTrimSmithingTemplate"] = "minecraft:wayfinder_armor_trim_smithing_template";
    MinecraftItemTypes2["WeatheredCopper"] = "minecraft:weathered_copper";
    MinecraftItemTypes2["WeatheredCutCopper"] = "minecraft:weathered_cut_copper";
    MinecraftItemTypes2["WeatheredCutCopperSlab"] = "minecraft:weathered_cut_copper_slab";
    MinecraftItemTypes2["WeatheredCutCopperStairs"] = "minecraft:weathered_cut_copper_stairs";
    MinecraftItemTypes2["Web"] = "minecraft:web";
    MinecraftItemTypes2["WeepingVines"] = "minecraft:weeping_vines";
    MinecraftItemTypes2["Wheat"] = "minecraft:wheat";
    MinecraftItemTypes2["WheatSeeds"] = "minecraft:wheat_seeds";
    MinecraftItemTypes2["WhiteCandle"] = "minecraft:white_candle";
    MinecraftItemTypes2["WhiteCarpet"] = "minecraft:white_carpet";
    MinecraftItemTypes2["WhiteConcrete"] = "minecraft:white_concrete";
    MinecraftItemTypes2["WhiteConcretePowder"] = "minecraft:white_concrete_powder";
    MinecraftItemTypes2["WhiteDye"] = "minecraft:white_dye";
    MinecraftItemTypes2["WhiteGlazedTerracotta"] = "minecraft:white_glazed_terracotta";
    MinecraftItemTypes2["WhiteShulkerBox"] = "minecraft:white_shulker_box";
    MinecraftItemTypes2["WhiteStainedGlass"] = "minecraft:white_stained_glass";
    MinecraftItemTypes2["WhiteStainedGlassPane"] = "minecraft:white_stained_glass_pane";
    MinecraftItemTypes2["WhiteTerracotta"] = "minecraft:white_terracotta";
    MinecraftItemTypes2["WhiteWool"] = "minecraft:white_wool";
    MinecraftItemTypes2["WildArmorTrimSmithingTemplate"] = "minecraft:wild_armor_trim_smithing_template";
    MinecraftItemTypes2["WitchSpawnEgg"] = "minecraft:witch_spawn_egg";
    MinecraftItemTypes2["WitherRose"] = "minecraft:wither_rose";
    MinecraftItemTypes2["WitherSkeletonSpawnEgg"] = "minecraft:wither_skeleton_spawn_egg";
    MinecraftItemTypes2["WitherSpawnEgg"] = "minecraft:wither_spawn_egg";
    MinecraftItemTypes2["WolfSpawnEgg"] = "minecraft:wolf_spawn_egg";
    MinecraftItemTypes2["Wood"] = "minecraft:wood";
    MinecraftItemTypes2["WoodenAxe"] = "minecraft:wooden_axe";
    MinecraftItemTypes2["WoodenButton"] = "minecraft:wooden_button";
    MinecraftItemTypes2["WoodenDoor"] = "minecraft:wooden_door";
    MinecraftItemTypes2["WoodenHoe"] = "minecraft:wooden_hoe";
    MinecraftItemTypes2["WoodenPickaxe"] = "minecraft:wooden_pickaxe";
    MinecraftItemTypes2["WoodenPressurePlate"] = "minecraft:wooden_pressure_plate";
    MinecraftItemTypes2["WoodenShovel"] = "minecraft:wooden_shovel";
    MinecraftItemTypes2["WoodenSlab"] = "minecraft:wooden_slab";
    MinecraftItemTypes2["WoodenSword"] = "minecraft:wooden_sword";
    MinecraftItemTypes2["Wool"] = "minecraft:wool";
    MinecraftItemTypes2["WritableBook"] = "minecraft:writable_book";
    MinecraftItemTypes2["YellowCandle"] = "minecraft:yellow_candle";
    MinecraftItemTypes2["YellowCarpet"] = "minecraft:yellow_carpet";
    MinecraftItemTypes2["YellowConcrete"] = "minecraft:yellow_concrete";
    MinecraftItemTypes2["YellowConcretePowder"] = "minecraft:yellow_concrete_powder";
    MinecraftItemTypes2["YellowDye"] = "minecraft:yellow_dye";
    MinecraftItemTypes2["YellowFlower"] = "minecraft:yellow_flower";
    MinecraftItemTypes2["YellowGlazedTerracotta"] = "minecraft:yellow_glazed_terracotta";
    MinecraftItemTypes2["YellowShulkerBox"] = "minecraft:yellow_shulker_box";
    MinecraftItemTypes2["YellowStainedGlass"] = "minecraft:yellow_stained_glass";
    MinecraftItemTypes2["YellowStainedGlassPane"] = "minecraft:yellow_stained_glass_pane";
    MinecraftItemTypes2["YellowTerracotta"] = "minecraft:yellow_terracotta";
    MinecraftItemTypes2["YellowWool"] = "minecraft:yellow_wool";
    MinecraftItemTypes2["ZoglinSpawnEgg"] = "minecraft:zoglin_spawn_egg";
    MinecraftItemTypes2["ZombieHorseSpawnEgg"] = "minecraft:zombie_horse_spawn_egg";
    MinecraftItemTypes2["ZombiePigmanSpawnEgg"] = "minecraft:zombie_pigman_spawn_egg";
    MinecraftItemTypes2["ZombieSpawnEgg"] = "minecraft:zombie_spawn_egg";
    MinecraftItemTypes2["ZombieVillagerSpawnEgg"] = "minecraft:zombie_villager_spawn_egg";
    return MinecraftItemTypes2;
})(MinecraftItemTypes || {});

async function deleteOperation(uiSession) {
    if (uiSession.extensionContext.selectionManager.selection.isEmpty) {
        uiSession.log.warning("Selection volume is empty - nothing to clear");
        return;
    }
    uiSession.extensionContext.transactionManager.openTransaction("Delete");
    try {
        uiSession.extensionContext.transactionManager.trackBlockChangeSelection(uiSession.extensionContext.selectionManager.selection);
    } catch (e) {
        uiSession.log.warning(`Unable to delete selection. ${stringFromException(e)}`);
        uiSession.extensionContext.transactionManager.discardOpenTransaction();
        return;
    }
    const player = uiSession.extensionContext.player;
    const dimension = player.dimension;
    await (0, server_editor_namespaceObject.executeLargeOperation)(uiSession.extensionContext.selectionManager.selection, (blockLocation => {
        const block = dimension.getBlock(blockLocation);
        if (block) {
            block.isWaterlogged = false;
            block.setType(MinecraftBlockTypes.Air);
        }
    })).catch((e => {
        uiSession.log.error(e.message);
        uiSession.extensionContext.transactionManager.discardOpenTransaction();
    })).then((() => {
        uiSession.extensionContext.transactionManager.commitOpenTransaction();
    }));
}

class ClipboardBehavior {
    constructor(uiSession, coreMenuItems, fallbackToolId) {
        this.uiSession = uiSession;
        this.fallbackToolId = fallbackToolId;
        this.pastePreviewLocation = {
            x: 0,
            y: 0,
            z: 0
        };
        this.rotationLookup = [ server_editor_namespaceObject.ClipboardRotation.None, server_editor_namespaceObject.ClipboardRotation.Rotate90, server_editor_namespaceObject.ClipboardRotation.Rotate180, server_editor_namespaceObject.ClipboardRotation.Rotate270 ];
        this.settings = this.getDefaultClipboardSettings();
        this.selectionPreview = uiSession.extensionContext.selectionManager.create();
        this.selectionPreview.setFillColor({
            red: 1,
            green: 1,
            blue: 0,
            alpha: .25
        });
        this.selectionPreview.setOutlineColor({
            red: 1,
            green: 0,
            blue: 1,
            alpha: 1
        });
        this.setup(uiSession, coreMenuItems);
    }
    getDefaultClipboardSettings() {
        return {
            rotationIndex: 0,
            mirrorX: false,
            mirrorZ: false,
            origin: {
                x: 0,
                y: 0,
                z: 0
            }
        };
    }
    setup(uiSession, coreMenuItems) {
        if (!uiSession.scratchStorage) {
            throw new Error("Unable to set up Clipboard due to missing CoreUIState.");
        }
        this.tool = uiSession.toolRail.addTool({
            displayAltText: "Paste Preview (CTRL + SHIFT + V)",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.toolRail.title"),
            icon: "pack://textures/editor/Paste.png?filtering=point",
            tooltipAltText: "Left mouse click or drag-to-paint",
            tooltipStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.toolRail.description")
        });
        this.tool.onModalToolActivation.subscribe((eventData => {
            this.selectionPreview.visible = eventData.isActiveTool;
            if (eventData.isActiveTool) {
                uiSession.extensionContext.cursor.resetToDefaultState();
            }
        }));
        const pane = uiSession.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.title"),
            titleAltText: "Paste"
        });
        this.settings = (0, server_editor_namespaceObject.bindDataSource)(pane, this.getDefaultClipboardSettings());
        const submitPastePreviewAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.doPaste(uiSession, this.generateWriteOptions(this.settings));
            }
        });
        pane.addButton(submitPastePreviewAction, {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.submitButton"),
            titleAltText: "Confirm Paste"
        });
        const transformPane = pane.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.title"),
            titleAltText: "Transform"
        });
        transformPane.addVector3(this.settings, "origin", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.origin.title"),
            titleAltText: "Offset",
            minX: Number.MIN_SAFE_INTEGER,
            minY: Number.MIN_SAFE_INTEGER,
            minZ: Number.MIN_SAFE_INTEGER,
            onChange: (_obj, _property, _oldValue, _newValue) => {
                this.updateSelectionPreview(uiSession.extensionContext);
            }
        });
        transformPane.addDropdown(this.settings, "rotationIndex", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.rotation.title"),
            titleAltText: "Rotate",
            dropdownItems: [ {
                displayAltText: "0°",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.rotation.none"),
                value: 0
            }, {
                displayAltText: "90°",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.rotation.90"),
                value: 1
            }, {
                displayAltText: "180°",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.rotation.180"),
                value: 2
            }, {
                displayAltText: "270°",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.rotation.270"),
                value: 3
            } ],
            onChange: (_obj, _property, _oldValue, _newValue) => {
                this.updateSelectionPreview(uiSession.extensionContext);
            }
        });
        transformPane.addBool(this.settings, "mirrorX", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.mirrorX"),
            titleAltText: "Mirror X",
            onChange: (_obj, _property, _oldValue, _newValue) => {
                this.updateSelectionPreview(uiSession.extensionContext);
            }
        });
        transformPane.addBool(this.settings, "mirrorZ", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("paste.pane.transform.mirrorZ"),
            titleAltText: "Mirror Z",
            onChange: (_obj, _property, _oldValue, _newValue) => {
                this.updateSelectionPreview(uiSession.extensionContext);
            }
        });
        this.tool.bindPropertyPane(pane);
        const copyAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.doCopy(uiSession);
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, copyAction, server_editor_namespaceObject.KeyboardKey.KEY_C, server_editor_namespaceObject.InputModifier.Control);
        const cutAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.doCopy(uiSession);
                deleteOperation(uiSession).catch((e => uiSession.log.error(e.message)));
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, cutAction, server_editor_namespaceObject.KeyboardKey.KEY_X, server_editor_namespaceObject.InputModifier.Control);
        const pasteAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (uiSession.toolRail.selectedOptionId === this.tool?.id) {
                    this.doPaste(uiSession, this.generateWriteOptions(this.settings));
                } else {
                    this.doQuickPaste(uiSession, false);
                }
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, pasteAction, server_editor_namespaceObject.KeyboardKey.KEY_V, server_editor_namespaceObject.InputModifier.Control);
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.tryUpdateToSelection(uiSession, true);
                this.updateSelectionPreview(uiSession.extensionContext);
                this.selectPasteTool(uiSession);
            }
        }), server_editor_namespaceObject.KeyboardKey.KEY_V, server_editor_namespaceObject.InputModifier.Control | server_editor_namespaceObject.InputModifier.Shift);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.selectionPreview.clear();
                if (this.fallbackToolId !== undefined) {
                    uiSession.toolRail.setSelectedOptionId(this.fallbackToolId, true);
                }
            }
        }), server_editor_namespaceObject.KeyboardKey.KEY_D, server_editor_namespaceObject.InputModifier.Control);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, getAxisAlignedDirection(uiSession.extensionContext.player.getRotation().y));
            }
        }), server_editor_namespaceObject.KeyboardKey.UP);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, getAxisAlignedDirection(uiSession.extensionContext.player.getRotation().y + 180));
            }
        }), server_editor_namespaceObject.KeyboardKey.DOWN);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, getAxisAlignedDirection(uiSession.extensionContext.player.getRotation().y + 270));
            }
        }), server_editor_namespaceObject.KeyboardKey.LEFT);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, getAxisAlignedDirection(uiSession.extensionContext.player.getRotation().y + 90));
            }
        }), server_editor_namespaceObject.KeyboardKey.RIGHT);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, vector_utils_Vector3Utils.up);
            }
        }), server_editor_namespaceObject.KeyboardKey.PAGE_UP);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.movePreview(uiSession.extensionContext, vector_utils_Vector3Utils.down);
            }
        }), server_editor_namespaceObject.KeyboardKey.PAGE_DOWN);
        this.tool.registerMouseButtonBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
            onExecute: (mouseRay, mouseProps) => {
                if (mouseProps.mouseAction === server_editor_namespaceObject.MouseActionType.LeftButton) {
                    if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonDown) {
                        this.movePreviewToRay(uiSession.extensionContext, mouseRay);
                    }
                }
            }
        }));
        this.tool.registerMouseDragBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
            onExecute: (mouseRay, mouseProps) => {
                if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.Drag) {
                    this.movePreviewToRay(uiSession.extensionContext, mouseRay);
                }
            }
        }));
        this.tool.registerKeyBinding(submitPastePreviewAction, server_editor_namespaceObject.KeyboardKey.ENTER);
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.cut",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.cut")
        }, cutAction);
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.copy",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.copy")
        }, copyAction);
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.quickPaste",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.quickPaste")
        }, pasteAction);
    }
    teardown() {
        this.pastePreviewLocation = vector_utils_Vector3Utils.zero;
        this.selectionPreview.clear();
        this.settings = this.getDefaultClipboardSettings();
        this.tool = undefined;
    }
    resetSettings() {
        this.settings.rotationIndex = 0;
        this.settings.mirrorX = false;
        this.settings.mirrorZ = false;
        this.settings.origin = {
            ...vector_utils_Vector3Utils.zero
        };
    }
    selectPasteTool(uiSession) {
        uiSession.toolRail.setSelectedOptionId(this.tool?.id, true);
    }
    doCopy(uiSession) {
        const selectionManager = uiSession.extensionContext.selectionManager;
        if (selectionManager.selection.isEmpty) {
            uiSession.log.warning("Unable to copy empty selection!");
            return;
        }
        const clipboardManager = uiSession.extensionContext.clipboardManager;
        clipboardManager.clipboard.readFromSelection(selectionManager.selection);
        uiSession.log.info("Selection Copied");
        this.resetSettings();
        this.tryUpdateToSelection(uiSession, true);
        if (uiSession.toolRail.selectedOptionId === this.tool?.id) {
            this.updateSelectionPreview(uiSession.extensionContext);
        }
    }
    doQuickPaste(uiSession, isPastePreview) {
        const extensionContext = uiSession.extensionContext;
        const clipboardManager = extensionContext.clipboardManager;
        if (clipboardManager.clipboard.isEmpty) {
            uiSession.log.warning("Clipboard is empty!");
            return;
        }
        const selectionManager = extensionContext.selectionManager;
        if (selectionManager.selection.isEmpty) {
            uiSession.toolRail.setSelectedOptionId(this.tool?.id, true);
            this.tryUpdateToSelection(uiSession, isPastePreview);
        } else {
            this.tryUpdateToSelection(uiSession, isPastePreview);
            this.doPaste(uiSession, this.generateWriteOptions(this.settings));
        }
    }
    doPaste(uiSession, writeOptions) {
        const clipboardManager = uiSession.extensionContext.clipboardManager;
        if (clipboardManager.clipboard.isEmpty) {
            uiSession.log.warning("Clipboard is empty!");
            return;
        }
        const transactionManager = uiSession.extensionContext.transactionManager;
        transactionManager.openTransaction("Paste");
        clipboardManager.clipboard.writeToWorld(this.pastePreviewLocation, writeOptions);
        transactionManager.commitOpenTransaction();
    }
    tryUpdateToSelection(uiSession, isPastePreview) {
        const selectionManager = uiSession.extensionContext.selectionManager;
        let rotation = this.getClipboardRotationFromDropdownIndex(this.settings.rotationIndex);
        let bounds;
        if (!selectionManager.selection.isEmpty) {
            bounds = selectionManager.selection.getBoundingBox();
            if (isPastePreview) {
                const rotationY = uiSession.extensionContext.player.getRotation().y;
                const directionRight = getRotationCorrectedDirectionVector(rotationY, Direction.Right);
                const directionBack = getRotationCorrectedDirectionVector(rotationY, Direction.Back);
                const backAndRight = server_namespaceObject.Vector.add(directionRight, directionBack);
                bounds = server_namespaceObject.BoundingBoxUtils.translate(bounds, {
                    x: backAndRight.x,
                    y: 0,
                    z: backAndRight.z
                });
            }
        } else {
            const cursorPosition = uiSession.extensionContext.cursor.getPosition();
            const clipboardSize = uiSession.extensionContext.clipboardManager.clipboard.getSize();
            bounds = {
                min: cursorPosition,
                max: vector_utils_Vector3Utils.add(cursorPosition, clipboardSize)
            };
            this.settings.rotationIndex = 0;
            rotation = server_editor_namespaceObject.ClipboardRotation.None;
        }
        switch (rotation) {
          case server_editor_namespaceObject.ClipboardRotation.None:
            {
                this.pastePreviewLocation = bounds.min;
                break;
            }

          case server_editor_namespaceObject.ClipboardRotation.Rotate90:
            {
                this.pastePreviewLocation = {
                    x: bounds.max.x,
                    y: bounds.min.y,
                    z: bounds.min.z
                };
                break;
            }

          case server_editor_namespaceObject.ClipboardRotation.Rotate180:
            {
                this.pastePreviewLocation = {
                    x: bounds.max.x,
                    y: bounds.min.y,
                    z: bounds.max.z
                };
                break;
            }

          case server_editor_namespaceObject.ClipboardRotation.Rotate270:
            {
                this.pastePreviewLocation = {
                    x: bounds.min.x,
                    y: bounds.min.y,
                    z: bounds.max.z
                };
                break;
            }

          default:
            {
                uiSession.log.error("Unknown Rotation, unable to paste.");
                return;
            }
        }
    }
    generateWriteOptions(settings) {
        const writeOptions = {};
        writeOptions.rotation = this.getClipboardRotationFromDropdownIndex(this.settings.rotationIndex);
        if (settings.mirrorX) {
            if (settings.mirrorZ) {
                writeOptions.mirror = server_editor_namespaceObject.ClipboardMirrorAxis.XZ;
            } else {
                writeOptions.mirror = server_editor_namespaceObject.ClipboardMirrorAxis.X;
            }
        } else if (settings.mirrorZ) {
            writeOptions.mirror = server_editor_namespaceObject.ClipboardMirrorAxis.Z;
        }
        writeOptions.anchor = {
            x: -1,
            y: -1,
            z: -1
        };
        writeOptions.offset = settings.origin;
        return writeOptions;
    }
    updateSelectionPreview(extensionContext) {
        const writeOptions = this.generateWriteOptions(this.settings);
        const clipboardManager = extensionContext.clipboardManager;
        this.selectionPreview.set(clipboardManager.clipboard.getPredictedWriteAsCompoundBlockVolume(this.pastePreviewLocation, writeOptions));
    }
    movePreviewToPlayer(extensionContext) {
        this.pastePreviewLocation = findPasteTarget(extensionContext.player);
        this.updateSelectionPreview(extensionContext);
    }
    movePreviewToRay(extensionContext, ray) {
        this.pastePreviewLocation = findPasteTarget(extensionContext.player, ray);
        this.updateSelectionPreview(extensionContext);
    }
    movePreview(extensionContext, offset) {
        this.pastePreviewLocation = vector_utils_Vector3Utils.add(this.pastePreviewLocation, offset);
        this.updateSelectionPreview(extensionContext);
    }
    getClipboardRotationFromDropdownIndex(index) {
        if (index < 0 || index >= this.rotationLookup.length) {
            this.uiSession.log.error("Unexpected rotation index, unable to convert to clipboard rotation.");
            return this.rotationLookup[0];
        }
        return this.rotationLookup[index % this.rotationLookup.length];
    }
}

const Clipboard_directionLookup = [ {
    x: 0,
    y: 0,
    z: 1
}, {
    x: -1,
    y: 0,
    z: 0
}, {
    x: 0,
    y: 0,
    z: -1
}, {
    x: 1,
    y: 0,
    z: 0
} ];

function getAxisAlignedDirection(rotation) {
    const directionQuadrant = Math.floor((rotation + 405) % 360 / 90);
    return Clipboard_directionLookup[directionQuadrant];
}

function findPasteTarget(player, ray) {
    const raycastOptions = {
        includeLiquidBlocks: false,
        includePassableBlocks: true,
        maxDistance: 100
    };
    const blockHit = ray ? player.dimension.getBlockFromRay(ray.location, ray.direction, raycastOptions) : player.getBlockFromViewDirection(raycastOptions);
    let destination;
    if (blockHit) {
        destination = blockHit.block.location;
    } else {
        const headLocation = player.getHeadLocation();
        destination = {
            x: headLocation.x,
            y: headLocation.y,
            z: headLocation.z
        };
        const viewDirection = player.getViewDirection();
        destination.x = destination.x + viewDirection.x * 3;
        destination.y = destination.y + viewDirection.y * 3;
        destination.z = destination.z + viewDirection.z * 3;
    }
    return destination;
}

class DeleteBehavior {
    constructor(uiSession, coreMenuItems) {
        const deleteAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                deleteOperation(uiSession).catch((e => uiSession.log.error(e.message)));
            }
        });
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.delete",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.delete")
        }, deleteAction);
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalEditor, deleteAction, server_editor_namespaceObject.KeyboardKey.DELETE);
    }
    teardown() {}
}

var SelectionCursorMode;

(function(SelectionCursorMode) {
    SelectionCursorMode[SelectionCursorMode["Freeform"] = 0] = "Freeform";
    SelectionCursorMode[SelectionCursorMode["FixedDistance"] = 1] = "FixedDistance";
    SelectionCursorMode[SelectionCursorMode["AdjacentFace"] = 2] = "AdjacentFace";
})(SelectionCursorMode || (SelectionCursorMode = {}));

const Controls = {
    Up: server_editor_namespaceObject.KeyboardKey.PAGE_UP,
    Down: server_editor_namespaceObject.KeyboardKey.PAGE_DOWN,
    Forward: server_editor_namespaceObject.KeyboardKey.UP,
    Back: server_editor_namespaceObject.KeyboardKey.DOWN,
    Left: server_editor_namespaceObject.KeyboardKey.LEFT,
    Right: server_editor_namespaceObject.KeyboardKey.RIGHT,
    Select: server_editor_namespaceObject.KeyboardKey.ENTER,
    Clear: server_editor_namespaceObject.KeyboardKey.KEY_D
};

const TicksRefreshRate = 5;

class SelectionBehavior {
    get toolId() {
        return this.tool.id;
    }
    constructor(uiSession) {
        this.uiSession = uiSession;
        this.fnUnregisterToolBindings = () => {
            this.tool.unregisterInputBindings();
        };
        this.singleClick = (uiSession, mouseRay, shiftPressed, ctrlPressed, altPressed) => {
            const clickLoc = mouseRay.cursorBlockLocation;
            if (!shiftPressed && !ctrlPressed && !altPressed) {
                uiSession.extensionContext.selectionManager.selection.clear();
                uiSession.extensionContext.selectionManager.selection.pushVolume({
                    action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                    volume: {
                        from: clickLoc,
                        to: clickLoc
                    }
                });
                this.lastAnchorPosition = clickLoc;
            } else if (shiftPressed && !ctrlPressed && !altPressed) {
                if (uiSession.extensionContext.selectionManager.selection.isEmpty) {
                    uiSession.extensionContext.selectionManager.selection.pushVolume({
                        action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                        volume: {
                            from: clickLoc,
                            to: clickLoc
                        }
                    });
                    this.lastAnchorPosition = clickLoc;
                } else {
                    const lastAnchorPosition = this.lastAnchorPosition;
                    const lastVolume = uiSession.extensionContext.selectionManager.selection.peekLastVolume();
                    uiSession.extensionContext.selectionManager.selection.popVolume();
                    try {
                        uiSession.extensionContext.selectionManager.selection.pushVolume({
                            action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                            volume: {
                                from: lastAnchorPosition,
                                to: clickLoc
                            }
                        });
                    } catch {
                        if (lastVolume) {
                            uiSession.extensionContext.selectionManager.selection.pushVolume(lastVolume);
                        }
                    }
                }
            } else if (ctrlPressed && !shiftPressed && !altPressed) {
                let success = true;
                try {
                    uiSession.extensionContext.selectionManager.selection.pushVolume({
                        action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                        volume: {
                            from: clickLoc,
                            to: clickLoc
                        }
                    });
                } catch {
                    success = false;
                }
                if (success) {
                    this.lastAnchorPosition = clickLoc;
                }
            } else if (altPressed && !shiftPressed && !ctrlPressed) {
                const currentItem = uiSession.extensionContext.selectionManager.selection.peekLastVolume();
                if (!currentItem) {
                    uiSession.extensionContext.selectionManager.selection.pushVolume({
                        action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                        volume: {
                            from: clickLoc,
                            to: clickLoc
                        }
                    });
                    this.lastAnchorPosition = clickLoc;
                } else {
                    const currentVolume = currentItem.volume;
                    const currentBounds = server_namespaceObject.BlockVolumeUtils.getBoundingBox(currentVolume);
                    const translatedRayLocation = vector_utils_Vector3Utils.subtract(mouseRay.location, currentBounds.min);
                    const XYPlaneNormal = getRelativeXYAxisAsNormal(uiSession.extensionContext.player.getRotation().y);
                    const intersection = intersectRayPlane(translatedRayLocation, mouseRay.direction, XYPlaneNormal, 0);
                    if (intersection) {
                        const translatedIntersection = vector_utils_Vector3Utils.add(intersection, currentBounds.min);
                        const newY = Math.ceil(translatedIntersection.y) - 1;
                        uiSession.extensionContext.selectionManager.selection.popVolume();
                        uiSession.extensionContext.selectionManager.selection.pushVolume({
                            action: currentItem.action,
                            volume: {
                                from: {
                                    x: currentBounds.min.x,
                                    y: currentBounds.min.y,
                                    z: currentBounds.min.z
                                },
                                to: {
                                    x: currentBounds.max.x,
                                    y: newY,
                                    z: currentBounds.max.z
                                }
                            }
                        });
                    }
                }
            }
        };
        this.moveTopSelection = (uiSession, lastAnchor, direction) => {
            const lastVolumeItem = uiSession.extensionContext.selectionManager.selection.peekLastVolume();
            if (!lastVolumeItem) {
                return undefined;
            }
            const lastVolume = lastVolumeItem.volume;
            uiSession.extensionContext.selectionManager.selection.popVolume();
            const rotationY = uiSession.extensionContext.player.getRotation().y;
            const correctedVector = getRotationCorrectedDirectionVector(rotationY, direction);
            const newVolume = server_namespaceObject.BlockVolumeUtils.translate(lastVolume, {
                x: correctedVector.x,
                y: correctedVector.y,
                z: correctedVector.z
            });
            uiSession.extensionContext.selectionManager.selection.pushVolume({
                action: lastVolumeItem.action,
                volume: newVolume
            });
            const updatedClick = {
                x: lastAnchor.x + correctedVector.x,
                y: lastAnchor.y + correctedVector.y,
                z: lastAnchor.z + correctedVector.z
            };
            return updatedClick;
        };
        this.moveBlockCursorManually = (uiSession, direction) => {
            const rotationY = uiSession.extensionContext.player.getRotation().y;
            const rotationCorrectedVector = getRotationCorrectedDirectionVector(rotationY, direction);
            uiSession.extensionContext.cursor.moveBy(rotationCorrectedVector);
        };
        this.moveAllSelections = (uiSession, anchorPosition, direction) => {
            if (uiSession.extensionContext.selectionManager.selection.isEmpty) {
                return undefined;
            }
            const rotationY = uiSession.extensionContext.player.getRotation().y;
            const correctedVector = getRotationCorrectedDirectionVector(rotationY, direction);
            uiSession.extensionContext.selectionManager.selection.moveBy({
                x: correctedVector.x,
                y: correctedVector.y,
                z: correctedVector.z
            });
            const updatedClick = {
                x: anchorPosition.x + correctedVector.x,
                y: anchorPosition.y + correctedVector.y,
                z: anchorPosition.z + correctedVector.z
            };
            return updatedClick;
        };
        this.shrinkVolume = (uiSession, direction) => {
            const lastVolumeItem = uiSession.extensionContext.selectionManager.selection.peekLastVolume();
            if (!lastVolumeItem) {
                return;
            }
            const lastVolume = lastVolumeItem.volume;
            uiSession.extensionContext.selectionManager.selection.popVolume();
            const rotationY = uiSession.extensionContext.player.getRotation().y;
            const newVolume = shrinkVolumeAlongViewAxis(lastVolume, rotationY, direction, 1);
            uiSession.extensionContext.selectionManager.selection.pushVolume({
                action: lastVolumeItem.action,
                volume: newVolume
            });
        };
        this.growVolume = (uiSession, direction) => {
            const lastVolumeItem = uiSession.extensionContext.selectionManager.selection.peekLastVolume();
            if (!lastVolumeItem) {
                return;
            }
            const lastVolume = lastVolumeItem.volume;
            uiSession.extensionContext.selectionManager.selection.popVolume();
            const rotationY = uiSession.extensionContext.player.getRotation().y;
            const newVolume = growVolumeAlongViewAxis(lastVolume, rotationY, direction, 1);
            uiSession.extensionContext.selectionManager.selection.pushVolume({
                action: lastVolumeItem.action,
                volume: newVolume
            });
        };
        this.bindToolInput = uiSession => {
            const singleClickAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
                onExecute: (mouseRay, mouseProps) => {
                    if (mouseProps.mouseAction === server_editor_namespaceObject.MouseActionType.LeftButton) {
                        if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonDown) {
                            if (mouseRay.rayHit || this.toolCursorProperties.controlMode === server_editor_namespaceObject.CursorControlMode.Fixed) {
                                this.singleClick(uiSession, mouseRay, mouseProps.modifiers.shift, mouseProps.modifiers.ctrl, mouseProps.modifiers.alt);
                            } else {
                                uiSession.extensionContext.selectionManager.selection.clear();
                            }
                        } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonUp) {}
                    }
                }
            });
            this.tool.registerMouseButtonBinding(singleClickAction);
            const keyUpAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.up);
                }
            });
            const keyDownAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.down);
                }
            });
            const keyLeftAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.moveBlockCursorManually(uiSession, Direction.Left);
                }
            });
            const keyRightAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.moveBlockCursorManually(uiSession, Direction.Right);
                }
            });
            const keyForwardAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.moveBlockCursorManually(uiSession, Direction.Forward);
                }
            });
            const keyBackAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.moveBlockCursorManually(uiSession, Direction.Back);
                }
            });
            this.tool.registerKeyBinding(keyForwardAction, Controls.Forward, server_editor_namespaceObject.InputModifier.None);
            this.tool.registerKeyBinding(keyBackAction, Controls.Back, server_editor_namespaceObject.InputModifier.None);
            this.tool.registerKeyBinding(keyLeftAction, Controls.Left, server_editor_namespaceObject.InputModifier.None);
            this.tool.registerKeyBinding(keyRightAction, Controls.Right, server_editor_namespaceObject.InputModifier.None);
            this.tool.registerKeyBinding(keyUpAction, Controls.Up, server_editor_namespaceObject.InputModifier.None);
            this.tool.registerKeyBinding(keyDownAction, Controls.Down, server_editor_namespaceObject.InputModifier.None);
            const mouseWheelAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
                onExecute: (mouseRay, mouseProps) => {
                    if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelOut) {
                        if (mouseProps.modifiers.shift) {
                            this.growVolume(uiSession, Direction.Left);
                            this.growVolume(uiSession, Direction.Right);
                        } else if (mouseProps.modifiers.ctrl) {
                            this.growVolume(uiSession, Direction.Forward);
                            this.growVolume(uiSession, Direction.Back);
                        } else if (mouseProps.modifiers.alt) {
                            this.growVolume(uiSession, Direction.Up);
                            this.growVolume(uiSession, Direction.Down);
                        } else if (this.toolCursorProperties.controlMode === server_editor_namespaceObject.CursorControlMode.Fixed) {
                            uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.forward);
                        }
                    } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelIn) {
                        if (mouseProps.modifiers.shift) {
                            this.shrinkVolume(uiSession, Direction.Left);
                            this.shrinkVolume(uiSession, Direction.Right);
                        } else if (mouseProps.modifiers.ctrl) {
                            this.shrinkVolume(uiSession, Direction.Forward);
                            this.shrinkVolume(uiSession, Direction.Back);
                        } else if (mouseProps.modifiers.alt) {
                            this.shrinkVolume(uiSession, Direction.Up);
                            this.shrinkVolume(uiSession, Direction.Down);
                        } else if (this.toolCursorProperties.controlMode === server_editor_namespaceObject.CursorControlMode.Fixed) {
                            uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.back);
                        }
                    }
                }
            });
            this.tool.registerMouseWheelBinding(mouseWheelAction);
            const moveSelectionUpAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Up);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveSelectionDownAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Down);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveSelectionLeftAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Left);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveSelectionRightAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Right);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveSelectionForwardAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Forward);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveSelectionBackAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveTopSelection(uiSession, this.lastAnchorPosition, Direction.Back);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            this.tool.registerKeyBinding(moveSelectionForwardAction, Controls.Forward, server_editor_namespaceObject.InputModifier.Alt);
            this.tool.registerKeyBinding(moveSelectionBackAction, Controls.Back, server_editor_namespaceObject.InputModifier.Alt);
            this.tool.registerKeyBinding(moveSelectionLeftAction, Controls.Left, server_editor_namespaceObject.InputModifier.Alt);
            this.tool.registerKeyBinding(moveSelectionRightAction, Controls.Right, server_editor_namespaceObject.InputModifier.Alt);
            this.tool.registerKeyBinding(moveSelectionUpAction, Controls.Up, server_editor_namespaceObject.InputModifier.Alt);
            this.tool.registerKeyBinding(moveSelectionDownAction, Controls.Down, server_editor_namespaceObject.InputModifier.Alt);
            const moveAllSelectionUpAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Up);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveAllSelectionDownAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Down);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveAllSelectionLeftAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Left);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveAllSelectionRightAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Right);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveAllSelectionForwardAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Forward);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            const moveAllSelectionBackAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const updatedAnchor = this.moveAllSelections(uiSession, this.lastAnchorPosition, Direction.Back);
                    if (updatedAnchor) {
                        this.lastAnchorPosition = updatedAnchor;
                    }
                }
            });
            this.tool.registerKeyBinding(moveAllSelectionForwardAction, Controls.Forward, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            this.tool.registerKeyBinding(moveAllSelectionBackAction, Controls.Back, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            this.tool.registerKeyBinding(moveAllSelectionLeftAction, Controls.Left, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            this.tool.registerKeyBinding(moveAllSelectionRightAction, Controls.Right, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            this.tool.registerKeyBinding(moveAllSelectionUpAction, Controls.Up, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            this.tool.registerKeyBinding(moveAllSelectionDownAction, Controls.Down, server_editor_namespaceObject.InputModifier.Alt | server_editor_namespaceObject.InputModifier.Control);
            const keySelectAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const blockLocation = uiSession.extensionContext.cursor.getPosition();
                    const ray = {
                        location: vector_utils_Vector3Utils.zero,
                        direction: vector_utils_Vector3Utils.zero,
                        cursorBlockLocation: blockLocation,
                        rayHit: false
                    };
                    this.singleClick(uiSession, ray, false, false, false);
                }
            });
            this.tool.registerKeyBinding(keySelectAction, Controls.Select, server_editor_namespaceObject.InputModifier.None);
            const keySelectMultipleAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const blockLocation = uiSession.extensionContext.cursor.getPosition();
                    const ray = {
                        location: vector_utils_Vector3Utils.zero,
                        direction: vector_utils_Vector3Utils.zero,
                        cursorBlockLocation: blockLocation,
                        rayHit: false
                    };
                    this.singleClick(uiSession, ray, false, true, false);
                }
            });
            this.tool.registerKeyBinding(keySelectMultipleAction, Controls.Select, server_editor_namespaceObject.InputModifier.Control);
            const keySelectAndExtendAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    const blockLocation = uiSession.extensionContext.cursor.getPosition();
                    const ray = {
                        location: vector_utils_Vector3Utils.zero,
                        direction: vector_utils_Vector3Utils.zero,
                        cursorBlockLocation: blockLocation,
                        rayHit: false
                    };
                    this.singleClick(uiSession, ray, true, false, false);
                }
            });
            this.tool.registerKeyBinding(keySelectAndExtendAction, Controls.Select, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowUpAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Up);
                }
            });
            this.tool.registerKeyBinding(keyGrowUpAction, Controls.Up, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowDownAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Down);
                }
            });
            this.tool.registerKeyBinding(keyGrowDownAction, Controls.Down, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowForwardAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Forward);
                }
            });
            this.tool.registerKeyBinding(keyGrowForwardAction, Controls.Forward, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowBackAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Back);
                }
            });
            this.tool.registerKeyBinding(keyGrowBackAction, Controls.Back, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowLeftAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Left);
                }
            });
            this.tool.registerKeyBinding(keyGrowLeftAction, Controls.Left, server_editor_namespaceObject.InputModifier.Shift);
            const keyGrowRightAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.growVolume(uiSession, Direction.Right);
                }
            });
            this.tool.registerKeyBinding(keyGrowRightAction, Controls.Right, server_editor_namespaceObject.InputModifier.Shift);
            const keyShrinkUpAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Up);
                }
            });
            this.tool.registerKeyBinding(keyShrinkUpAction, Controls.Up, server_editor_namespaceObject.InputModifier.Control);
            const keyShrinkDownAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Down);
                }
            });
            this.tool.registerKeyBinding(keyShrinkDownAction, Controls.Down, server_editor_namespaceObject.InputModifier.Control);
            const keyShrinkForwardAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Forward);
                }
            });
            this.tool.registerKeyBinding(keyShrinkForwardAction, Controls.Forward, server_editor_namespaceObject.InputModifier.Control);
            const keyShrinkBackAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Back);
                }
            });
            this.tool.registerKeyBinding(keyShrinkBackAction, Controls.Back, server_editor_namespaceObject.InputModifier.Control);
            const keyShrinkLeftAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Left);
                }
            });
            this.tool.registerKeyBinding(keyShrinkLeftAction, Controls.Left, server_editor_namespaceObject.InputModifier.Control);
            const keyShrinkRightAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    this.shrinkVolume(uiSession, Direction.Right);
                }
            });
            this.tool.registerKeyBinding(keyShrinkRightAction, Controls.Right, server_editor_namespaceObject.InputModifier.Control);
        };
        this.onTickRefresh = (uiSession, tool) => {
            let ticks = 0;
            this.tickRefreshHandle = server_namespaceObject.system.run((() => {
                if (uiSession.extensionContext.selectionManager === undefined) {
                    return;
                }
                if (!this.settingsObject) {
                    uiSession.log.error("Pane settings object not defined, unable to refresh values for selection.");
                    return;
                }
                if (ticks++ % TicksRefreshRate === 0) {
                    ticks = 0;
                    let x = 0, y = 0, z = 0;
                    let sx = 0, sy = 0, sz = 0;
                    const selection = uiSession.extensionContext.selectionManager.selection;
                    const lastVolumeItem = selection.peekLastVolume(server_namespaceObject.CompoundBlockVolumePositionRelativity.Absolute);
                    if (lastVolumeItem) {
                        const lastVolume = lastVolumeItem.volume;
                        const bounds = server_namespaceObject.BlockVolumeUtils.getBoundingBox(lastVolume);
                        const boundSize = server_namespaceObject.BoundingBoxUtils.getSpan(bounds);
                        x = bounds.min.x;
                        y = bounds.min.y;
                        z = bounds.min.z;
                        sx = boundSize.x;
                        sy = boundSize.y;
                        sz = boundSize.z;
                        if (!this.originPropertyItem?.enable) {
                            if (this.originPropertyItem) {
                                this.originPropertyItem.enable = true;
                            }
                        }
                        if (!this.sizePropertyItem?.enable) {
                            if (this.sizePropertyItem) {
                                this.sizePropertyItem.enable = true;
                            }
                        }
                    } else {
                        if (this.originPropertyItem?.enable) {
                            if (this.originPropertyItem) {
                                this.originPropertyItem.enable = false;
                            }
                        }
                        if (this.sizePropertyItem?.enable) {
                            if (this.sizePropertyItem) {
                                this.sizePropertyItem.enable = false;
                            }
                        }
                    }
                    if (this.settingsObject.origin.x !== x || this.settingsObject.origin.y !== y || this.settingsObject.origin.z !== z || this.settingsObject.size.x !== sx || this.settingsObject.size.y !== sy || this.settingsObject.size.z !== sz) {
                        this.settingsObject.origin.x = Math.trunc(x);
                        this.settingsObject.origin.y = Math.trunc(y);
                        this.settingsObject.origin.z = Math.trunc(z);
                        this.settingsObject.size.x = Math.trunc(sx);
                        this.settingsObject.size.y = Math.trunc(sy);
                        this.settingsObject.size.z = Math.trunc(sz);
                    }
                }
                if (uiSession.toolRail.selectedOptionId === tool.id) {
                    this.tickRefreshHandle = server_namespaceObject.system.run((() => this.onTickRefresh(uiSession, tool)));
                }
            }));
        };
        this.addSettingsPane = uiSession => {
            this.pane.addDropdown(this.settingsObject, "selectionMode", {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.selectionMode"),
                titleAltText: "Mode",
                enable: true,
                dropdownItems: [ {
                    displayAltText: "Freeform",
                    displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.selectionMode.mouseAndKeyboard"),
                    value: SelectionCursorMode.Freeform
                }, {
                    displayAltText: "Fixed Distance",
                    displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.selectionMode.fixedDistance"),
                    value: SelectionCursorMode.FixedDistance
                }, {
                    displayAltText: "Adjacent Face",
                    displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.selectionMode.adjacent"),
                    value: SelectionCursorMode.AdjacentFace
                } ],
                onChange: (_obj, _property, _oldValue, _newValue) => {
                    const oldVal = _oldValue;
                    const newVal = _newValue;
                    let cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                    let cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                    if (oldVal !== newVal) {
                        switch (newVal) {
                          case SelectionCursorMode.Freeform:
                            cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                            cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                            break;

                          case SelectionCursorMode.FixedDistance:
                            cursorControlMode = server_editor_namespaceObject.CursorControlMode.Fixed;
                            cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                            break;

                          case SelectionCursorMode.AdjacentFace:
                            cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                            cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Face;
                            break;

                          default:
                            uiSession.log.error(`Unknown value from selection mode drop-down`);
                            return;
                        }
                        this.toolCursorProperties = uiSession.extensionContext.cursor.getProperties();
                        this.toolCursorProperties.controlMode = cursorControlMode;
                        this.toolCursorProperties.targetMode = cursorTargetMode;
                        uiSession.extensionContext.cursor.setProperties(this.toolCursorProperties);
                    }
                }
            });
            this.pane.addBool(this.settingsObject, "raycastThroughLiquid", {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.projectThroughLiquid"),
                titleAltText: "Project through liquids",
                onChange: (_obj, _property, _oldValue, _newValue) => {
                    const oldVal = _oldValue;
                    const newVal = _newValue;
                    if (oldVal !== newVal) {
                        this.toolCursorProperties.projectThroughLiquid = newVal;
                        uiSession.extensionContext.cursor.setProperties(this.toolCursorProperties);
                    }
                }
            });
            uiSession.extensionContext.afterEvents.cursorPropertyChange.subscribe((event => {
                if (event.properties.projectThroughLiquid !== undefined) {
                    this.settingsObject.raycastThroughLiquid = event.properties.projectThroughLiquid;
                }
            }));
            const onOriginOrSizeChange = (_obj, _property, _oldValue, _newValue) => {
                if (_oldValue === _newValue) {
                    return;
                }
                const selection = uiSession.extensionContext.selectionManager.selection;
                const lastVolume = selection.peekLastVolume(server_namespaceObject.CompoundBlockVolumePositionRelativity.Absolute);
                if (lastVolume) {
                    const volumeOrigin = selection.getVolumeOrigin();
                    const min = {
                        x: this.settingsObject.origin.x - volumeOrigin.x,
                        y: this.settingsObject.origin.y - volumeOrigin.y,
                        z: this.settingsObject.origin.z - volumeOrigin.z
                    };
                    const max = {
                        x: min.x + this.settingsObject.size.x - 1,
                        y: min.y + this.settingsObject.size.y - 1,
                        z: min.z + this.settingsObject.size.z - 1
                    };
                    selection.popVolume();
                    try {
                        selection.pushVolume({
                            action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                            volume: {
                                from: min,
                                to: max
                            }
                        });
                    } catch {
                        selection.pushVolume(lastVolume);
                    }
                }
            };
            const subPaneTransform = this.pane.createPropertyPane({
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.transformPane.title"),
                titleAltText: "Transform"
            });
            this.originPropertyItem = subPaneTransform.addVector3(this.settingsObject, "origin", {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.transformPane.origin"),
                titleAltText: "Origin",
                enable: true,
                minX: Number.MIN_SAFE_INTEGER,
                minZ: Number.MIN_SAFE_INTEGER,
                minY: uiSession.extensionContext.player.dimension.heightRange.min,
                maxY: uiSession.extensionContext.player.dimension.heightRange.max,
                onChange: onOriginOrSizeChange
            });
            this.sizePropertyItem = subPaneTransform.addVector3(this.settingsObject, "size", {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.transformPane.size"),
                titleAltText: "Size",
                enable: true,
                minX: 1,
                minY: 1,
                minZ: 1,
                maxX: 100,
                maxY: 100,
                maxZ: 100,
                onChange: onOriginOrSizeChange
            });
            const subPaneFill = this.pane.createPropertyPane({
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.fillPane.title"),
                titleAltText: "Fill Selection"
            });
            subPaneFill.addBlockPicker(this.settingsObject, "block", {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.fillPane.blockType"),
                titleAltText: "Block Type"
            });
            subPaneFill.addButton(this.executeFillAction, {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.fillPane.fillAction"),
                titleAltText: "Fill Selection"
            });
            this.pane.addDivider();
            const actionClearSelection = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    uiSession.extensionContext.selectionManager.selection.clear();
                }
            });
            this.pane.addButton(actionClearSelection, {
                titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.deselect"),
                titleAltText: "Deselect",
                variant: "secondary"
            });
            this.tool.bindPropertyPane(this.pane);
            this.uiSession.eventSubscriptionCache.subscribeToBedrockEvent("playerDimensionChange", (event => {
                if (event.player.id === uiSession.extensionContext.player.id) {
                    const heightRange = event.toDimension.heightRange;
                    this.originPropertyItem?.updateAxisLimits({
                        minY: heightRange.min,
                        maxY: heightRange.max
                    });
                }
            }));
        };
        this.addTool = uiSession => {
            const tool = uiSession.toolRail.addTool({
                displayAltText: "Selection (CTRL + S)",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.toolRail.title"),
                icon: "pack://textures/editor/marquee.png?filtering=point",
                tooltipAltText: "Selection Tool",
                tooltipStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.toolRail.description")
            });
            tool.onModalToolActivation.subscribe((eventData => {
                if (eventData.isActiveTool) {
                    uiSession.extensionContext.cursor.setProperties(this.toolCursorProperties);
                    this.onTickRefresh(uiSession, tool);
                }
            }));
            return tool;
        };
        this.bindGlobalActivationShortcut = (uiSession, storage) => {
            const toggleAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    uiSession.toolRail.setSelectedOptionId(this.tool.id, true);
                }
            });
            const deselectAction = uiSession.actionManager.createAction({
                actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
                onExecute: () => {
                    uiSession.extensionContext.selectionManager.selection.clear();
                }
            });
            uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalEditor, toggleAction, server_editor_namespaceObject.KeyboardKey.KEY_S, server_editor_namespaceObject.InputModifier.Control);
            uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, this.executeFillAction, server_editor_namespaceObject.KeyboardKey.KEY_F, server_editor_namespaceObject.InputModifier.Control);
            uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalEditor, deselectAction, server_editor_namespaceObject.KeyboardKey.KEY_D, server_editor_namespaceObject.InputModifier.Control);
            storage.coreMenuItems?.edit.addItem({
                name: "menuBar.edit.quickFill",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.quickFill")
            }, this.executeFillAction);
            storage.coreMenuItems?.edit.addItem({
                name: "menuBar.edit.deselect",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.deselect")
            }, deselectAction);
        };
        this.performFillOperation = async (context, fillType) => {
            const player = context.player;
            const dimension = player.dimension;
            if (context.selectionManager.selection.isEmpty) {
                this.uiSession.log.warning("No selection available to fill");
                return;
            }
            context.transactionManager.openTransaction("Select-Fill");
            const bounds = context.selectionManager.selection.getBoundingBox();
            try {
                context.transactionManager.trackBlockChangeArea(bounds.min, bounds.max);
            } catch (e) {
                this.uiSession.log.warning(`Unable to fill selection. ${stringFromException(e)}`);
                context.transactionManager.discardOpenTransaction();
                return;
            }
            await (0, server_editor_namespaceObject.executeLargeOperation)(context.selectionManager.selection, (blockLocation => {
                const block = dimension.getBlock(blockLocation);
                if (block) {
                    block.isWaterlogged = false;
                    block.setType(fillType);
                }
            })).catch((e => {
                this.uiSession.log.error(e.message);
                context.transactionManager.discardOpenTransaction();
            })).then((() => {
                context.transactionManager.commitOpenTransaction();
            }));
        };
        const storage = uiSession.scratchStorage;
        if (!storage) {
            throw new Error("Can not instantiate Selection functionality without valid CoreEditor storage.");
        }
        this.toolCursorProperties = {
            outlineColor: {
                red: 1,
                green: 1,
                blue: 0,
                alpha: 1
            },
            controlMode: server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse,
            targetMode: server_editor_namespaceObject.CursorTargetMode.Block,
            visible: true
        };
        this.tool = this.addTool(uiSession);
        this.pane = uiSession.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("selectionTool.settingsPane.title"),
            titleAltText: "Selection"
        });
        this.settingsObject = (0, server_editor_namespaceObject.bindDataSource)(this.pane, {
            selectionMode: SelectionCursorMode.Freeform,
            raycastThroughLiquid: this.toolCursorProperties.projectThroughLiquid ? this.toolCursorProperties.projectThroughLiquid : false,
            origin: {
                x: 0,
                y: 0,
                z: 0
            },
            size: {
                x: 0,
                y: 0,
                z: 0
            },
            block: MinecraftBlockTypes.Grass
        });
        this.lastAnchorPosition = {
            x: 0,
            y: 0,
            z: 0
        };
        this.executeFillAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.performFillOperation(uiSession.extensionContext, this.settingsObject.block).catch((e => uiSession.log.error(e.message)));
            }
        });
        this.addSettingsPane(uiSession);
        this.bindToolInput(uiSession);
        this.bindGlobalActivationShortcut(uiSession, storage);
        uiSession.toolRail.setSelectedOptionId(this.tool.id, true);
    }
    teardown() {
        this.uiSession.log.debug("Shutting down minecraft::selection behavior\n");
        if (this.tickRefreshHandle !== undefined) {
            server_namespaceObject.system.clearRun(this.tickRefreshHandle);
            this.tickRefreshHandle = undefined;
        }
        this.fnUnregisterToolBindings();
        this.uiSession.extensionContext.selectionManager.selection.clear();
    }
}

class UndoRedoBehavior {
    constructor(uiSession, coreMenuItems) {
        const undoAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                uiSession.extensionContext.transactionManager.undo();
            }
        });
        const redoAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                uiSession.extensionContext.transactionManager.redo();
            }
        });
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.undo",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.undo")
        }, undoAction);
        coreMenuItems.edit.addItem({
            name: "menuBar.edit.redo",
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit.redo")
        }, redoAction);
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalEditor, undoAction, server_editor_namespaceObject.KeyboardKey.KEY_Z, server_editor_namespaceObject.InputModifier.Control);
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalEditor, redoAction, server_editor_namespaceObject.KeyboardKey.KEY_Y, server_editor_namespaceObject.InputModifier.Control);
    }
    teardown() {}
}

class PlayerCountBehavior {
    constructor(uiSession) {
        const statusBarItem = uiSession.createStatusBarItem(server_editor_namespaceObject.EditorStatusBarAlignment.Right, 30);
        uiSession.eventSubscriptionCache.subscribeToBedrockEvent("playerJoin", (() => this.updateStatusBarText(statusBarItem, server_namespaceObject.world.getAllPlayers().length + 1)));
        uiSession.eventSubscriptionCache.subscribeToBedrockEvent("playerLeave", (() => this.updateStatusBarText(statusBarItem, server_namespaceObject.world.getAllPlayers().length)));
        this.updateStatusBarText(statusBarItem, server_namespaceObject.world.getAllPlayers().length);
    }
    updateStatusBarText(statusBarItem, playerCount) {
        statusBarItem.text = `Connected Players: ${playerCount}`;
    }
    teardown() {}
}

function getEnumKeyByEnumValue(myEnum, enumValue) {
    const keys = Object.keys(myEnum);
    for (const key of keys) {
        if (myEnum[key] === enumValue) {
            return key;
        }
    }
    return "";
}

function formatAsTimeString(hours, minutes) {
    return hours.toString().padStart(2, "0") + ":" + minutes.toString().padStart(2, "0");
}

const capitalizeWord = s => {
    if (s.length === 0) return s;
    return s.charAt(0).toUpperCase() + s.slice(1);
};

const mcHoursPerTick = 1e3;

const mcMinsPerTick = 16.6667;

const Custom = -2;

const validGameModes = [ server_namespaceObject.GameMode.survival, server_namespaceObject.GameMode.creative, server_namespaceObject.GameMode.adventure ];

const validDifficulties = [ server_namespaceObject.Difficulty.Peaceful, server_namespaceObject.Difficulty.Easy, server_namespaceObject.Difficulty.Normal, server_namespaceObject.Difficulty.Hard ];

const validWeather = [ server_namespaceObject.WeatherType.Clear, server_namespaceObject.WeatherType.Rain, server_namespaceObject.WeatherType.Thunder ];

const validTimes = [ {
    name: "Default",
    time: -1
}, {
    name: "Day",
    time: server_namespaceObject.TimeOfDay.Day
}, {
    name: "Noon",
    time: server_namespaceObject.TimeOfDay.Noon
}, {
    name: "Sunset",
    time: server_namespaceObject.TimeOfDay.Sunset
}, {
    name: "Night",
    time: server_namespaceObject.TimeOfDay.Night
}, {
    name: "Midnight",
    time: server_namespaceObject.TimeOfDay.Midnight
}, {
    name: "Sunrise",
    time: server_namespaceObject.TimeOfDay.Sunrise
}, {
    name: "Custom",
    time: Custom
} ];

const Playtest_TicksRefreshRate = 5;

const paneDataDynamicPropertyName = "playtest:paneData";

class PlaytestBehavior {
    constructor(uiSession) {
        this.initialize(uiSession);
    }
    addMenuItem(uiSession) {
        const coreMenuItems = uiSession.scratchStorage?.coreMenuItems;
        const playtestMenuItem = coreMenuItems?.worldOptions.addItem({
            displayStringId: "resourcePack.editor.Playtest.Menu.Title",
            name: "Test Settings"
        }, uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this._propertyPane?.show();
            }
        }));
        return playtestMenuItem;
    }
    buildPropertyPane(uiSession) {
        const propertyPane = uiSession.createPropertyPane({
            titleAltText: "Test Settings",
            titleStringId: "resourcePack.editor.Playtest.Dialog.Title",
            width: 40
        });
        const player = uiSession.extensionContext.player;
        const paneData = this.loadPlayTestDynamicProperties(uiSession);
        this._paneDataSource = (0, server_editor_namespaceObject.bindDataSource)(propertyPane, paneData);
        const gameTypeItems = validGameModes.map(((v, i) => {
            const item = {
                displayAltText: capitalizeWord(v),
                displayStringId: "NO_ID",
                value: i
            };
            return item;
        }));
        propertyPane.addDropdown(this._paneDataSource, "gameMode", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.GameMode",
            titleAltText: "Game Mode",
            dropdownItems: gameTypeItems,
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        const difficultyItems = validDifficulties.map(((v, i) => {
            const item = {
                displayAltText: getEnumKeyByEnumValue(server_namespaceObject.Difficulty, v),
                displayStringId: "NO_ID",
                value: i
            };
            return item;
        }));
        propertyPane.addDropdown(this._paneDataSource, "difficulty", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.Difficulty",
            titleAltText: "Difficulty",
            dropdownItems: difficultyItems,
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        propertyPane.addBool(this._paneDataSource, "overrideSpawn", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.OverrideSpawn",
            titleAltText: "Spawn at current position",
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        const advancedPane = propertyPane.createPropertyPane({
            titleStringId: "NO_ID",
            titleAltText: "Advanced Settings"
        });
        advancedPane.collapse();
        advancedPane.addBool(this._paneDataSource, "daylightCycle", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.DaylightCycle",
            titleAltText: "Daylight Cycle",
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        const customTime = advancedPane.addString(this._paneDataSource, "time", {
            titleStringId: "resourcePack.editor.internal.timeOfDay.pane.customTime",
            titleAltText: "Start Time",
            enable: this._paneDataSource.timeOfDay === 7,
            onChange: (_obj, _property, _oldValue, newValue) => {
                this.savePlayTestDynamicProperties(player);
                if (!this._paneDataSource) {
                    return;
                }
                if (_oldValue.toString() === newValue.toString()) {
                    return;
                }
                this._paneDataSource.time = this.parseTimeValue(newValue.toString());
            }
        });
        const timeItems = validTimes.map(((v, i) => {
            const item = {
                displayAltText: v.name,
                displayStringId: "NO_ID",
                value: i
            };
            return item;
        }));
        advancedPane.addDropdown(this._paneDataSource, "timeOfDay", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.TimeOfDay",
            titleAltText: "Time of Day",
            dropdownItems: timeItems,
            onChange: (_obj, _property, _oldValue, newValue) => {
                if (Number.isSafeInteger(newValue)) {
                    const num = Number(validTimes[Number(newValue)].time);
                    if (num === Custom) {
                        customTime.enable = true;
                    } else if (num >= 0) {
                        if (this._paneDataSource) {
                            this._paneDataSource.time = this.getTimeStringFromTime(num);
                        }
                        customTime.enable = false;
                    }
                }
                this.savePlayTestDynamicProperties(player);
            }
        });
        advancedPane.addBool(this._paneDataSource, "weatherCycle", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.WeatherCycle",
            titleAltText: "Weather Cycle",
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        const weatherItems = validWeather.map(((v, i) => {
            const item = {
                displayAltText: getEnumKeyByEnumValue(server_namespaceObject.WeatherType, v),
                displayStringId: "NO_ID",
                value: i
            };
            return item;
        }));
        advancedPane.addDropdown(this._paneDataSource, "weather", {
            titleStringId: "NO_ID",
            titleAltText: "Weather",
            dropdownItems: weatherItems,
            onChange: (_obj, _property, _oldValue, _newValue) => {
                if (this._paneDataSource) {
                    this._paneDataSource.weather = Number(_newValue);
                }
                this.savePlayTestDynamicProperties(player);
            }
        });
        advancedPane.addBool(this._paneDataSource, "showCoordinates", {
            titleStringId: "resourcePack.editor.Playtest.Dialog.ShowCoordinates",
            titleAltText: "Show Coordinates",
            onChange: () => {
                this.savePlayTestDynamicProperties(player);
            }
        });
        this._testButton = propertyPane.addButton(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: async () => {
                if (!this._paneDataSource) {
                    return;
                }
                const options = this.getGameOptionsFromPaneSourceData(this._paneDataSource, uiSession);
                const readyCondition = uiSession.extensionContext.playtest.getPlaytestSessionAvailability();
                const isReady = readyCondition === server_editor_namespaceObject.PlaytestSessionResult.OK;
                uiSession.log.debug(`Session status result: ${getEnumKeyByEnumValue(server_editor_namespaceObject.PlaytestSessionResult, readyCondition)}`);
                if (!isReady) {
                    if (this._testButton) {
                        this._testButton.enable = false;
                    }
                    return;
                }
                const result = await uiSession.extensionContext.playtest.beginPlaytest(options);
                uiSession.log.debug(`Ending Playtest Session with result: ${getEnumKeyByEnumValue(server_editor_namespaceObject.PlaytestSessionResult, result)}`);
            }
        }), {
            titleStringId: "resourcePack.editor.Playtest.Dialog.TestButton",
            titleAltText: "Test Level",
            visible: true,
            enable: uiSession.extensionContext.playtest.getPlaytestSessionAvailability() === server_editor_namespaceObject.PlaytestSessionResult.OK
        });
        return propertyPane;
    }
    loadPlayTestDynamicProperties(uiSession) {
        const dynamicPaneData = uiSession.extensionContext.player.getDynamicProperty(paneDataDynamicPropertyName);
        if (dynamicPaneData) {
            try {
                const paneData = JSON.parse(dynamicPaneData);
                return paneData;
            } catch (error) {
                uiSession.log.warning(`'${dynamicPaneData}' could not be parsed`);
            }
        }
        const defaultPaneData = {
            gameMode: 0,
            difficulty: 2,
            daylightCycle: true,
            weatherCycle: true,
            weather: 0,
            showCoordinates: true,
            timeOfDay: 0,
            time: "",
            overrideSpawn: true
        };
        return defaultPaneData;
    }
    savePlayTestDynamicProperties(player) {
        if (player) {
            player.setDynamicProperty(paneDataDynamicPropertyName, JSON.stringify(this._paneDataSource));
        }
    }
    parseTimeValue(timeString) {
        let returnStr = "";
        let time = Number(timeString);
        if (isNaN(time)) {
            if (timeString.indexOf(":") >= 0) {
                const timeArray = timeString.split(":");
                if (timeArray.length === 2) {
                    let hours = Number(timeArray[0]);
                    let minutes = Number(timeArray[1]);
                    if (!isNaN(hours) && !isNaN(minutes)) {
                        if (minutes > 59) {
                            minutes = 0;
                            hours += 1;
                        } else {
                            minutes = clamp(minutes, 0, 59);
                        }
                        if (hours > 23) {
                            hours = 23;
                            minutes = 59;
                        } else {
                            hours = clamp(hours, 0, 23);
                        }
                        returnStr = formatAsTimeString(hours.toString(), minutes.toString());
                    }
                }
            }
        } else {
            time = clamp(time, 0, 23999);
            returnStr = this.getTimeStringFromTime(time);
        }
        return returnStr;
    }
    getTimeFromTimeString(timeOfDay) {
        if (Number.isSafeInteger(timeOfDay)) {
            return Number(timeOfDay);
        } else {
            if (timeOfDay.indexOf(":")) {
                const timeArray = timeOfDay.split(":");
                if (timeArray.length === 2) {
                    let hours = Number(timeArray[0]) - 6;
                    if (hours < 0) {
                        hours = 24 - (6 + hours);
                    }
                    let minutes = Number(timeArray[1]);
                    hours = clamp(hours, 0, 23);
                    minutes = clamp(minutes, 0, 59);
                    return hours * mcHoursPerTick + minutes * mcMinsPerTick;
                }
            }
        }
        return 0;
    }
    getTimeStringFromTime(timeOfDay) {
        const mcHours = Math.trunc(timeOfDay / mcHoursPerTick);
        const mcMinutes = timeOfDay % mcHoursPerTick;
        const hours = (mcHours + 6) % 24;
        let minutes = Math.round(mcMinutes / mcMinsPerTick);
        minutes = clamp(minutes, 0, 59);
        return formatAsTimeString(hours.toString(), minutes.toString());
    }
    getGameOptionsFromPaneSourceData(data, uiSession) {
        const gameMode = validGameModes[data.gameMode];
        const difficulty = validDifficulties[data.difficulty];
        const timeOfDay = validTimes[data.timeOfDay].time;
        const options = {
            alwaysDay: !data.daylightCycle,
            difficulty,
            gameMode,
            disableWeather: !data.weatherCycle,
            weather: data.weather,
            showCoordinates: data.showCoordinates
        };
        if (timeOfDay === Custom) {
            options.timeOfDay = this.getTimeFromTimeString(data.time);
        } else if (timeOfDay >= 0) {
            options.timeOfDay = timeOfDay;
        } else {
            options.timeOfDay = 0;
        }
        if (data.overrideSpawn) {
            options.spawnPosition = uiSession.extensionContext.player.location;
        }
        return options;
    }
    initialize(uiSession) {
        this._extensionMenuItem = this.addMenuItem(uiSession);
        this._propertyPane = this.buildPropertyPane(uiSession);
        this.uisession = uiSession;
        let ticks = 0;
        const onTick = () => {
            if (ticks++ % Playtest_TicksRefreshRate === 0) {
                ticks = 0;
                const readyCondition = uiSession.extensionContext.playtest.getPlaytestSessionAvailability();
                const isReady = readyCondition === server_editor_namespaceObject.PlaytestSessionResult.OK;
                if (this._testButton) {
                    this._testButton.enable = isReady;
                }
            }
            this._tickRunId = server_namespaceObject.system.run(onTick);
        };
        this._tickRunId = server_namespaceObject.system.run(onTick);
    }
    teardown() {
        if (this._tickRunId) {
            server_namespaceObject.system.clearRun(this._tickRunId);
        }
    }
}

class PauseBehavior {
    constructor(uiSession) {
        this.uiSession = uiSession;
        this.pauseMenu = undefined;
        this.pauseMobsMenuItem = undefined;
        this.pauseCheckIntervalSeconds = 1;
        this.periodicPauseCheckHandle = server_namespaceObject.system.runInterval((() => {
            if (this.pauseMobsMenuItem) {
                if (server_editor_namespaceObject.editor.simulation.isPaused()) {
                    if (this.pauseMobsMenuItem.checked === false) {
                        this.pauseMobsMenuItem.checked = true;
                    }
                } else {
                    if (this.pauseMobsMenuItem.checked) {
                        this.pauseMobsMenuItem.checked = false;
                    }
                }
            }
        }), this.pauseCheckIntervalSeconds * server_namespaceObject.TicksPerSecond);
    }
    createPauseMenu(worldOptions) {
        const alternatePauseMobsAction = this.uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (this.pauseMobsMenuItem) {
                    if (server_editor_namespaceObject.editor.simulation.isPaused()) {
                        this.pauseMobsMenuItem.checked = false;
                        server_editor_namespaceObject.editor.simulation.setPaused(false);
                    } else {
                        this.pauseMobsMenuItem.checked = true;
                        server_editor_namespaceObject.editor.simulation.setPaused(true);
                    }
                }
            }
        });
        this.pauseMenu = worldOptions.addItem({
            name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.pause"),
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.pause")
        });
        this.pauseMobsMenuItem = this.pauseMenu.addItem({
            name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.pause.actors"),
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.pause.actors"),
            checked: server_editor_namespaceObject.editor.simulation.isPaused()
        }, alternatePauseMobsAction);
    }
    teardown() {
        server_namespaceObject.system.clearRun(this.periodicPauseCheckHandle);
    }
}

class Stack {
    constructor(maxStackSize) {
        this.maxStackSize = maxStackSize;
        this.internalStack = [];
        this.stackHead = -1;
    }
    isEmpty() {
        return this.internalStack.length === 0;
    }
    push(element) {
        if (this.stackHead < this.internalStack.length - 1) {
            this.internalStack.length = this.stackHead + 1;
        }
        const elementsToTrim = this.maxStackSize && this.internalStack.length >= this.maxStackSize ? this.maxStackSize - this.internalStack.length + 1 : 0;
        this.internalStack = [ ...this.internalStack.slice(elementsToTrim), element ];
        this.stackHead = this.internalStack.length - 1;
    }
    moveHeadDown() {
        if (this.isEmpty()) {
            return;
        }
        this.stackHead = clamp(--this.stackHead, 0, this.internalStack.length - 1);
    }
    moveHeadUp() {
        if (this.isEmpty()) {
            return;
        }
        this.stackHead = clamp(++this.stackHead, 0, this.internalStack.length - 1);
    }
    head() {
        if (this.isEmpty()) {
            return undefined;
        }
        return this.internalStack[this.stackHead];
    }
    length() {
        return this.internalStack.length;
    }
    clear() {
        this.internalStack = [];
        this.stackHead = -1;
    }
    forEach(callbackfn) {
        this.internalStack.forEach(callbackfn);
    }
}

const logNavigationInfoDynamicPropertyName = "navigationstack:lognavigationinfo";

class NavigationStackBehavior {
    constructor(uiSession) {
        this.uiSession = uiSession;
        this.stack = new Stack(NavigationStackBehavior.MAX_STACK_SIZE);
        this.logNavigationInfo = false;
        this.navigationLoggingMenuItem = undefined;
        this.updateInternalHandle = undefined;
        uiSession.log.debug(`Initializing ${NavigationStackBehavior.BEHAVIOR_NAME}`);
        this.loadDynamicProperties(uiSession);
        const baseMenu = uiSession.scratchStorage?.coreMenuItems?.view;
        if (baseMenu) {
            this.createMenuItemWithAction(uiSession, baseMenu);
        }
        this.bindShortcuts(uiSession);
        if (this.shouldAddAutomatedRecord(uiSession.extensionContext.player)) {
            this.addRecordToStack(uiSession);
        }
        if (!this.updateInternalHandle) {
            this.queueInitialDelayAddRecordCheck(uiSession);
        }
    }
    teardown() {
        this.uiSession.log.debug(`Shutting down ${NavigationStackBehavior.BEHAVIOR_NAME}`);
        if (this.updateInternalHandle) {
            server_namespaceObject.system.clearRun(this.updateInternalHandle);
        }
    }
    createMenuItemWithAction(uiSession, menu) {
        const toggleNavigationLoggingAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (this.navigationLoggingMenuItem) {
                    this.logNavigationInfo = !this.logNavigationInfo;
                    this.navigationLoggingMenuItem.checked = this.logNavigationInfo;
                    uiSession.extensionContext.player.setDynamicProperty(logNavigationInfoDynamicPropertyName, this.logNavigationInfo);
                    if (this.logNavigationInfo) {
                        this.logStack();
                    }
                }
            }
        });
        this.navigationLoggingMenuItem = menu.addItem({
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.view.navigationLogging"),
            name: "Navigation logging",
            checked: this.logNavigationInfo
        }, toggleNavigationLoggingAction);
    }
    bindShortcuts(uiSession) {
        const moveHeadUpAndMovePlayerToLocation = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (this.stack.isEmpty()) {
                    this.logStack();
                    return;
                }
                this.stack.moveHeadUp();
                const player = uiSession.extensionContext.player;
                const entry = this.stack.head();
                if (entry) {
                    player.teleport(entry.pos, {
                        rotation: entry.rot,
                        dimension: entry.dimension
                    });
                }
                this.logStack();
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, moveHeadUpAndMovePlayerToLocation, server_editor_namespaceObject.KeyboardKey.BRACKET_CLOSE, server_editor_namespaceObject.InputModifier.Control);
        const moveHeadDownAndMovePlayerToLocation = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (this.stack.isEmpty()) {
                    this.logStack();
                    return;
                }
                this.stack.moveHeadDown();
                const player = uiSession.extensionContext.player;
                const entry = this.stack.head();
                if (entry) {
                    player.teleport(entry.pos, {
                        rotation: entry.rot,
                        dimension: entry.dimension
                    });
                }
                this.logStack();
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, moveHeadDownAndMovePlayerToLocation, server_editor_namespaceObject.KeyboardKey.BRACKET_OPEN, server_editor_namespaceObject.InputModifier.Control);
        const addRecordToStackAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.addRecordToStack(uiSession);
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, addRecordToStackAction, server_editor_namespaceObject.KeyboardKey.KEY_K, server_editor_namespaceObject.InputModifier.Control);
    }
    shouldAddAutomatedRecord(player) {
        const headRecord = this.stack.head();
        if (headRecord) {
            if (player.dimension !== headRecord.dimension) {
                return true;
            }
            const playerVelocity = player.getVelocity();
            const playerLocation = player.location;
            const headRecordLocation = headRecord.pos;
            const distanceFromHeadRecord = server_namespaceObject.Vector.distance(headRecordLocation, playerLocation);
            const shouldAddAutomatedRecord = Math.abs(playerVelocity.x) === 0 && Math.abs(playerVelocity.y) === 0 && Math.abs(playerVelocity.z) === 0 && distanceFromHeadRecord >= NavigationStackBehavior.AUTO_ADD_MIN_DISTANCE_IN_BLOCKS;
            return shouldAddAutomatedRecord;
        } else {
            return true;
        }
    }
    addRecordToStack(uiSession) {
        const player = uiSession.extensionContext.player;
        this.stack.push({
            pos: player.location,
            rot: player.getRotation(),
            dimension: player.dimension
        });
        this.logStack();
    }
    queueInitialDelayAddRecordCheck(uiSession) {
        this.updateInternalHandle = server_namespaceObject.system.runTimeout((() => {
            if (this.shouldAddAutomatedRecord(uiSession.extensionContext.player)) {
                this.addRecordToStack(uiSession);
                this.queueInitialDelayAddRecordCheck(uiSession);
            } else {
                this.doRepeatedAutomatedRecordCheck(uiSession);
            }
        }), NavigationStackBehavior.AUTO_ADD_INTERVAL_IN_SECONDS * server_namespaceObject.TicksPerSecond);
    }
    doRepeatedAutomatedRecordCheck(uiSession) {
        this.updateInternalHandle = server_namespaceObject.system.runInterval((() => {
            if (this.shouldAddAutomatedRecord(uiSession.extensionContext.player)) {
                if (this.updateInternalHandle) {
                    server_namespaceObject.system.clearRun(this.updateInternalHandle);
                    this.updateInternalHandle = undefined;
                }
                this.addRecordToStack(uiSession);
                this.queueInitialDelayAddRecordCheck(uiSession);
            }
        }), NavigationStackBehavior.POLL_INTERVAL_IN_SECONDS * server_namespaceObject.TicksPerSecond);
    }
    loadDynamicProperties(uiSession) {
        const player = uiSession.extensionContext.player;
        const logNavigationInfo = player.getDynamicProperty(logNavigationInfoDynamicPropertyName);
        if (logNavigationInfo) {
            if (typeof logNavigationInfo === "boolean") {
                this.logNavigationInfo = logNavigationInfo;
            } else {
                server_editor_namespaceObject.editor.log.warning(`LogNavigationInfo dynamic property type expected to be 'boolean' for NavigationStack extension, instead found '${typeof logNavigationInfo}'`);
            }
        }
    }
    logStack() {
        if (!this.logNavigationInfo) {
            return;
        }
        const logProperties = {
            tags: [ "Editor", "Navigation" ]
        };
        const headRecord = this.stack.head();
        if (headRecord) {
            this.stack.forEach(((record, index) => {
                const pos = record.pos;
                const rot = record.rot;
                const dimensionID = record.dimension.id;
                const headIndicator = record === headRecord ? "*" : "";
                server_editor_namespaceObject.editor.log.info(`${index}: pos [${vector_utils_Vector3Utils.toString(pos)}], rot [${Vector2Utils.toString(rot)}], dim [${dimensionID}] ${headIndicator}`, logProperties);
            }));
        } else {
            server_editor_namespaceObject.editor.log.info("Navigation: stack is empty", logProperties);
        }
    }
}

NavigationStackBehavior.BEHAVIOR_NAME = "Navigation Stack";

NavigationStackBehavior.MAX_STACK_SIZE = 50;

NavigationStackBehavior.POLL_INTERVAL_IN_SECONDS = .5;

NavigationStackBehavior.AUTO_ADD_INTERVAL_IN_SECONDS = 5;

NavigationStackBehavior.AUTO_ADD_MIN_DISTANCE_IN_BLOCKS = 5;

var Line_SelectionCursorMode;

(function(SelectionCursorMode) {
    SelectionCursorMode[SelectionCursorMode["Freeform"] = 0] = "Freeform";
    SelectionCursorMode[SelectionCursorMode["FixedDistance"] = 1] = "FixedDistance";
    SelectionCursorMode[SelectionCursorMode["AdjacentFace"] = 2] = "AdjacentFace";
})(Line_SelectionCursorMode || (Line_SelectionCursorMode = {}));

var LineSelectionState;

(function(LineSelectionState) {
    LineSelectionState[LineSelectionState["NotSelected"] = 0] = "NotSelected";
    LineSelectionState[LineSelectionState["StartPositionSelected"] = 1] = "StartPositionSelected";
    LineSelectionState[LineSelectionState["EndPositionSelected"] = 2] = "EndPositionSelected";
    LineSelectionState[LineSelectionState["NextPositionSelected"] = 3] = "NextPositionSelected";
})(LineSelectionState || (LineSelectionState = {}));

const filteredBlocks = new Set([ "lava", "flowing_lava", "water", "flowing_water" ]);

class StateSelector {
    constructor(initialState) {
        this.state = initialState;
    }
    changeState(next, action, state, predicate) {
        if (state === undefined) {
            this.state = next;
            action();
            return true;
        }
        if (predicate === undefined) {
            throw Error("All optional arguments must be provided");
        }
        if (predicate && this.state === state) {
            action();
            this.state = next;
            return true;
        }
        return false;
    }
    getState() {
        return this.state;
    }
}

class LineBehavior {
    constructor(uiSession) {
        this.uiSession = uiSession;
        this.SELECTION_COLOR = {
            red: 0,
            green: .85,
            blue: .95,
            alpha: 1
        };
        this.SELECTION_OUTLINE_COLOR = {
            red: 0,
            green: 0,
            blue: 1,
            alpha: .5
        };
        this.fillSelection = async uiSession => {
            const player = uiSession.extensionContext.player;
            const dimension = player.dimension;
            const bounds = this.preview.selection.getBoundingBox();
            const manager = uiSession.extensionContext.transactionManager;
            manager.openTransaction("Line-tool");
            try {
                manager.trackBlockChangeArea(bounds.min, bounds.max);
            } catch (e) {
                this.uiSession.log.warning(`Unable to fill selection. ${stringFromException(e)}`);
                manager.discardOpenTransaction();
                return;
            }
            await (0, server_editor_namespaceObject.executeLargeOperation)(this.preview.selection, (blockLocation => {
                const block = dimension.getBlock(blockLocation);
                if (block) {
                    block.setType(this.props.fillSelection);
                }
            })).catch((e => {
                this.uiSession.log.error(e.message);
                manager.discardOpenTransaction();
            })).then((() => {
                this.selector.changeState(LineSelectionState.NotSelected, (() => {}));
                manager.commitOpenTransaction();
            }));
        };
        this.line = {
            start: vector_utils_Vector3Utils.zero,
            end: vector_utils_Vector3Utils.zero,
            surfaceContour: false
        };
        this.prevLine = {
            start: vector_utils_Vector3Utils.zero,
            end: vector_utils_Vector3Utils.zero,
            surfaceContour: false
        };
        this.selector = new StateSelector(LineSelectionState.NotSelected);
        this.props = {
            selectionMode: Line_SelectionCursorMode.Freeform,
            width: 1,
            height: 1,
            lineMode: BlockLineType.Direct,
            fillSelection: MinecraftBlockTypes.Grass,
            surfaceContour: false,
            prevSurfaceContour: false
        };
        this.cursorProperties = uiSession.extensionContext.cursor.getProperties();
        this.cursorProperties.outlineColor = this.SELECTION_COLOR;
        this.cursorProperties.controlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
        this.cursorProperties.targetMode = server_editor_namespaceObject.CursorTargetMode.Block;
        this.cursorProperties.visible = true;
        this.tool = this.addTool(uiSession);
        this.pane = this.addLineToolPane(uiSession, this.tool);
        this.pane.hide();
        this.tool.bindPropertyPane(this.pane);
        this.registerMouseAction(uiSession);
        this.registerMouseWheelAction(uiSession);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.clearState();
            }
        }), server_editor_namespaceObject.KeyboardKey.KEY_D, server_editor_namespaceObject.InputModifier.Control);
        this.tool.registerKeyBinding(uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.finalizeFillSelection(uiSession);
                this.clearState();
            }
        }), server_editor_namespaceObject.KeyboardKey.ENTER);
        uiSession.extensionContext.afterEvents.modeChange.subscribe((event => {
            if (event.mode === server_editor_namespaceObject.EditorMode.Crosshair) {
                if (this.preview.selection && !this.preview.selection.isEmpty) {
                    this.clearState();
                }
            }
        }));
        this.preview = {
            selection: uiSession.extensionContext.selectionManager.create()
        };
        this.preview.selection.setOutlineColor(this.SELECTION_COLOR);
        this.preview.selection.setFillColor(this.SELECTION_OUTLINE_COLOR);
    }
    teardown() {
        this.tool.unregisterInputBindings();
    }
    getAllowedBlocks() {
        const allowedBlocks = (0, server_editor_namespaceObject.getBlockPickerDefaultAllowBlockList)().reduce(((allowList, blockType) => {
            if (!filteredBlocks.has(blockType)) {
                allowList.push(blockType);
            }
            return allowList;
        }), []);
        return allowedBlocks;
    }
    finalizeFillSelection(uiSession) {
        this.fillSelection(uiSession).catch((e => uiSession.log.error(e.message)));
        this.clearState();
        this.selector.changeState(LineSelectionState.NotSelected, (() => {}));
    }
    addTool(uiSession) {
        const tool = uiSession.toolRail.addTool({
            displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.title"),
            displayAltText: "Line",
            icon: "pack://textures/editor/Line.png?filtering=point",
            tooltipStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.tooltip"),
            tooltipAltText: "Line tool creates lines of blocks"
        });
        tool.onModalToolActivation.subscribe((eventData => {
            if (eventData.isActiveTool) {
                uiSession.extensionContext.cursor.setProperties(this.cursorProperties);
            }
        }));
        return tool;
    }
    addLineToolPane(uiSession, tool) {
        const pane = uiSession.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.title"),
            titleAltText: "Line",
            width: 40
        });
        this.props = (0, server_editor_namespaceObject.bindDataSource)(pane, this.props);
        pane.addBlockPicker(this.props, "fillSelection", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.dropdown.fill.title"),
            titleAltText: "Fill Selection",
            allowedBlocks: this.getAllowedBlocks()
        });
        pane.addNumber(this.props, "width", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.width.title"),
            titleAltText: "Width",
            min: 1,
            max: 1,
            enable: false
        });
        pane.addNumber(this.props, "height", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.height.title"),
            titleAltText: "Height",
            min: 1,
            max: 1,
            enable: false
        });
        pane.addDropdown(this.props, "selectionMode", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.selectionMode"),
            titleAltText: "Selection",
            dropdownItems: [ {
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.selectionMode.freeForm"),
                displayAltText: "Freeform",
                value: Line_SelectionCursorMode.Freeform
            }, {
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.selectionMode.fixedDistance"),
                displayAltText: "Fixed Distance",
                value: Line_SelectionCursorMode.FixedDistance
            }, {
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.selectionMode.adjacent"),
                displayAltText: "Adjacent Face",
                value: Line_SelectionCursorMode.AdjacentFace
            } ],
            onChange: (_obj, _property, oldValue, newValue) => {
                const oldVal = oldValue;
                const newVal = newValue;
                let cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                let cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                if (oldVal !== newVal) {
                    switch (newVal) {
                      case Line_SelectionCursorMode.Freeform:
                        cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                        cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                        break;

                      case Line_SelectionCursorMode.FixedDistance:
                        cursorControlMode = server_editor_namespaceObject.CursorControlMode.Fixed;
                        cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Block;
                        break;

                      case Line_SelectionCursorMode.AdjacentFace:
                        cursorControlMode = server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse;
                        cursorTargetMode = server_editor_namespaceObject.CursorTargetMode.Face;
                        break;

                      default:
                        uiSession.log.error(`Unknown value from selection mode drop-down`);
                        return;
                    }
                    this.cursorProperties = uiSession.extensionContext.cursor.getProperties();
                    this.cursorProperties.controlMode = cursorControlMode;
                    this.cursorProperties.targetMode = cursorTargetMode;
                    uiSession.extensionContext.cursor.setProperties(this.cursorProperties);
                    if (newVal === Line_SelectionCursorMode.FixedDistance) {
                        this.props.prevSurfaceContour = this.props.surfaceContour;
                        this.props.surfaceContour = false;
                        this.surfaceContourBoolItem.enable = false;
                    } else {
                        this.props.surfaceContour = this.props.prevSurfaceContour;
                        this.surfaceContourBoolItem.enable = true;
                    }
                }
            }
        });
        pane.addDropdown(this.props, "lineMode", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.algorithm.title"),
            titleAltText: "Algorithm",
            dropdownItems: [ {
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.algorithm.Direct"),
                displayAltText: "Direct",
                value: BlockLineType.Direct
            }, {
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.algorithm.Staggered"),
                displayAltText: "Staggered(Fences)",
                value: BlockLineType.Staggered
            } ]
        });
        this.surfaceContourBoolItem = pane.addBool(this.props, "surfaceContour", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.surfaceContour"),
            titleAltText: "Surface Contour",
            onChange: (_obj, _property, _oldValue, _newValue) => {
                const state = this.selector.getState();
                if (state === LineSelectionState.EndPositionSelected || state === LineSelectionState.NextPositionSelected) {
                    this.discardLineFromSelection();
                    this.addLineToSelection(this.uiSession);
                }
            }
        });
        const executeButtonFillAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                this.finalizeFillSelection(uiSession);
            }
        });
        pane.addButton(executeButtonFillAction, {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("resourcePack.editor.toolRail.line.pane.fillAction"),
            titleAltText: "Fill Selection"
        });
        tool.bindPropertyPane(pane);
        return pane;
    }
    registerMouseAction(uiSession) {
        const executeAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
            onExecute: (mouseRay, mouseProps) => {
                if (mouseProps.mouseAction === server_editor_namespaceObject.MouseActionType.LeftButton && mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonUp && uiSession.toolRail.selectedOptionId === this.tool.id && mouseRay?.cursorBlockLocation) {
                    const targetLocation = mouseRay.cursorBlockLocation;
                    this.selectNextState(uiSession, targetLocation, mouseProps.modifiers);
                }
            }
        });
        this.tool.registerMouseButtonBinding(executeAction);
    }
    registerMouseWheelAction(uiSession) {
        const mouseWheelAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
            onExecute: (_, mouseProps) => {
                if (this.cursorProperties.controlMode !== server_editor_namespaceObject.CursorControlMode.Fixed) {
                    return;
                }
                if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelOut) {
                    uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.forward);
                } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelIn) {
                    uiSession.extensionContext.cursor.moveBy(vector_utils_Vector3Utils.back);
                }
            }
        });
        this.tool.registerMouseWheelBinding(mouseWheelAction);
    }
    getSurfaceSolidBlockPos(col, yStart, yMin, dimension, cursorTargetMode) {
        const offset = cursorTargetMode === server_editor_namespaceObject.CursorTargetMode.Block ? 0 : 1;
        for (let i = yStart; i > yMin; i--) {
            const block = dimension?.getBlock({
                x: col.x,
                y: i,
                z: col.z
            });
            if (block) {
                if (block.isSolid && block.typeId !== MinecraftBlockTypes.Leaves) {
                    return {
                        x: col.x,
                        y: i + offset,
                        z: col.z
                    };
                }
            }
        }
        return undefined;
    }
    addPlotToSelection(selection, blockIter) {
        this.line.blocks = [];
        for (const point of blockIter) {
            selection.pushVolume({
                action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                volume: {
                    from: point,
                    to: point
                }
            });
            this.line.blocks.push(point);
        }
    }
    addSelectionContour(uiSession, line, selection, lineMode, cursorTargetMode) {
        const player = uiSession.extensionContext?.player;
        const dimension = player?.dimension;
        const yMax = dimension.heightRange.max;
        if (!dimension) {
            uiSession.log.error("Player dimension does not exist");
            return;
        }
        this.line.blocks = [];
        const blockLine = new BlockLine(line.start, line.end, {
            width: this.props.width,
            height: this.props.height,
            mode: lineMode
        });
        for (const point of blockLine.getBlockLineLocationIterator()) {
            const projPoint = this.getSurfaceSolidBlockPos(point, yMax, dimension.heightRange.min, dimension, cursorTargetMode);
            if (projPoint) {
                selection.pushVolume({
                    action: server_namespaceObject.CompoundBlockVolumeAction.Add,
                    volume: {
                        from: projPoint,
                        to: projPoint
                    }
                });
                this.line.blocks.push(projPoint);
            }
        }
    }
    addLineToSelection(uiSession) {
        if (this.props.surfaceContour) {
            this.addSelectionContour(uiSession, this.line, this.preview.selection, this.props.lineMode, this.cursorProperties.targetMode ? this.cursorProperties.targetMode : server_editor_namespaceObject.CursorTargetMode.Block);
        } else {
            const blockLine = new BlockLine(this.line.start, this.line.end, {
                mode: this.props.lineMode
            });
            this.addPlotToSelection(this.preview.selection, blockLine.getBlockLineLocationIterator());
        }
    }
    pushSingleBlockVolume(position) {
        this.preview.selection.pushVolume({
            action: server_namespaceObject.CompoundBlockVolumeAction.Add,
            volume: {
                from: position,
                to: position
            }
        });
    }
    discardLineFromSelection() {
        if (this.line.blocks) {
            for (const _ of this.line.blocks) {
                this.preview.selection.popVolume();
            }
        }
        this.line.blocks = [];
    }
    clearState() {
        this.preview.selection.clear();
        this.selector.changeState(LineSelectionState.NotSelected, (() => {}));
    }
    selectNextState(uiSession, targetLocation, mouseModifiers) {
        const noModifiers = !mouseModifiers.alt && !mouseModifiers.ctrl && !mouseModifiers.shift;
        if (this.selector.changeState(LineSelectionState.StartPositionSelected, (() => {
            this.preview.selection.visible = true;
            this.prevLine.start = this.line.start;
            this.prevLine.end = this.line.end;
            this.line.start = targetLocation;
            this.line.end = targetLocation;
            this.pushSingleBlockVolume(targetLocation);
        }), LineSelectionState.NotSelected, noModifiers || mouseModifiers.ctrl || mouseModifiers.shift)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.EndPositionSelected, (() => {
            this.preview.selection.popVolume();
            this.prevLine.end = this.line.end;
            this.line.end = targetLocation;
            this.addLineToSelection(uiSession);
        }), LineSelectionState.StartPositionSelected, noModifiers || mouseModifiers.ctrl || mouseModifiers.shift)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.NextPositionSelected, (() => {
            this.prevLine.start = this.line.start;
            this.prevLine.end = this.line.end;
            this.line.start = this.line.end;
            this.line.end = targetLocation;
            this.addLineToSelection(uiSession);
        }), LineSelectionState.EndPositionSelected, mouseModifiers.shift)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.StartPositionSelected, (() => {
            this.prevLine.start = this.line.start;
            this.line.start = targetLocation;
            this.pushSingleBlockVolume(targetLocation);
        }), LineSelectionState.EndPositionSelected, mouseModifiers.ctrl)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.NextPositionSelected, (() => {
            this.prevLine.start = this.line.start;
            this.prevLine.end = this.line.end;
            this.line.start = this.line.end;
            this.line.end = targetLocation;
            this.addLineToSelection(uiSession);
        }), LineSelectionState.NextPositionSelected, mouseModifiers.shift)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.StartPositionSelected, (() => {
            this.prevLine.start = this.line.start;
            this.prevLine.end = this.line.end;
            this.line.start = targetLocation;
            this.line.end = targetLocation;
            this.pushSingleBlockVolume(targetLocation);
        }), LineSelectionState.NextPositionSelected, mouseModifiers.ctrl)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.EndPositionSelected, (() => {
            this.line.start = this.prevLine.start;
            this.line.end = this.prevLine.end;
            this.discardLineFromSelection();
        }), LineSelectionState.NextPositionSelected, noModifiers)) {
            return;
        }
        if (this.selector.changeState(LineSelectionState.NotSelected, (() => {
            this.line.start = this.prevLine.start;
            this.line.end = this.prevLine.end;
            this.discardLineFromSelection();
        }), LineSelectionState.EndPositionSelected, noModifiers)) {
            return;
        }
    }
}

LineBehavior.BEHAVIOR_NAME = "Line";

function createCoreUI(uiSession) {
    if (!uiSession.scratchStorage) {
        throw new Error("Core UI initialization order incorrect");
    }
    const player = uiSession.extensionContext.player;
    const exportAsWorldAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            player.runCommandAsync("project export world").catch((_ => uiSession.log.error("Unable to export project as world due to unknown error.")));
        }
    });
    const showUISettingsAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.updateUISettingsPanelVisibility(true);
        }
    });
    const pauseScreenAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.navigateToPauseScreen();
        }
    });
    const showLoggingPaneAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.updateLogPanelVisibility(true);
        }
    });
    const overworldAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            const rotation = player.getRotation();
            player.teleport(player.location, {
                dimension: server_namespaceObject.world.getDimension("overworld"),
                rotation,
                keepVelocity: false
            });
        }
    });
    const netherAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            const rotation = player.getRotation();
            player.teleport(player.location, {
                dimension: server_namespaceObject.world.getDimension("nether"),
                rotation,
                keepVelocity: false
            });
        }
    });
    const endAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.extensionContext.transactionManager.openTransaction("Transaction dimension change");
            const rotation = player.getRotation();
            player.teleport(player.location, {
                dimension: server_namespaceObject.world.getDimension("the_end"),
                rotation,
                keepVelocity: false
            });
            uiSession.extensionContext.transactionManager.commitOpenTransaction();
        }
    });
    const turnOnDaylightCycleAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            server_namespaceObject.world.getDimension("overworld").runCommandAsync("alwaysday false").then((() => uiSession.log.info("Daylight cycle on"))).catch((_ => uiSession.log.error("Unable to turn on daylight cycle due to unknown error.")));
        }
    });
    const turnOffDaylightCycleAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            server_namespaceObject.world.getDimension("overworld").runCommandAsync("alwaysday true").then((() => uiSession.log.info("Daylight cycle off"))).catch((_ => uiSession.log.error("Unable to turn off daylight cycle due to unknown error.")));
        }
    });
    const quickStartAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.updateWelcomePanelVisibility(true);
        }
    });
    const documentationAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.navigateToDocumentation();
        }
    });
    const feedbackAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            uiSession.builtInUIManager.navigateToFeedback();
        }
    });
    let cursorProjectMenuItem = undefined;
    const cursorProjectAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            if (cursorProjectMenuItem) {
                const props = uiSession.extensionContext.cursor.getProperties();
                props.projectThroughLiquid = !props.projectThroughLiquid;
                cursorProjectMenuItem.checked = props.projectThroughLiquid;
                uiSession.extensionContext.cursor.setProperties(props);
            }
        }
    });
    const initialCursorProjection = uiSession.extensionContext.cursor.getProperties().projectThroughLiquid;
    uiSession.extensionContext.afterEvents.cursorPropertyChange.subscribe((event => {
        if (event.properties.projectThroughLiquid !== undefined && cursorProjectMenuItem) {
            cursorProjectMenuItem.checked = event.properties.projectThroughLiquid;
        }
    }));
    uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, pauseScreenAction, server_editor_namespaceObject.KeyboardKey.KEY_Q, server_editor_namespaceObject.InputModifier.Control);
    uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, showLoggingPaneAction, server_editor_namespaceObject.KeyboardKey.KEY_H, server_editor_namespaceObject.InputModifier.Control);
    const help = uiSession.createMenu({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help")
    });
    const worldOptions = uiSession.createMenu({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions")
    });
    const view = uiSession.createMenu({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.view"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.view")
    });
    const edit = uiSession.createMenu({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.edit")
    });
    const file = uiSession.createMenu({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file")
    });
    const exportMenu = file.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.export"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.export")
    });
    exportMenu.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.export.world"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.export.world")
    }, exportAsWorldAction);
    file.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.settings"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.settings")
    }, showUISettingsAction);
    const cursorMenu = file.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.cursor"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.cursor")
    });
    cursorProjectMenuItem = cursorMenu.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.cursor.projectThroughLiquid"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.cursor.projectThroughLiquid"),
        checked: initialCursorProjection
    }, cursorProjectAction);
    file.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.pauseScreen"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.file.pauseScreen")
    }, pauseScreenAction);
    view.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.view.logging"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.view.logging")
    }, showLoggingPaneAction);
    if (!uiSession.scratchStorage.pauseBehavior) {
        throw new Error("pauseBehavior undefined - Core UI initialization order incorrect");
    }
    uiSession.scratchStorage.pauseBehavior.createPauseMenu(worldOptions);
    const changeDimension = worldOptions.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension")
    });
    changeDimension.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.overworld"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.overworld")
    }, overworldAction);
    changeDimension.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.nether"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.nether")
    }, netherAction);
    changeDimension.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.end"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.changeDimension.end")
    }, endAction);
    const daylightCycle = worldOptions.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle")
    });
    daylightCycle.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle.turnOnDaylightCycle"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle.turnOnDaylightCycle")
    }, turnOnDaylightCycleAction);
    daylightCycle.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle.turnOffDaylightCycle"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.worldOptions.daylightCycle.turnOffDaylightCycle")
    }, turnOffDaylightCycleAction);
    help.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.quickStart"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.quickStart")
    }, quickStartAction);
    help.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.documentation"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.documentation")
    }, documentationAction);
    help.addItem({
        name: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.feedback"),
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("menuBar.help.feedback")
    }, feedbackAction);
    file.show();
    edit.show();
    worldOptions.show();
    help.show();
    return {
        file,
        edit,
        view,
        worldOptions,
        help
    };
}

function registerCoreEditorExtension() {
    (0, server_editor_namespaceObject.registerEditorExtension)("CoreEditor", (uiSession => {
        uiSession.log.debug(`Initializing ${uiSession.extensionContext.extensionInfo.name} extension`);
        uiSession.scratchStorage = {};
        uiSession.toolRail.show();
        uiSession.scratchStorage.pauseBehavior = new PauseBehavior(uiSession);
        uiSession.scratchStorage.coreMenuItems = createCoreUI(uiSession);
        const transactions = new UndoRedoBehavior(uiSession, uiSession.scratchStorage.coreMenuItems);
        const selectBehavior = new SelectionBehavior(uiSession);
        uiSession.scratchStorage.clipboard = new ClipboardBehavior(uiSession, uiSession.scratchStorage.coreMenuItems, selectBehavior.toolId);
        uiSession.scratchStorage.deleteBehavior = new DeleteBehavior(uiSession, uiSession.scratchStorage.coreMenuItems);
        uiSession.scratchStorage.playerCountBehavior = new PlayerCountBehavior(uiSession);
        const playtest = new PlaytestBehavior(uiSession);
        const navigationStack = new NavigationStackBehavior(uiSession);
        const line = new LineBehavior(uiSession);
        uiSession.log.debug("CoreEditor Extension Initialized\n");
        return [ selectBehavior, uiSession.scratchStorage.clipboard, uiSession.scratchStorage.deleteBehavior, uiSession.scratchStorage.playerCountBehavior, uiSession.scratchStorage.pauseBehavior, transactions, playtest, navigationStack, line ];
    }), (uiSession => {
        uiSession.log.debug(`Shutting down ${uiSession.extensionContext.extensionInfo.name} Extension\n`);
    }), {
        description: "Minecraft Core Editor Built-in Extensions",
        notes: "https://github.com/Mojang/minecraft-editor"
    });
}

function addCubeBrushSettingsPane(uiSession, tool) {
    const pane = uiSession.createPropertyPane({
        titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushSettings.pane"),
        titleAltText: "Brush"
    });
    const settings = (0, server_editor_namespaceObject.bindDataSource)(pane, {
        size: 3,
        hollow: false,
        face: false,
        block: MinecraftBlockTypes.Stone
    });
    const onExecuteBrush = () => {
        if (uiSession.scratchStorage === undefined) {
            uiSession.log.error("Brush storage was not initialized.");
            return;
        }
        const previewSelection = uiSession.scratchStorage.previewSelection;
        const player = uiSession.extensionContext.player;
        const targetBlock = player.dimension.getBlock(uiSession.extensionContext.cursor.getPosition());
        if (targetBlock === undefined) {
            return;
        }
        const rotationY = uiSession.extensionContext.player.getRotation().y;
        const directionRight = getRotationCorrectedDirectionVector(rotationY, Direction.Right);
        const directionForward = getRotationCorrectedDirectionVector(rotationY, Direction.Back);
        const relativeDirection = server_namespaceObject.Vector.add(server_namespaceObject.Vector.add(directionRight, directionForward), server_namespaceObject.Vector.up);
        const sizeHalf = Math.floor(settings.size / 2);
        let fromOffset = server_namespaceObject.Vector.multiply(relativeDirection, -sizeHalf);
        const toOffset = server_namespaceObject.Vector.multiply(relativeDirection, settings.size - 1);
        const isEven = settings.size % 2 === 0;
        if (isEven) {
            fromOffset = server_namespaceObject.Vector.add(fromOffset, server_namespaceObject.Vector.up);
        }
        const location = targetBlock.location;
        const from = {
            x: location.x + fromOffset.x,
            y: location.y + fromOffset.y,
            z: location.z + fromOffset.z
        };
        const to = {
            x: from.x + toOffset.x,
            y: from.y + toOffset.y,
            z: from.z + toOffset.z
        };
        const blockVolume = {
            from,
            to
        };
        const bounds = server_namespaceObject.BlockVolumeUtils.getBoundingBox(blockVolume);
        if (uiSession.scratchStorage.lastVolumePlaced) {
            if (server_namespaceObject.BoundingBoxUtils.equals(uiSession.scratchStorage.lastVolumePlaced, bounds)) {
                return;
            }
        }
        previewSelection.pushVolume({
            action: server_namespaceObject.CompoundBlockVolumeAction.Add,
            volume: blockVolume
        });
        uiSession.scratchStorage.lastVolumePlaced = bounds;
        const boundSize = server_namespaceObject.BoundingBoxUtils.getSpan(bounds);
        if (settings.hollow && boundSize.x > 2 && boundSize.y > 2 && boundSize.z > 2) {
            const subtractBlockVolume = {
                from: {
                    x: from.x + relativeDirection.x,
                    y: from.y + 1,
                    z: from.z + relativeDirection.z
                },
                to: {
                    x: to.x - relativeDirection.x,
                    y: to.y - 1,
                    z: to.z - relativeDirection.z
                }
            };
            previewSelection.pushVolume({
                action: server_namespaceObject.CompoundBlockVolumeAction.Subtract,
                volume: subtractBlockVolume
            });
        }
    };
    pane.addNumber(settings, "size", {
        titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushSettings.size"),
        titleAltText: "Brush Size",
        min: 1,
        max: 16,
        showSlider: true
    });
    pane.addBool(settings, "hollow", {
        titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushSettings.hollow"),
        titleAltText: "Hollow"
    });
    pane.addBool(settings, "face", {
        titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushSettings.face"),
        titleAltText: "Face Mode",
        onChange: (_obj, _property, _oldValue, _newValue) => {
            if (uiSession.scratchStorage === undefined) {
                uiSession.log.error("Brush storage was not initialized.");
                return;
            }
            uiSession.scratchStorage.toolCursorProperties.targetMode = settings.face ? server_editor_namespaceObject.CursorTargetMode.Face : server_editor_namespaceObject.CursorTargetMode.Block;
            uiSession.extensionContext.cursor.setProperties(uiSession.scratchStorage.toolCursorProperties);
        }
    });
    pane.addBlockPicker(settings, "block", {
        titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushSettings.block"),
        titleAltText: "Block Type"
    });
    tool.bindPropertyPane(pane);
    const toggleHollowShortcut = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
        onExecute: () => {
            settings.hollow = !settings.hollow;
        }
    });
    tool.registerKeyBinding(toggleHollowShortcut, server_editor_namespaceObject.KeyboardKey.KEY_H, server_editor_namespaceObject.InputModifier.Control);
    const executeExampleMouseButtonAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
        onExecute: async (mouseRay, mouseProps) => {
            if (uiSession.scratchStorage === undefined) {
                uiSession.log.error("Brush storage was not initialized.");
                return;
            }
            if (mouseProps.mouseAction === server_editor_namespaceObject.MouseActionType.LeftButton) {
                if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonDown) {
                    uiSession.extensionContext.transactionManager.openTransaction("Transaction group cube brush");
                    uiSession.scratchStorage.previewSelection.clear();
                    onExecuteBrush();
                } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.ButtonUp) {
                    try {
                        uiSession.extensionContext.transactionManager.trackBlockChangeSelection(uiSession.scratchStorage.previewSelection);
                    } catch (e) {
                        uiSession.log.warning(`Unable to execute brush. ${stringFromException(e)}`);
                        uiSession.extensionContext.transactionManager.discardOpenTransaction();
                        uiSession.scratchStorage?.clearState();
                        return;
                    }
                    const player = uiSession.extensionContext.player;
                    const dimension = player.dimension;
                    await (0, server_editor_namespaceObject.executeLargeOperation)(uiSession.scratchStorage.previewSelection, (blockLocation => {
                        const block = dimension.getBlock(blockLocation);
                        if (block) {
                            block.isWaterlogged = false;
                            block.setType(settings.block);
                        }
                    })).catch((e => {
                        uiSession.log.error(e.message);
                        uiSession.extensionContext.transactionManager.discardOpenTransaction();
                        uiSession.scratchStorage?.clearState();
                    })).then((() => {
                        uiSession.extensionContext.transactionManager.commitOpenTransaction();
                        uiSession.scratchStorage?.clearState();
                    }));
                }
            }
        }
    });
    tool.registerMouseButtonBinding(executeExampleMouseButtonAction);
    const executeBrushRayAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
        onExecute: (mouseRay, mouseProps) => {
            if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.DragStart) {} else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.Drag) {
                onExecuteBrush();
            } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.DragEnd) {}
        }
    });
    tool.registerMouseDragBinding(executeBrushRayAction);
    const executeBrushSizeAction = uiSession.actionManager.createAction({
        actionType: server_editor_namespaceObject.ActionTypes.MouseRayCastAction,
        onExecute: (mouseRay, mouseProps) => {
            if (mouseProps.mouseAction === server_editor_namespaceObject.MouseActionType.Wheel) {
                if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelOut) {
                    if (settings.size < 16) {
                        settings.size++;
                    }
                } else if (mouseProps.inputType === server_editor_namespaceObject.MouseInputType.WheelIn) {
                    if (settings.size > 1) {
                        settings.size--;
                    }
                }
            }
        }
    });
    tool.registerMouseWheelBinding(executeBrushSizeAction);
    return settings;
}

function addCubeBrushTool(uiSession, storage) {
    const tool = uiSession.toolRail.addTool({
        displayAltText: "Brush (CTRL + B)",
        displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushTool.title"),
        icon: "pack://textures/editor/Cube.png?filtering=point",
        tooltipAltText: "Left mouse click or drag-to-paint",
        tooltipStringId: (0, server_editor_namespaceObject.getLocalizationId)("toolRail.cubeBrushTool.description")
    });
    tool.onModalToolActivation.subscribe((eventData => {
        if (eventData.isActiveTool) {
            uiSession.extensionContext.cursor.setProperties(storage.toolCursorProperties);
        }
        uiSession.scratchStorage?.previewSelection?.clear();
    }));
    return tool;
}

function registerCubeBrushExtension() {
    (0, server_editor_namespaceObject.registerEditorExtension)("CubeBrush", (uiSession => {
        uiSession.log.debug(`Initializing ${uiSession.extensionContext.extensionInfo.name} extension`);
        const cursorProperties = {
            outlineColor: {
                red: 1,
                green: 1,
                blue: 0,
                alpha: 1
            },
            controlMode: server_editor_namespaceObject.CursorControlMode.KeyboardAndMouse,
            targetMode: server_editor_namespaceObject.CursorTargetMode.Block,
            visible: true,
            fixedModeDistance: 5
        };
        const previewSelection = uiSession.extensionContext.selectionManager.create();
        previewSelection.visible = true;
        previewSelection.setOutlineColor({
            red: 0,
            green: .5,
            blue: .5,
            alpha: .2
        });
        previewSelection.setFillColor({
            red: 0,
            green: 0,
            blue: .5,
            alpha: .1
        });
        const storage = {
            toolCursorProperties: cursorProperties,
            previewSelection,
            clearState: () => {
                storage.previewSelection.clear();
                storage.lastVolumePlaced = undefined;
            }
        };
        uiSession.scratchStorage = storage;
        const cubeBrushTool = addCubeBrushTool(uiSession, storage);
        addCubeBrushSettingsPane(uiSession, cubeBrushTool);
        const brushToggleAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                uiSession.toolRail.setSelectedOptionId(cubeBrushTool.id, true);
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.GlobalToolMode, brushToggleAction, server_editor_namespaceObject.KeyboardKey.KEY_B, server_editor_namespaceObject.InputModifier.Control);
        uiSession.extensionContext.afterEvents.modeChange.subscribe((event => {
            if (event.mode === server_editor_namespaceObject.EditorMode.Crosshair) {
                if (uiSession.scratchStorage?.previewSelection && !uiSession.scratchStorage?.previewSelection.isEmpty) {
                    uiSession.extensionContext.transactionManager.discardOpenTransaction();
                    uiSession.scratchStorage.clearState();
                }
            }
        }));
        return [];
    }), (uiSession => {
        uiSession.log.debug(`Shutting down ${uiSession.extensionContext.extensionInfo.name} extension`);
    }), {
        description: "Activate cube brush from tool rail."
    });
}

function flyCameraToTarget(uiSession, viewTarget, radius) {
    if (uiSession.scratchStorage) {
        const player = uiSession.extensionContext.player;
        const eyeHeight = server_namespaceObject.Vector.subtract(player.getHeadLocation(), player.location);
        const viewVector = player.getViewDirection();
        radius = Math.max(radius, 1);
        const halfFOV = uiSession.scratchStorage.playerFOV / 2;
        const distanceAway = radius / Math.tan(halfFOV * Math.PI / 180);
        const destCameraLocation = server_namespaceObject.Vector.subtract(viewTarget, server_namespaceObject.Vector.multiply(viewVector, distanceAway));
        const destPlayerLocation = server_namespaceObject.Vector.subtract(destCameraLocation, eyeHeight);
        const easeTimeInSeconds = uiSession.scratchStorage.easeTimeInSeconds;
        player.camera.setCamera("minecraft:free", {
            location: {
                x: destCameraLocation.x,
                y: destCameraLocation.y,
                z: destCameraLocation.z
            },
            rotation: {
                x: player.getRotation().x,
                y: player.getRotation().y
            },
            easeOptions: {
                easeTime: easeTimeInSeconds,
                easeType: server_namespaceObject.EasingType.InOutQuad
            }
        });
        uiSession.scratchStorage.latestRunId = server_namespaceObject.system.runTimeout((() => {
            player.teleport(destPlayerLocation);
            player.camera.clear();
            if (uiSession.scratchStorage) {
                uiSession.scratchStorage.latestRunId = undefined;
            }
        }), easeTimeInSeconds * server_namespaceObject.TicksPerSecond);
    }
}

function registerGrappleExtension() {
    (0, server_editor_namespaceObject.registerEditorExtension)("Grapple", (uiSession => {
        uiSession.log.debug(`Initializing ${uiSession.extensionContext.extensionInfo.name} extension`);
        uiSession.scratchStorage = {
            latestRunId: undefined,
            easeTimeInSeconds: 1.5,
            playerFOV: 66
        };
        const grappleAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (uiSession.scratchStorage?.latestRunId) {
                    return;
                }
                let destBlockLoc = undefined;
                const cursor = uiSession.extensionContext.cursor;
                if (cursor.isVisible && cursor.getProperties().controlMode !== server_editor_namespaceObject.CursorControlMode.Fixed) {
                    destBlockLoc = cursor.getPosition();
                } else {
                    const result = uiSession.extensionContext.player.getBlockFromViewDirection();
                    if (!result) {
                        uiSession.log.warning("No Block Found.  Aborting Grapple");
                        return;
                    }
                    destBlockLoc = result?.block.location;
                }
                const viewTarget = server_namespaceObject.Vector.add(destBlockLoc, {
                    x: .5,
                    y: .5,
                    z: .5
                });
                flyCameraToTarget(uiSession, viewTarget, 2);
            }
        });
        const frameAction = uiSession.actionManager.createAction({
            actionType: server_editor_namespaceObject.ActionTypes.NoArgsAction,
            onExecute: () => {
                if (uiSession.scratchStorage?.latestRunId) {
                    return;
                }
                const selection = uiSession.extensionContext.selectionManager.selection;
                if (selection.isEmpty) {
                    return;
                }
                const bounds = selection.getBoundingBox();
                bounds.max = server_namespaceObject.Vector.add(bounds.max, {
                    x: 1,
                    y: 1,
                    z: 1
                });
                const halfSize = server_namespaceObject.Vector.multiply(server_namespaceObject.Vector.subtract(bounds.max, bounds.min), .5);
                const viewTarget = server_namespaceObject.Vector.add(bounds.min, halfSize);
                const radius = Math.sqrt(halfSize.x * halfSize.x + halfSize.y * halfSize.y + halfSize.z * halfSize.z);
                flyCameraToTarget(uiSession, viewTarget, radius);
            }
        });
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.Viewport, grappleAction, server_editor_namespaceObject.KeyboardKey.KEY_G, server_editor_namespaceObject.InputModifier.None);
        uiSession.inputManager.registerKeyBinding(server_editor_namespaceObject.EditorInputContext.Viewport, frameAction, server_editor_namespaceObject.KeyboardKey.KEY_F, server_editor_namespaceObject.InputModifier.None);
        return [];
    }), (uiSession => {
        uiSession.log.debug(`Shutting down ${uiSession.extensionContext.extensionInfo.name} extension`);
        if (uiSession.scratchStorage?.latestRunId) {
            server_namespaceObject.system.clearRun(uiSession.scratchStorage.latestRunId);
            uiSession.scratchStorage.latestRunId = undefined;
        }
    }));
}

const DimensionIds = {
    "minecraft:overworld": 0,
    "minecraft:nether": -1,
    "minecraft:the_end": 1
};

const PlayerPosition_TicksRefreshRate = 5;

function getDimensionName(dimensionId) {
    for (const key in DimensionIds) {
        const value = DimensionIds[key];
        if (value === dimensionId) {
            return key;
        }
    }
    return "minecraft:overworld";
}

function movePlayer(location, extensionContext, dimensionId = Number.MIN_SAFE_INTEGER) {
    const player = extensionContext.player;
    const targetDimension = dimensionId !== Number.MIN_SAFE_INTEGER ? server_namespaceObject.world.getDimension(getDimensionName(dimensionId)) : player.dimension;
    const rotation = player.getRotation();
    player.teleport(location, {
        dimension: targetDimension,
        rotation,
        keepVelocity: false
    });
}

const updateStatusBarText = (statusBarItem, location) => {
    statusBarItem.text = `Pos (${Math.floor(location.x)},${Math.floor(location.y)},${Math.floor(location.z)})`;
};

function registerPlayerPositionExtension() {
    (0, server_editor_namespaceObject.registerEditorExtension)("PlayerPosition", (uiSession => {
        uiSession.log.debug(`Initializing ${uiSession.extensionContext.extensionInfo.name} extension`);
        uiSession.scratchStorage = {
            isDisposed: false,
            latestRunId: -1
        };
        const player = uiSession.extensionContext.player;
        let currentLocation = player.location;
        const pane = uiSession.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.pane"),
            titleAltText: "Player Settings"
        });
        const playerPosition = (0, server_editor_namespaceObject.bindDataSource)(pane, {
            position: {
                x: 0,
                y: 0,
                z: 0
            },
            dimensionId: DimensionIds[player.dimension.id]
        });
        const subPaneDimension = pane.createPropertyPane({
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.worldSettings"),
            titleAltText: "World Settings"
        });
        subPaneDimension.addDropdown(playerPosition, "dimensionId", {
            titleStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.dimension"),
            titleAltText: "Dimension",
            dropdownItems: [ {
                displayAltText: "Overworld",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.overworld"),
                value: DimensionIds["minecraft:overworld"]
            }, {
                displayAltText: "Nether",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.nether"),
                value: DimensionIds["minecraft:nether"]
            }, {
                displayAltText: "The End",
                displayStringId: (0, server_editor_namespaceObject.getLocalizationId)("playerPositionExtension.theEnd"),
                value: DimensionIds["minecraft:the_end"]
            } ],
            onChange: (_obj, _property, _oldValue, _newValue) => {
                movePlayer(player.location, uiSession.extensionContext, playerPosition.dimensionId);
            }
        });
        const positionStatusItem = uiSession.createStatusBarItem(server_editor_namespaceObject.EditorStatusBarAlignment.Left, 30);
        updateStatusBarText(positionStatusItem, currentLocation);
        let ticks = 0;
        const onTick = () => {
            if (ticks++ % PlayerPosition_TicksRefreshRate === 0) {
                ticks = 0;
                const playerLoc = vector_utils_Vector3Utils.floor(player.location);
                if (!vector_utils_Vector3Utils.equals(playerLoc, currentLocation)) {
                    currentLocation = playerLoc;
                    updateStatusBarText(positionStatusItem, currentLocation);
                }
            }
            if (uiSession.scratchStorage && !uiSession.scratchStorage.isDisposed) {
                uiSession.scratchStorage.latestRunId = server_namespaceObject.system.run(onTick);
            }
        };
        uiSession.scratchStorage.latestRunId = server_namespaceObject.system.run(onTick);
        return [];
    }), (uiSession => {
        if (uiSession.scratchStorage && uiSession.scratchStorage.latestRunId !== -1) {
            uiSession.scratchStorage.isDisposed = true;
            server_namespaceObject.system.clearRun(uiSession.scratchStorage.latestRunId);
        }
        uiSession.log.debug(`Shutting down ${uiSession.extensionContext.extensionInfo.name} extension`);
    }), {
        description: "Keeps track of player position and allow to modify it into the pane."
    });
}

registerCoreEditorExtension();

registerPlayerPositionExtension();

registerGrappleExtension();

registerCubeBrushExtension();