"use strict";
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
Object.defineProperty(exports, "__esModule", { value: true });
const Log_1 = require("../../core/Log");
const ChestBlockActor_1 = require("./ChestBlockActor");
const BedBlockActor_1 = require("./BedBlockActor");
const FrameBlockActor_1 = require("./FrameBlockActor");
const GenericBlockActor_1 = require("./GenericBlockActor");
const NoteBlockActor_1 = require("./NoteBlockActor");
const SignBlockActor_1 = require("./SignBlockActor");
const StructureBlockActor_1 = require("./StructureBlockActor");
const CauldronBlockActor_1 = require("./CauldronBlockActor");
const CampfireBlockActor_1 = require("./CampfireBlockActor");
const BeehiveBlockActor_1 = require("./BeehiveBlockActor");
const CommandBlockActor_1 = require("./CommandBlockActor");
const MobSpawnerBlockActor_1 = require("./MobSpawnerBlockActor");
const HopperBlockActor_1 = require("./HopperBlockActor");
const ComparatorBlockActor_1 = require("./ComparatorBlockActor");
class BlockActorFactory {
    static create(id, rootTagIn) {
        switch (id) {
            case "minecraft:wall_sign":
            case "minecraft:standing_sign":
            case "Sign":
            case "HangingSign":
                return new SignBlockActor_1.default(rootTagIn);
            case "minecraft:structure_block":
            case "StructureBlock":
                return new StructureBlockActor_1.default(rootTagIn);
            case "minecraft:ender_chest":
            case "minecraft:chest":
            case "minecraft:barrel":
            case "Barrel":
            case "Chest":
            case "EnderChest":
                return new ChestBlockActor_1.default(rootTagIn);
            case "Cauldron":
                return new CauldronBlockActor_1.default(rootTagIn);
            case "minecraft:noteblock":
            case "Music":
                return new NoteBlockActor_1.default(rootTagIn);
            case "minecraft:frame":
            case "ItemFrame":
            case "GlowItemFrame":
                return new FrameBlockActor_1.default(rootTagIn);
            case "minecraft:spore_blossom":
            case "SporeBlossom":
            case "FlowerPot":
            case "EndPortal":
            case "Banner": // start of just blanket inclusion.
            case "EnchantTable":
            case "Lectern":
            case "BlastFurnace":
            case "Furnace":
            case "DaylightDetector":
            case "ShulkerBox":
            case "BrewingStand":
            case "Skull":
            case "Dropper":
            case "Dispenser":
            case "Bell":
            case "BrushableBlock":
            case "ChiseledBookshelf":
            case "SculkSensor":
            case "PistonArm":
            case "SculkShrieker":
            case "NetherReactor":
            case "SculkCatalyst":
            case "Lodestone":
            case "Beacon":
            case "Conduit":
            case "Jukebox":
            case "JigsawBlock":
            case "Smoker":
            case "ChalkboardBlock":
            case "ChemistryTable":
            case "CalibratedSculkSensor":
            case "DecoratedPot":
            case "SuspiciousSand":
            case "EndGateway":
            case "SuspiciousGravel":
            case "Piston":
            case "MovingBlock":
            case "Vault":
                return new GenericBlockActor_1.default(rootTagIn);
            case "Bed":
                return new BedBlockActor_1.default(rootTagIn);
            case "Campfire":
            case "SoulCampfire":
                return new CampfireBlockActor_1.default(rootTagIn);
            case "Beehive":
                return new BeehiveBlockActor_1.default(rootTagIn);
            case "CommandBlock":
                return new CommandBlockActor_1.default(rootTagIn);
            case "MobSpawner":
            case "mob_spawner":
            case "minecraft:mob_spawner":
                return new MobSpawnerBlockActor_1.default(rootTagIn);
            case "Hopper":
                return new HopperBlockActor_1.default(rootTagIn);
            case "Comparator":
                return new ComparatorBlockActor_1.default(rootTagIn);
            default:
                Log_1.default.debugAlert("Unexpected block actor type found '" + id + "'");
                return undefined;
        }
    }
}
exports.default = BlockActorFactory;

//# sourceMappingURL=../../maps/minecraft/blockActors/BlockActorFactory.js.map
