diff --git a/src/Server.php b/src/Server.php index b7732ee0f..b31a2eb8e 100644 --- a/src/Server.php +++ b/src/Server.php @@ -27,7 +27,6 @@ declare(strict_types=1); */ namespace pocketmine; -use pocketmine\block\BlockFactory; use pocketmine\command\CommandReader; use pocketmine\command\CommandSender; use pocketmine\command\ConsoleCommandSender; @@ -985,7 +984,6 @@ class Server{ $this->commandMap = new SimpleCommandMap($this); EntityFactory::init(); - BlockFactory::init(); Enchantment::init(); ItemFactory::init(); CreativeInventory::init(); diff --git a/src/block/BlockFactory.php b/src/block/BlockFactory.php index 715401fff..88ed24cd4 100644 --- a/src/block/BlockFactory.php +++ b/src/block/BlockFactory.php @@ -60,354 +60,360 @@ use function min; * Manages block registration and instance creation */ class BlockFactory{ + /** @var self|null */ + private static $instance = null; + + public static function getInstance() : self{ + if(self::$instance === null){ + self::$instance = new self; + } + return self::$instance; + } + /** * @var \SplFixedArray|Block[] * @phpstan-var \SplFixedArray */ - private static $fullList; + private $fullList; /** * @var \SplFixedArray|int[] * @phpstan-var \SplFixedArray */ - public static $lightFilter; + public $lightFilter; /** * @var \SplFixedArray|bool[] * @phpstan-var \SplFixedArray */ - public static $diffusesSkyLight; + public $diffusesSkyLight; /** * @var \SplFixedArray|float[] * @phpstan-var \SplFixedArray */ - public static $blastResistance; + public $blastResistance; - /** - * Initializes the block factory. By default this is called only once on server start, however you may wish to use - * this if you need to reset the block factory back to its original defaults for whatever reason. - */ - public static function init() : void{ + public function __construct(){ TileFactory::init(); - self::$fullList = new \SplFixedArray(8192); + $this->fullList = new \SplFixedArray(8192); - self::$lightFilter = \SplFixedArray::fromArray(array_fill(0, 8192, 1)); - self::$diffusesSkyLight = \SplFixedArray::fromArray(array_fill(0, 8192, false)); - self::$blastResistance = \SplFixedArray::fromArray(array_fill(0, 8192, 0.0)); + $this->lightFilter = \SplFixedArray::fromArray(array_fill(0, 8192, 1)); + $this->diffusesSkyLight = \SplFixedArray::fromArray(array_fill(0, 8192, false)); + $this->blastResistance = \SplFixedArray::fromArray(array_fill(0, 8192, 0.0)); - self::register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail")); - self::register(new Air(new BID(Ids::AIR), "Air")); - self::register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_NORMAL), "Anvil")); - self::register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_SLIGHTLY_DAMAGED), "Slightly Damaged Anvil")); - self::register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_VERY_DAMAGED), "Very Damaged Anvil")); - self::register(new Banner(new BIDFlattened(Ids::STANDING_BANNER, Ids::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner")); - self::register(new Transparent(new BID(Ids::BARRIER), "Barrier", BlockBreakInfo::indestructible())); - self::register(new Bed(new BID(Ids::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block")); - self::register(new Bedrock(new BID(Ids::BEDROCK), "Bedrock")); - self::register(new Beetroot(new BID(Ids::BEETROOT_BLOCK), "Beetroot Block")); - self::register(new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice")); - self::register(new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block")); - self::register(new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf")); - self::register(new BrewingStand(new BID(Ids::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand")); + $this->register(new ActivatorRail(new BID(Ids::ACTIVATOR_RAIL), "Activator Rail")); + $this->register(new Air(new BID(Ids::AIR), "Air")); + $this->register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_NORMAL), "Anvil")); + $this->register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_SLIGHTLY_DAMAGED), "Slightly Damaged Anvil")); + $this->register(new Anvil(new BID(Ids::ANVIL, Meta::ANVIL_VERY_DAMAGED), "Very Damaged Anvil")); + $this->register(new Banner(new BIDFlattened(Ids::STANDING_BANNER, Ids::WALL_BANNER, 0, ItemIds::BANNER, TileBanner::class), "Banner")); + $this->register(new Transparent(new BID(Ids::BARRIER), "Barrier", BlockBreakInfo::indestructible())); + $this->register(new Bed(new BID(Ids::BED_BLOCK, 0, ItemIds::BED, TileBed::class), "Bed Block")); + $this->register(new Bedrock(new BID(Ids::BEDROCK), "Bedrock")); + $this->register(new Beetroot(new BID(Ids::BEETROOT_BLOCK), "Beetroot Block")); + $this->register(new BlueIce(new BID(Ids::BLUE_ICE), "Blue Ice")); + $this->register(new BoneBlock(new BID(Ids::BONE_BLOCK), "Bone Block")); + $this->register(new Bookshelf(new BID(Ids::BOOKSHELF), "Bookshelf")); + $this->register(new BrewingStand(new BID(Ids::BREWING_STAND_BLOCK, 0, ItemIds::BREWING_STAND, TileBrewingStand::class), "Brewing Stand")); $bricksBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); - self::register(new Opaque(new BID(Ids::BRICK_BLOCK), "Bricks", $bricksBreakInfo)); + $this->register(new Stair(new BID(Ids::BRICK_STAIRS), "Brick Stairs", $bricksBreakInfo)); + $this->register(new Opaque(new BID(Ids::BRICK_BLOCK), "Bricks", $bricksBreakInfo)); - self::register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom")); - self::register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block")); - self::register(new Cactus(new BID(Ids::CACTUS), "Cactus")); - self::register(new Cake(new BID(Ids::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake")); - self::register(new Carrot(new BID(Ids::CARROTS), "Carrot Block")); - self::register(new Chest(new BID(Ids::CHEST, 0, null, TileChest::class), "Chest")); - self::register(new Clay(new BID(Ids::CLAY_BLOCK), "Clay Block")); - self::register(new Coal(new BID(Ids::COAL_BLOCK), "Coal Block")); - self::register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore")); - self::register(new CoarseDirt(new BID(Ids::DIRT, Meta::DIRT_COARSE), "Coarse Dirt")); + $this->register(new BrownMushroom(new BID(Ids::BROWN_MUSHROOM), "Brown Mushroom")); + $this->register(new BrownMushroomBlock(new BID(Ids::BROWN_MUSHROOM_BLOCK), "Brown Mushroom Block")); + $this->register(new Cactus(new BID(Ids::CACTUS), "Cactus")); + $this->register(new Cake(new BID(Ids::CAKE_BLOCK, 0, ItemIds::CAKE), "Cake")); + $this->register(new Carrot(new BID(Ids::CARROTS), "Carrot Block")); + $this->register(new Chest(new BID(Ids::CHEST, 0, null, TileChest::class), "Chest")); + $this->register(new Clay(new BID(Ids::CLAY_BLOCK), "Clay Block")); + $this->register(new Coal(new BID(Ids::COAL_BLOCK), "Coal Block")); + $this->register(new CoalOre(new BID(Ids::COAL_ORE), "Coal Ore")); + $this->register(new CoarseDirt(new BID(Ids::DIRT, Meta::DIRT_COARSE), "Coarse Dirt")); $cobblestoneBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); - self::register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); - self::register(new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); - self::register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::COBBLESTONE), "Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::MOSSY_COBBLESTONE), "Mossy Cobblestone", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::COBBLESTONE_STAIRS), "Cobblestone Stairs", $cobblestoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_COBBLESTONE_STAIRS), "Mossy Cobblestone Stairs", $cobblestoneBreakInfo)); - self::register(new Cobweb(new BID(Ids::COBWEB), "Cobweb")); - self::register(new CocoaBlock(new BID(Ids::COCOA), "Cocoa Block")); - self::register(new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table")); - self::register(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_DETECTOR, Ids::DAYLIGHT_DETECTOR_INVERTED, 0, null, TileDaylightSensor::class), "Daylight Sensor")); - self::register(new DeadBush(new BID(Ids::DEADBUSH), "Dead Bush")); - self::register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail")); + $this->register(new Cobweb(new BID(Ids::COBWEB), "Cobweb")); + $this->register(new CocoaBlock(new BID(Ids::COCOA), "Cocoa Block")); + $this->register(new CraftingTable(new BID(Ids::CRAFTING_TABLE), "Crafting Table")); + $this->register(new DaylightSensor(new BIDFlattened(Ids::DAYLIGHT_DETECTOR, Ids::DAYLIGHT_DETECTOR_INVERTED, 0, null, TileDaylightSensor::class), "Daylight Sensor")); + $this->register(new DeadBush(new BID(Ids::DEADBUSH), "Dead Bush")); + $this->register(new DetectorRail(new BID(Ids::DETECTOR_RAIL), "Detector Rail")); - self::register(new Opaque(new BID(Ids::DIAMOND_BLOCK), "Diamond Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - self::register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore")); - self::register(new Dirt(new BID(Ids::DIRT, Meta::DIRT_NORMAL), "Dirt")); - self::register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower")); - self::register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac")); - self::register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush")); - self::register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony")); - self::register(new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass")); - self::register(new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern")); - self::register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg")); - self::register(new DriedKelp(new BID(Ids::DRIED_KELP_BLOCK), "Dried Kelp Block", new BlockBreakInfo(0.5, BlockToolType::NONE, 0, 12.5))); - self::register(new Opaque(new BID(Ids::EMERALD_BLOCK), "Emerald Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - self::register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore")); - self::register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table")); - self::register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame")); - self::register(new EndRod(new BID(Ids::END_ROD), "End Rod")); - self::register(new Opaque(new BID(Ids::END_STONE), "End Stone", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); + $this->register(new Opaque(new BID(Ids::DIAMOND_BLOCK), "Diamond Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new DiamondOre(new BID(Ids::DIAMOND_ORE), "Diamond Ore")); + $this->register(new Dirt(new BID(Ids::DIRT, Meta::DIRT_NORMAL), "Dirt")); + $this->register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_SUNFLOWER), "Sunflower")); + $this->register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LILAC), "Lilac")); + $this->register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_ROSE_BUSH), "Rose Bush")); + $this->register(new DoublePlant(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_PEONY), "Peony")); + $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_TALLGRASS), "Double Tallgrass")); + $this->register(new DoubleTallGrass(new BID(Ids::DOUBLE_PLANT, Meta::DOUBLE_PLANT_LARGE_FERN), "Large Fern")); + $this->register(new DragonEgg(new BID(Ids::DRAGON_EGG), "Dragon Egg")); + $this->register(new DriedKelp(new BID(Ids::DRIED_KELP_BLOCK), "Dried Kelp Block", new BlockBreakInfo(0.5, BlockToolType::NONE, 0, 12.5))); + $this->register(new Opaque(new BID(Ids::EMERALD_BLOCK), "Emerald Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new EmeraldOre(new BID(Ids::EMERALD_ORE), "Emerald Ore")); + $this->register(new EnchantingTable(new BID(Ids::ENCHANTING_TABLE, 0, null, TileEnchantingTable::class), "Enchanting Table")); + $this->register(new EndPortalFrame(new BID(Ids::END_PORTAL_FRAME), "End Portal Frame")); + $this->register(new EndRod(new BID(Ids::END_ROD), "End Rod")); + $this->register(new Opaque(new BID(Ids::END_STONE), "End Stone", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 45.0))); $endBrickBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 4.0); - self::register(new Opaque(new BID(Ids::END_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); - self::register(new Stair(new BID(Ids::END_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::END_BRICKS), "End Stone Bricks", $endBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::END_BRICK_STAIRS), "End Stone Brick Stairs", $endBrickBreakInfo)); - self::register(new EnderChest(new BID(Ids::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest")); - self::register(new Farmland(new BID(Ids::FARMLAND), "Farmland")); - self::register(new Fire(new BID(Ids::FIRE), "Fire Block")); - self::register(new Flower(new BID(Ids::DANDELION), "Dandelion")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip")); - self::register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip")); - self::register(new FlowerPot(new BID(Ids::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot")); - self::register(new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice")); - self::register(new Furnace(new BIDFlattened(Ids::FURNACE, Ids::LIT_FURNACE, 0, null, TileFurnace::class), "Furnace")); - self::register(new Glass(new BID(Ids::GLASS), "Glass")); - self::register(new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane")); - self::register(new GlowingObsidian(new BID(Ids::GLOWINGOBSIDIAN), "Glowing Obsidian")); - self::register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone")); - self::register(new Opaque(new BID(Ids::GOLD_BLOCK), "Gold Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); - self::register(new Opaque(new BID(Ids::GOLD_ORE), "Gold Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); - self::register(new Grass(new BID(Ids::GRASS), "Grass")); - self::register(new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path")); - self::register(new Gravel(new BID(Ids::GRAVEL), "Gravel")); - self::register(new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay")); - self::register(new HardenedGlass(new BID(Ids::HARD_GLASS), "Hardened Glass")); - self::register(new HardenedGlassPane(new BID(Ids::HARD_GLASS_PANE), "Hardened Glass Pane")); - self::register(new HayBale(new BID(Ids::HAY_BALE), "Hay Bale")); - self::register(new Hopper(new BID(Ids::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); - self::register(new Ice(new BID(Ids::ICE), "Ice")); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone") extends InfestedStone{ + $this->register(new EnderChest(new BID(Ids::ENDER_CHEST, 0, null, TileEnderChest::class), "Ender Chest")); + $this->register(new Farmland(new BID(Ids::FARMLAND), "Farmland")); + $this->register(new Fire(new BID(Ids::FIRE), "Fire Block")); + $this->register(new Flower(new BID(Ids::DANDELION), "Dandelion")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ALLIUM), "Allium")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_AZURE_BLUET), "Azure Bluet")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_BLUE_ORCHID), "Blue Orchid")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_CORNFLOWER), "Cornflower")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_LILY_OF_THE_VALLEY), "Lily of the Valley")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_ORANGE_TULIP), "Orange Tulip")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_OXEYE_DAISY), "Oxeye Daisy")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_PINK_TULIP), "Pink Tulip")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_POPPY), "Poppy")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_RED_TULIP), "Red Tulip")); + $this->register(new Flower(new BID(Ids::RED_FLOWER, Meta::FLOWER_WHITE_TULIP), "White Tulip")); + $this->register(new FlowerPot(new BID(Ids::FLOWER_POT_BLOCK, 0, ItemIds::FLOWER_POT, TileFlowerPot::class), "Flower Pot")); + $this->register(new FrostedIce(new BID(Ids::FROSTED_ICE), "Frosted Ice")); + $this->register(new Furnace(new BIDFlattened(Ids::FURNACE, Ids::LIT_FURNACE, 0, null, TileFurnace::class), "Furnace")); + $this->register(new Glass(new BID(Ids::GLASS), "Glass")); + $this->register(new GlassPane(new BID(Ids::GLASS_PANE), "Glass Pane")); + $this->register(new GlowingObsidian(new BID(Ids::GLOWINGOBSIDIAN), "Glowing Obsidian")); + $this->register(new Glowstone(new BID(Ids::GLOWSTONE), "Glowstone")); + $this->register(new Opaque(new BID(Ids::GOLD_BLOCK), "Gold Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel(), 30.0))); + $this->register(new Opaque(new BID(Ids::GOLD_ORE), "Gold Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::IRON()->getHarvestLevel()))); + $this->register(new Grass(new BID(Ids::GRASS), "Grass")); + $this->register(new GrassPath(new BID(Ids::GRASS_PATH), "Grass Path")); + $this->register(new Gravel(new BID(Ids::GRAVEL), "Gravel")); + $this->register(new HardenedClay(new BID(Ids::HARDENED_CLAY), "Hardened Clay")); + $this->register(new HardenedGlass(new BID(Ids::HARD_GLASS), "Hardened Glass")); + $this->register(new HardenedGlassPane(new BID(Ids::HARD_GLASS_PANE), "Hardened Glass Pane")); + $this->register(new HayBale(new BID(Ids::HAY_BALE), "Hay Bale")); + $this->register(new Hopper(new BID(Ids::HOPPER_BLOCK, 0, ItemIds::HOPPER, TileHopper::class), "Hopper", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 15.0))); + $this->register(new Ice(new BID(Ids::ICE), "Ice")); + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE), "Infested Stone") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::STONE()->asItem()]; } }); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone") extends InfestedStone{ + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_COBBLESTONE), "Infested Cobblestone") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; } }); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick") extends InfestedStone{ + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK), "Infested Stone Brick") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::STONE_BRICKS()->asItem()]; } }); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick") extends InfestedStone{ + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_MOSSY), "Infested Mossy Stone Brick") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::MOSSY_STONE_BRICKS()->asItem()]; } }); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick") extends InfestedStone{ + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CRACKED), "Infested Cracked Stone Brick") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::CRACKED_STONE_BRICKS()->asItem()]; } }); - self::register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick") extends InfestedStone{ + $this->register(new class(new BID(Ids::MONSTER_EGG, Meta::INFESTED_STONE_BRICK_CHISELED), "Infested Chiseled Stone Brick") extends InfestedStone{ public function getSilkTouchDrops(Item $item) : array{ return [VanillaBlocks::CHISELED_STONE_BRICKS()->asItem()]; } }); $updateBlockBreakInfo = new BlockBreakInfo(1.0); - self::register(new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); - self::register(new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); - self::register(new Transparent(new BID(Ids::INVISIBLEBEDROCK), "Invisible Bedrock", BlockBreakInfo::indestructible())); - self::register(new Opaque(new BID(Ids::IRON_BLOCK), "Iron Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); - self::register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); - self::register(new Door(new BID(Ids::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0))); - self::register(new Opaque(new BID(Ids::IRON_ORE), "Iron Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - self::register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0))); - self::register(new ItemFrame(new BID(Ids::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame")); - self::register(new Ladder(new BID(Ids::LADDER), "Ladder")); - self::register(new Lantern(new BID(Ids::LANTERN), "Lantern", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register(new Opaque(new BID(Ids::LAPIS_BLOCK), "Lapis Lazuli Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); - self::register(new LapisOre(new BID(Ids::LAPIS_ORE), "Lapis Lazuli Ore")); - self::register(new Lava(new BIDFlattened(Ids::FLOWING_LAVA, Ids::STILL_LAVA), "Lava")); - self::register(new Lever(new BID(Ids::LEVER), "Lever")); - self::register(new Magma(new BID(Ids::MAGMA), "Magma Block")); - self::register(new Melon(new BID(Ids::MELON_BLOCK), "Melon Block")); - self::register(new MelonStem(new BID(Ids::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem")); - self::register(new MonsterSpawner(new BID(Ids::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner")); - self::register(new Mycelium(new BID(Ids::MYCELIUM), "Mycelium")); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE), "update!", $updateBlockBreakInfo)); + $this->register(new Opaque(new BID(Ids::INFO_UPDATE2), "ate!upd", $updateBlockBreakInfo)); + $this->register(new Transparent(new BID(Ids::INVISIBLEBEDROCK), "Invisible Bedrock", BlockBreakInfo::indestructible())); + $this->register(new Opaque(new BID(Ids::IRON_BLOCK), "Iron Block", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel(), 30.0))); + $this->register(new Thin(new BID(Ids::IRON_BARS), "Iron Bars", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0))); + $this->register(new Door(new BID(Ids::IRON_DOOR_BLOCK, 0, ItemIds::IRON_DOOR), "Iron Door", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0))); + $this->register(new Opaque(new BID(Ids::IRON_ORE), "Iron Ore", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new Trapdoor(new BID(Ids::IRON_TRAPDOOR), "Iron Trapdoor", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 25.0))); + $this->register(new ItemFrame(new BID(Ids::FRAME_BLOCK, 0, ItemIds::FRAME, TileItemFrame::class), "Item Frame")); + $this->register(new Ladder(new BID(Ids::LADDER), "Ladder")); + $this->register(new Lantern(new BID(Ids::LANTERN), "Lantern", new BlockBreakInfo(5.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Opaque(new BID(Ids::LAPIS_BLOCK), "Lapis Lazuli Block", new BlockBreakInfo(3.0, BlockToolType::PICKAXE, ToolTier::STONE()->getHarvestLevel()))); + $this->register(new LapisOre(new BID(Ids::LAPIS_ORE), "Lapis Lazuli Ore")); + $this->register(new Lava(new BIDFlattened(Ids::FLOWING_LAVA, Ids::STILL_LAVA), "Lava")); + $this->register(new Lever(new BID(Ids::LEVER), "Lever")); + $this->register(new Magma(new BID(Ids::MAGMA), "Magma Block")); + $this->register(new Melon(new BID(Ids::MELON_BLOCK), "Melon Block")); + $this->register(new MelonStem(new BID(Ids::MELON_STEM, 0, ItemIds::MELON_SEEDS), "Melon Stem")); + $this->register(new MonsterSpawner(new BID(Ids::MOB_SPAWNER, 0, null, TileMonsterSpawner::class), "Monster Spawner")); + $this->register(new Mycelium(new BID(Ids::MYCELIUM), "Mycelium")); $netherBrickBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Opaque(new BID(Ids::NETHER_BRICK_BLOCK), "Nether Bricks", $netherBrickBreakInfo)); - self::register(new Opaque(new BID(Ids::RED_NETHER_BRICK), "Red Nether Bricks", $netherBrickBreakInfo)); - self::register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); - self::register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); - self::register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); - self::register(new NetherPortal(new BID(Ids::PORTAL), "Nether Portal")); - self::register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore")); - self::register(new NetherReactor(new BID(Ids::NETHERREACTOR), "Nether Reactor Core")); - self::register(new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BlockBreakInfo(1.0))); - self::register(new NetherWartPlant(new BID(Ids::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart")); - self::register(new Netherrack(new BID(Ids::NETHERRACK), "Netherrack")); - self::register(new Note(new BID(Ids::NOTEBLOCK, 0, null, TileNote::class), "Note Block")); - self::register(new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BlockBreakInfo(35.0 /* 50 in PC */, BlockToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); - self::register(new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice")); - self::register(new Podzol(new BID(Ids::PODZOL), "Podzol")); - self::register(new Potato(new BID(Ids::POTATOES), "Potato Block")); - self::register(new PoweredRail(new BID(Ids::GOLDEN_RAIL, Meta::RAIL_STRAIGHT_NORTH_SOUTH), "Powered Rail")); + $this->register(new Opaque(new BID(Ids::NETHER_BRICK_BLOCK), "Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_NETHER_BRICK), "Red Nether Bricks", $netherBrickBreakInfo)); + $this->register(new Fence(new BID(Ids::NETHER_BRICK_FENCE), "Nether Brick Fence", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::NETHER_BRICK_STAIRS), "Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_NETHER_BRICK_STAIRS), "Red Nether Brick Stairs", $netherBrickBreakInfo)); + $this->register(new NetherPortal(new BID(Ids::PORTAL), "Nether Portal")); + $this->register(new NetherQuartzOre(new BID(Ids::NETHER_QUARTZ_ORE), "Nether Quartz Ore")); + $this->register(new NetherReactor(new BID(Ids::NETHERREACTOR), "Nether Reactor Core")); + $this->register(new Opaque(new BID(Ids::NETHER_WART_BLOCK), "Nether Wart Block", new BlockBreakInfo(1.0))); + $this->register(new NetherWartPlant(new BID(Ids::NETHER_WART_PLANT, 0, ItemIds::NETHER_WART), "Nether Wart")); + $this->register(new Netherrack(new BID(Ids::NETHERRACK), "Netherrack")); + $this->register(new Note(new BID(Ids::NOTEBLOCK, 0, null, TileNote::class), "Note Block")); + $this->register(new Opaque(new BID(Ids::OBSIDIAN), "Obsidian", new BlockBreakInfo(35.0 /* 50 in PC */, BlockToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 6000.0))); + $this->register(new PackedIce(new BID(Ids::PACKED_ICE), "Packed Ice")); + $this->register(new Podzol(new BID(Ids::PODZOL), "Podzol")); + $this->register(new Potato(new BID(Ids::POTATOES), "Potato Block")); + $this->register(new PoweredRail(new BID(Ids::GOLDEN_RAIL, Meta::RAIL_STRAIGHT_NORTH_SOUTH), "Powered Rail")); $prismarineBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); - self::register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo)); - self::register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); - self::register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); - self::register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); - self::register(new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_BRICKS), "Prismarine Bricks", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_BRICKS_STAIRS), "Prismarine Bricks Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_DARK), "Dark Prismarine", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::DARK_PRISMARINE_STAIRS), "Dark Prismarine Stairs", $prismarineBreakInfo)); + $this->register(new Opaque(new BID(Ids::PRISMARINE, Meta::PRISMARINE_NORMAL), "Prismarine", $prismarineBreakInfo)); + $this->register(new Stair(new BID(Ids::PRISMARINE_STAIRS), "Prismarine Stairs", $prismarineBreakInfo)); $pumpkinBreakInfo = new BlockBreakInfo(1.0, BlockToolType::AXE); - self::register($pumpkin = new Opaque(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); + $this->register($pumpkin = new Opaque(new BID(Ids::PUMPKIN), "Pumpkin", $pumpkinBreakInfo)); for($i = 1; $i <= 3; ++$i){ - self::remap(Ids::PUMPKIN, $i, $pumpkin); + $this->remap(Ids::PUMPKIN, $i, $pumpkin); } - self::register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); - self::register(new LitPumpkin(new BID(Ids::JACK_O_LANTERN), "Jack o'Lantern", $pumpkinBreakInfo)); + $this->register(new CarvedPumpkin(new BID(Ids::CARVED_PUMPKIN), "Carved Pumpkin", $pumpkinBreakInfo)); + $this->register(new LitPumpkin(new BID(Ids::JACK_O_LANTERN), "Jack o'Lantern", $pumpkinBreakInfo)); - self::register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem")); + $this->register(new PumpkinStem(new BID(Ids::PUMPKIN_STEM, 0, ItemIds::PUMPKIN_SEEDS), "Pumpkin Stem")); $purpurBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Opaque(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); - self::register(new class(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) extends Opaque{ + $this->register(new Opaque(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_NORMAL), "Purpur Block", $purpurBreakInfo)); + $this->register(new class(new BID(Ids::PURPUR_BLOCK, Meta::PURPUR_PILLAR), "Purpur Pillar", $purpurBreakInfo) extends Opaque{ use PillarRotationTrait; }); - self::register(new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); + $this->register(new Stair(new BID(Ids::PURPUR_STAIRS), "Purpur Stairs", $purpurBreakInfo)); $quartzBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - self::register(new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); - self::register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); - self::register(new class(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo) extends Opaque{ + $this->register(new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_NORMAL), "Quartz Block", $quartzBreakInfo)); + $this->register(new Stair(new BID(Ids::QUARTZ_STAIRS), "Quartz Stairs", $quartzBreakInfo)); + $this->register(new class(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_CHISELED), "Chiseled Quartz Block", $quartzBreakInfo) extends Opaque{ use PillarRotationTrait; }); - self::register(new class(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo) extends Opaque{ + $this->register(new class(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_PILLAR), "Quartz Pillar", $quartzBreakInfo) extends Opaque{ use PillarRotationTrait; }); - self::register(new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); //TODO: this has axis rotation in 1.9, unsure if a bug (https://bugs.mojang.com/browse/MCPE-39074) - self::register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); + $this->register(new Opaque(new BID(Ids::QUARTZ_BLOCK, Meta::QUARTZ_SMOOTH), "Smooth Quartz Block", $quartzBreakInfo)); //TODO: this has axis rotation in 1.9, unsure if a bug (https://bugs.mojang.com/browse/MCPE-39074) + $this->register(new Stair(new BID(Ids::SMOOTH_QUARTZ_STAIRS), "Smooth Quartz Stairs", $quartzBreakInfo)); - self::register(new Rail(new BID(Ids::RAIL), "Rail")); - self::register(new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom")); - self::register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block")); - self::register(new Redstone(new BID(Ids::REDSTONE_BLOCK), "Redstone Block")); - self::register(new RedstoneComparator(new BIDFlattened(Ids::UNPOWERED_COMPARATOR, Ids::POWERED_COMPARATOR, 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator")); - self::register(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, Ids::LIT_REDSTONE_LAMP), "Redstone Lamp")); - self::register(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, Ids::LIT_REDSTONE_ORE), "Redstone Ore")); - self::register(new RedstoneRepeater(new BIDFlattened(Ids::UNPOWERED_REPEATER, Ids::POWERED_REPEATER, 0, ItemIds::REPEATER), "Redstone Repeater")); - self::register(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, Ids::UNLIT_REDSTONE_TORCH), "Redstone Torch")); - self::register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone")); - self::register(new Reserved6(new BID(Ids::RESERVED6), "reserved6")); - self::register(new Sand(new BID(Ids::SAND), "Sand")); - self::register(new Sand(new BID(Ids::SAND, 1), "Red Sand")); - self::register(new SeaLantern(new BID(Ids::SEALANTERN), "Sea Lantern")); - self::register(new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle")); - self::register(new Skull(new BID(Ids::MOB_HEAD_BLOCK, 0, null, TileSkull::class), "Mob Head")); + $this->register(new Rail(new BID(Ids::RAIL), "Rail")); + $this->register(new RedMushroom(new BID(Ids::RED_MUSHROOM), "Red Mushroom")); + $this->register(new RedMushroomBlock(new BID(Ids::RED_MUSHROOM_BLOCK), "Red Mushroom Block")); + $this->register(new Redstone(new BID(Ids::REDSTONE_BLOCK), "Redstone Block")); + $this->register(new RedstoneComparator(new BIDFlattened(Ids::UNPOWERED_COMPARATOR, Ids::POWERED_COMPARATOR, 0, ItemIds::COMPARATOR, TileComparator::class), "Redstone Comparator")); + $this->register(new RedstoneLamp(new BIDFlattened(Ids::REDSTONE_LAMP, Ids::LIT_REDSTONE_LAMP), "Redstone Lamp")); + $this->register(new RedstoneOre(new BIDFlattened(Ids::REDSTONE_ORE, Ids::LIT_REDSTONE_ORE), "Redstone Ore")); + $this->register(new RedstoneRepeater(new BIDFlattened(Ids::UNPOWERED_REPEATER, Ids::POWERED_REPEATER, 0, ItemIds::REPEATER), "Redstone Repeater")); + $this->register(new RedstoneTorch(new BIDFlattened(Ids::REDSTONE_TORCH, Ids::UNLIT_REDSTONE_TORCH), "Redstone Torch")); + $this->register(new RedstoneWire(new BID(Ids::REDSTONE_WIRE, 0, ItemIds::REDSTONE), "Redstone")); + $this->register(new Reserved6(new BID(Ids::RESERVED6), "reserved6")); + $this->register(new Sand(new BID(Ids::SAND), "Sand")); + $this->register(new Sand(new BID(Ids::SAND, 1), "Red Sand")); + $this->register(new SeaLantern(new BID(Ids::SEALANTERN), "Sea Lantern")); + $this->register(new SeaPickle(new BID(Ids::SEA_PICKLE), "Sea Pickle")); + $this->register(new Skull(new BID(Ids::MOB_HEAD_BLOCK, 0, null, TileSkull::class), "Mob Head")); - self::register(new Snow(new BID(Ids::SNOW), "Snow Block")); - self::register(new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer")); - self::register(new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand")); - self::register(new Sponge(new BID(Ids::SPONGE), "Sponge")); + $this->register(new Snow(new BID(Ids::SNOW), "Snow Block")); + $this->register(new SnowLayer(new BID(Ids::SNOW_LAYER), "Snow Layer")); + $this->register(new SoulSand(new BID(Ids::SOUL_SAND), "Soul Sand")); + $this->register(new Sponge(new BID(Ids::SPONGE), "Sponge")); $stoneBreakInfo = new BlockBreakInfo(1.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new class(new BID(Ids::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ + $this->register(new class(new BID(Ids::STONE, Meta::STONE_NORMAL), "Stone", $stoneBreakInfo) extends Opaque{ public function getDropsForCompatibleTool(Item $item) : array{ return [VanillaBlocks::COBBLESTONE()->asItem()]; } }); - self::register(new Stair(new BID(Ids::NORMAL_STONE_STAIRS), "Stone Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::SMOOTH_STONE), "Smooth Stone", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::ANDESITE_STAIRS), "Andesite Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::DIORITE_STAIRS), "Diorite Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::GRANITE_STAIRS), "Granite Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS), "Polished Andesite Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS), "Polished Diorite Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); - self::register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); - self::register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); - self::register(new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button")); - self::register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate")); + $this->register(new Stair(new BID(Ids::NORMAL_STONE_STAIRS), "Stone Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SMOOTH_STONE), "Smooth Stone", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_ANDESITE), "Andesite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::ANDESITE_STAIRS), "Andesite Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_DIORITE), "Diorite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::DIORITE_STAIRS), "Diorite Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_GRANITE), "Granite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::GRANITE_STAIRS), "Granite Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_ANDESITE), "Polished Andesite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_ANDESITE_STAIRS), "Polished Andesite Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_DIORITE), "Polished Diorite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_DIORITE_STAIRS), "Polished Diorite Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONE, Meta::STONE_POLISHED_GRANITE), "Polished Granite", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::POLISHED_GRANITE_STAIRS), "Polished Granite Stairs", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::STONE_BRICK_STAIRS), "Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CHISELED), "Chiseled Stone Bricks", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_CRACKED), "Cracked Stone Bricks", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_MOSSY), "Mossy Stone Bricks", $stoneBreakInfo)); + $this->register(new Stair(new BID(Ids::MOSSY_STONE_BRICK_STAIRS), "Mossy Stone Brick Stairs", $stoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONEBRICK, Meta::STONE_BRICK_NORMAL), "Stone Bricks", $stoneBreakInfo)); + $this->register(new StoneButton(new BID(Ids::STONE_BUTTON), "Stone Button")); + $this->register(new StonePressurePlate(new BID(Ids::STONE_PRESSURE_PLATE), "Stone Pressure Plate")); //TODO: in the future this won't be the same for all the types $stoneSlabBreakInfo = new BlockBreakInfo(2.0, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_NETHER_BRICK), "Nether Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_QUARTZ), "Quartz", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_SANDSTONE), "Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_SMOOTH_STONE), "Smooth Stone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_STONE_BRICK), "Stone Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_DARK_PRISMARINE), "Dark Prismarine", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_MOSSY_COBBLESTONE), "Mossy Cobblestone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PRISMARINE), "Prismarine", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PRISMARINE_BRICKS), "Prismarine Bricks", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PURPUR), "Purpur", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_RED_NETHER_BRICK), "Red Nether Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_RED_SANDSTONE), "Red Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_SMOOTH_SANDSTONE), "Smooth Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_ANDESITE), "Andesite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_DIORITE), "Diorite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_END_STONE_BRICK), "End Stone Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_GRANITE), "Granite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_ANDESITE), "Polished Andesite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_DIORITE), "Polished Diorite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_GRANITE), "Polished Granite", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_CUT_RED_SANDSTONE), "Cut Red Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_CUT_SANDSTONE), "Cut Sandstone", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo)); - self::register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo)); - self::register(new Opaque(new BID(Ids::STONECUTTER), "Stonecutter", new BlockBreakInfo(3.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); - self::register(new Sugarcane(new BID(Ids::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane")); - self::register(new TNT(new BID(Ids::TNT), "TNT")); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_BRICK), "Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_COBBLESTONE), "Cobblestone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_FAKE_WOODEN), "Fake Wooden", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_NETHER_BRICK), "Nether Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_QUARTZ), "Quartz", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_SANDSTONE), "Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_SMOOTH_STONE), "Smooth Stone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB, Ids::DOUBLE_STONE_SLAB, Meta::STONE_SLAB_STONE_BRICK), "Stone Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_DARK_PRISMARINE), "Dark Prismarine", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_MOSSY_COBBLESTONE), "Mossy Cobblestone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PRISMARINE), "Prismarine", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PRISMARINE_BRICKS), "Prismarine Bricks", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_PURPUR), "Purpur", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_RED_NETHER_BRICK), "Red Nether Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_RED_SANDSTONE), "Red Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB2, Ids::DOUBLE_STONE_SLAB2, Meta::STONE_SLAB2_SMOOTH_SANDSTONE), "Smooth Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_ANDESITE), "Andesite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_DIORITE), "Diorite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_END_STONE_BRICK), "End Stone Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_GRANITE), "Granite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_ANDESITE), "Polished Andesite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_DIORITE), "Polished Diorite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_POLISHED_GRANITE), "Polished Granite", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB3, Ids::DOUBLE_STONE_SLAB3, Meta::STONE_SLAB3_SMOOTH_RED_SANDSTONE), "Smooth Red Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_CUT_RED_SANDSTONE), "Cut Red Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_CUT_SANDSTONE), "Cut Sandstone", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_MOSSY_STONE_BRICK), "Mossy Stone Brick", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_SMOOTH_QUARTZ), "Smooth Quartz", $stoneSlabBreakInfo)); + $this->register(new Slab(new BIDFlattened(Ids::STONE_SLAB4, Ids::DOUBLE_STONE_SLAB4, Meta::STONE_SLAB4_STONE), "Stone", $stoneSlabBreakInfo)); + $this->register(new Opaque(new BID(Ids::STONECUTTER), "Stonecutter", new BlockBreakInfo(3.5, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()))); + $this->register(new Sugarcane(new BID(Ids::REEDS_BLOCK, 0, ItemIds::REEDS), "Sugarcane")); + $this->register(new TNT(new BID(Ids::TNT), "TNT")); $fern = new TallGrass(new BID(Ids::TALLGRASS, Meta::TALLGRASS_FERN), "Fern"); - self::register($fern); - self::remap(Ids::TALLGRASS, 0, $fern); - self::remap(Ids::TALLGRASS, 3, $fern); - self::register(new TallGrass(new BID(Ids::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass")); - self::register(new Torch(new BID(Ids::COLORED_TORCH_BP), "Blue Torch")); - self::register(new Torch(new BID(Ids::COLORED_TORCH_BP, 8), "Purple Torch")); - self::register(new Torch(new BID(Ids::COLORED_TORCH_RG), "Red Torch")); - self::register(new Torch(new BID(Ids::COLORED_TORCH_RG, 8), "Green Torch")); - self::register(new Torch(new BID(Ids::TORCH), "Torch")); - self::register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest")); - self::register(new Tripwire(new BID(Ids::TRIPWIRE, 0, ItemIds::STRING), "Tripwire")); - self::register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook")); - self::register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch")); - self::register(new Vine(new BID(Ids::VINE), "Vines")); - self::register(new Water(new BIDFlattened(Ids::FLOWING_WATER, Ids::STILL_WATER), "Water")); - self::register(new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad")); - self::register(new WeightedPressurePlateHeavy(new BID(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE), "Weighted Pressure Plate Heavy")); - self::register(new WeightedPressurePlateLight(new BID(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE), "Weighted Pressure Plate Light")); - self::register(new Wheat(new BID(Ids::WHEAT_BLOCK), "Wheat Block")); + $this->register($fern); + $this->remap(Ids::TALLGRASS, 0, $fern); + $this->remap(Ids::TALLGRASS, 3, $fern); + $this->register(new TallGrass(new BID(Ids::TALLGRASS, Meta::TALLGRASS_NORMAL), "Tall Grass")); + $this->register(new Torch(new BID(Ids::COLORED_TORCH_BP), "Blue Torch")); + $this->register(new Torch(new BID(Ids::COLORED_TORCH_BP, 8), "Purple Torch")); + $this->register(new Torch(new BID(Ids::COLORED_TORCH_RG), "Red Torch")); + $this->register(new Torch(new BID(Ids::COLORED_TORCH_RG, 8), "Green Torch")); + $this->register(new Torch(new BID(Ids::TORCH), "Torch")); + $this->register(new TrappedChest(new BID(Ids::TRAPPED_CHEST, 0, null, TileChest::class), "Trapped Chest")); + $this->register(new Tripwire(new BID(Ids::TRIPWIRE, 0, ItemIds::STRING), "Tripwire")); + $this->register(new TripwireHook(new BID(Ids::TRIPWIRE_HOOK), "Tripwire Hook")); + $this->register(new UnderwaterTorch(new BID(Ids::UNDERWATER_TORCH), "Underwater Torch")); + $this->register(new Vine(new BID(Ids::VINE), "Vines")); + $this->register(new Water(new BIDFlattened(Ids::FLOWING_WATER, Ids::STILL_WATER), "Water")); + $this->register(new WaterLily(new BID(Ids::LILY_PAD), "Lily Pad")); + $this->register(new WeightedPressurePlateHeavy(new BID(Ids::HEAVY_WEIGHTED_PRESSURE_PLATE), "Weighted Pressure Plate Heavy")); + $this->register(new WeightedPressurePlateLight(new BID(Ids::LIGHT_WEIGHTED_PRESSURE_PLATE), "Weighted Pressure Plate Light")); + $this->register(new Wheat(new BID(Ids::WHEAT_BLOCK), "Wheat Block")); //region ugly treetype -> blockID mapping tables $woodenStairIds = [ @@ -475,28 +481,28 @@ class BlockFactory{ foreach(TreeType::getAll() as $treeType){ $magicNumber = $treeType->getMagicNumber(); $name = $treeType->getDisplayName(); - self::register(new Planks(new BID(Ids::PLANKS, $magicNumber), $name . " Planks")); - self::register(new Sapling(new BID(Ids::SAPLING, $magicNumber), $name . " Sapling", $treeType)); - self::register(new WoodenFence(new BID(Ids::FENCE, $magicNumber), $name . " Fence")); - self::register(new WoodenSlab(new BIDFlattened(Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB, $treeType->getMagicNumber()), $treeType->getDisplayName())); + $this->register(new Planks(new BID(Ids::PLANKS, $magicNumber), $name . " Planks")); + $this->register(new Sapling(new BID(Ids::SAPLING, $magicNumber), $name . " Sapling", $treeType)); + $this->register(new WoodenFence(new BID(Ids::FENCE, $magicNumber), $name . " Fence")); + $this->register(new WoodenSlab(new BIDFlattened(Ids::WOODEN_SLAB, Ids::DOUBLE_WOODEN_SLAB, $treeType->getMagicNumber()), $treeType->getDisplayName())); //TODO: find a better way to deal with this split - self::register(new Leaves(new BID($magicNumber >= 4 ? Ids::LEAVES2 : Ids::LEAVES, $magicNumber & 0x03), $name . " Leaves", $treeType)); - self::register(new Log(new BID($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, $magicNumber & 0x03), $name . " Log", $treeType)); + $this->register(new Leaves(new BID($magicNumber >= 4 ? Ids::LEAVES2 : Ids::LEAVES, $magicNumber & 0x03), $name . " Leaves", $treeType)); + $this->register(new Log(new BID($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, $magicNumber & 0x03), $name . " Log", $treeType)); $wood = new Wood(new BID(Ids::WOOD, $magicNumber), $name . " Wood", $treeType); - self::register($wood); - self::remap($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, ($magicNumber & 0x03) | 0b1100, $wood); + $this->register($wood); + $this->remap($magicNumber >= 4 ? Ids::LOG2 : Ids::LOG, ($magicNumber & 0x03) | 0b1100, $wood); - self::register(new FenceGate(new BID($fenceGateIds[$treeType->id()]), $treeType->getDisplayName() . " Fence Gate")); - self::register(new WoodenStairs(new BID($woodenStairIds[$treeType->id()]), $treeType->getDisplayName() . " Stairs")); - self::register(new WoodenDoor($woodenDoorIds[$treeType->id()], $treeType->getDisplayName() . " Door")); + $this->register(new FenceGate(new BID($fenceGateIds[$treeType->id()]), $treeType->getDisplayName() . " Fence Gate")); + $this->register(new WoodenStairs(new BID($woodenStairIds[$treeType->id()]), $treeType->getDisplayName() . " Stairs")); + $this->register(new WoodenDoor($woodenDoorIds[$treeType->id()], $treeType->getDisplayName() . " Door")); - self::register(new WoodenButton(new BID($woodenButtonIds[$treeType->id()]), $treeType->getDisplayName() . " Button")); - self::register(new WoodenPressurePlate(new BID($woodenPressurePlateIds[$treeType->id()]), $treeType->getDisplayName() . " Pressure Plate")); - self::register(new WoodenTrapdoor(new BID($woodenTrapdoorIds[$treeType->id()]), $treeType->getDisplayName() . " Trapdoor")); + $this->register(new WoodenButton(new BID($woodenButtonIds[$treeType->id()]), $treeType->getDisplayName() . " Button")); + $this->register(new WoodenPressurePlate(new BID($woodenPressurePlateIds[$treeType->id()]), $treeType->getDisplayName() . " Pressure Plate")); + $this->register(new WoodenTrapdoor(new BID($woodenTrapdoorIds[$treeType->id()]), $treeType->getDisplayName() . " Trapdoor")); - self::register(new Sign($woodenSignIds[$treeType->id()], $treeType->getDisplayName() . " Sign")); + $this->register(new Sign($woodenSignIds[$treeType->id()], $treeType->getDisplayName() . " Sign")); } static $sandstoneTypes = [ @@ -506,13 +512,13 @@ class BlockFactory{ Meta::SANDSTONE_SMOOTH => "Smooth " ]; $sandstoneBreakInfo = new BlockBreakInfo(0.8, BlockToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel()); - self::register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); - self::register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); - self::register(new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo)); - self::register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::RED_SANDSTONE_STAIRS), "Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS), "Smooth Red Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SANDSTONE_STAIRS), "Sandstone Stairs", $sandstoneBreakInfo)); + $this->register(new Stair(new BID(Ids::SMOOTH_SANDSTONE_STAIRS), "Smooth Sandstone Stairs", $sandstoneBreakInfo)); foreach($sandstoneTypes as $variant => $prefix){ - self::register(new Opaque(new BID(Ids::SANDSTONE, $variant), $prefix . "Sandstone", $sandstoneBreakInfo)); - self::register(new Opaque(new BID(Ids::RED_SANDSTONE, $variant), $prefix . "Red Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::SANDSTONE, $variant), $prefix . "Sandstone", $sandstoneBreakInfo)); + $this->register(new Opaque(new BID(Ids::RED_SANDSTONE, $variant), $prefix . "Red Sandstone", $sandstoneBreakInfo)); } //region ugly glazed-terracotta colour -> ID mapping table @@ -538,16 +544,16 @@ class BlockFactory{ //endregion foreach(DyeColor::getAll() as $color){ - self::register(new Carpet(new BID(Ids::CARPET, $color->getMagicNumber()), $color->getDisplayName() . " Carpet")); - self::register(new Concrete(new BID(Ids::CONCRETE, $color->getMagicNumber()), $color->getDisplayName() . " Concrete")); - self::register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, $color->getMagicNumber()), $color->getDisplayName() . " Concrete Powder")); - self::register(new Glass(new BID(Ids::STAINED_GLASS, $color->getMagicNumber()), $color->getDisplayName() . " Stained Glass")); - self::register(new GlassPane(new BID(Ids::STAINED_GLASS_PANE, $color->getMagicNumber()), $color->getDisplayName() . " Stained Glass Pane")); - self::register(new GlazedTerracotta(new BID($glazedTerracottaIds[$color->id()]), $color->getDisplayName() . " Glazed Terracotta")); - self::register(new HardenedClay(new BID(Ids::STAINED_CLAY, $color->getMagicNumber()), $color->getDisplayName() . " Stained Clay")); - self::register(new HardenedGlass(new BID(Ids::HARD_STAINED_GLASS, $color->getMagicNumber()), "Hardened " . $color->getDisplayName() . " Stained Glass")); - self::register(new HardenedGlassPane(new BID(Ids::HARD_STAINED_GLASS_PANE, $color->getMagicNumber()), "Hardened " . $color->getDisplayName() . " Stained Glass Pane")); - self::register(new Wool(new BID(Ids::WOOL, $color->getMagicNumber()), $color->getDisplayName() . " Wool")); + $this->register(new Carpet(new BID(Ids::CARPET, $color->getMagicNumber()), $color->getDisplayName() . " Carpet")); + $this->register(new Concrete(new BID(Ids::CONCRETE, $color->getMagicNumber()), $color->getDisplayName() . " Concrete")); + $this->register(new ConcretePowder(new BID(Ids::CONCRETE_POWDER, $color->getMagicNumber()), $color->getDisplayName() . " Concrete Powder")); + $this->register(new Glass(new BID(Ids::STAINED_GLASS, $color->getMagicNumber()), $color->getDisplayName() . " Stained Glass")); + $this->register(new GlassPane(new BID(Ids::STAINED_GLASS_PANE, $color->getMagicNumber()), $color->getDisplayName() . " Stained Glass Pane")); + $this->register(new GlazedTerracotta(new BID($glazedTerracottaIds[$color->id()]), $color->getDisplayName() . " Glazed Terracotta")); + $this->register(new HardenedClay(new BID(Ids::STAINED_CLAY, $color->getMagicNumber()), $color->getDisplayName() . " Stained Clay")); + $this->register(new HardenedGlass(new BID(Ids::HARD_STAINED_GLASS, $color->getMagicNumber()), "Hardened " . $color->getDisplayName() . " Stained Glass")); + $this->register(new HardenedGlassPane(new BID(Ids::HARD_STAINED_GLASS_PANE, $color->getMagicNumber()), "Hardened " . $color->getDisplayName() . " Stained Glass Pane")); + $this->register(new Wool(new BID(Ids::WOOL, $color->getMagicNumber()), $color->getDisplayName() . " Wool")); } static $wallTypes = [ @@ -567,10 +573,10 @@ class BlockFactory{ Meta::WALL_STONE_BRICK => "Stone Brick" ]; foreach($wallTypes as $magicNumber => $prefix){ - self::register(new Wall(new BID(Ids::COBBLESTONE_WALL, $magicNumber), $prefix . " Wall")); + $this->register(new Wall(new BID(Ids::COBBLESTONE_WALL, $magicNumber), $prefix . " Wall")); } - self::registerElements(); + $this->registerElements(); //region --- auto-generated TODOs --- //TODO: minecraft:bamboo @@ -638,131 +644,127 @@ class BlockFactory{ //endregion } - private static function registerElements() : void{ - self::register(new Opaque(new BID(Ids::ELEMENT_0), "???", BlockBreakInfo::instant())); + private function registerElements() : void{ + $this->register(new Opaque(new BID(Ids::ELEMENT_0), "???", BlockBreakInfo::instant())); - self::register(new Element(new BID(Ids::ELEMENT_1), "Hydrogen", BlockBreakInfo::instant(), "h", 1, 5)); - self::register(new Element(new BID(Ids::ELEMENT_2), "Helium", BlockBreakInfo::instant(), "he", 2, 7)); - self::register(new Element(new BID(Ids::ELEMENT_3), "Lithium", BlockBreakInfo::instant(), "li", 3, 0)); - self::register(new Element(new BID(Ids::ELEMENT_4), "Beryllium", BlockBreakInfo::instant(), "be", 4, 1)); - self::register(new Element(new BID(Ids::ELEMENT_5), "Boron", BlockBreakInfo::instant(), "b", 5, 4)); - self::register(new Element(new BID(Ids::ELEMENT_6), "Carbon", BlockBreakInfo::instant(), "c", 6, 5)); - self::register(new Element(new BID(Ids::ELEMENT_7), "Nitrogen", BlockBreakInfo::instant(), "n", 7, 5)); - self::register(new Element(new BID(Ids::ELEMENT_8), "Oxygen", BlockBreakInfo::instant(), "o", 8, 5)); - self::register(new Element(new BID(Ids::ELEMENT_9), "Fluorine", BlockBreakInfo::instant(), "f", 9, 6)); - self::register(new Element(new BID(Ids::ELEMENT_10), "Neon", BlockBreakInfo::instant(), "ne", 10, 7)); - self::register(new Element(new BID(Ids::ELEMENT_11), "Sodium", BlockBreakInfo::instant(), "na", 11, 0)); - self::register(new Element(new BID(Ids::ELEMENT_12), "Magnesium", BlockBreakInfo::instant(), "mg", 12, 1)); - self::register(new Element(new BID(Ids::ELEMENT_13), "Aluminum", BlockBreakInfo::instant(), "al", 13, 3)); - self::register(new Element(new BID(Ids::ELEMENT_14), "Silicon", BlockBreakInfo::instant(), "si", 14, 4)); - self::register(new Element(new BID(Ids::ELEMENT_15), "Phosphorus", BlockBreakInfo::instant(), "p", 15, 5)); - self::register(new Element(new BID(Ids::ELEMENT_16), "Sulfur", BlockBreakInfo::instant(), "s", 16, 5)); - self::register(new Element(new BID(Ids::ELEMENT_17), "Chlorine", BlockBreakInfo::instant(), "cl", 17, 6)); - self::register(new Element(new BID(Ids::ELEMENT_18), "Argon", BlockBreakInfo::instant(), "ar", 18, 7)); - self::register(new Element(new BID(Ids::ELEMENT_19), "Potassium", BlockBreakInfo::instant(), "k", 19, 0)); - self::register(new Element(new BID(Ids::ELEMENT_20), "Calcium", BlockBreakInfo::instant(), "ca", 20, 1)); - self::register(new Element(new BID(Ids::ELEMENT_21), "Scandium", BlockBreakInfo::instant(), "sc", 21, 2)); - self::register(new Element(new BID(Ids::ELEMENT_22), "Titanium", BlockBreakInfo::instant(), "ti", 22, 2)); - self::register(new Element(new BID(Ids::ELEMENT_23), "Vanadium", BlockBreakInfo::instant(), "v", 23, 2)); - self::register(new Element(new BID(Ids::ELEMENT_24), "Chromium", BlockBreakInfo::instant(), "cr", 24, 2)); - self::register(new Element(new BID(Ids::ELEMENT_25), "Manganese", BlockBreakInfo::instant(), "mn", 25, 2)); - self::register(new Element(new BID(Ids::ELEMENT_26), "Iron", BlockBreakInfo::instant(), "fe", 26, 2)); - self::register(new Element(new BID(Ids::ELEMENT_27), "Cobalt", BlockBreakInfo::instant(), "co", 27, 2)); - self::register(new Element(new BID(Ids::ELEMENT_28), "Nickel", BlockBreakInfo::instant(), "ni", 28, 2)); - self::register(new Element(new BID(Ids::ELEMENT_29), "Copper", BlockBreakInfo::instant(), "cu", 29, 2)); - self::register(new Element(new BID(Ids::ELEMENT_30), "Zinc", BlockBreakInfo::instant(), "zn", 30, 2)); - self::register(new Element(new BID(Ids::ELEMENT_31), "Gallium", BlockBreakInfo::instant(), "ga", 31, 3)); - self::register(new Element(new BID(Ids::ELEMENT_32), "Germanium", BlockBreakInfo::instant(), "ge", 32, 4)); - self::register(new Element(new BID(Ids::ELEMENT_33), "Arsenic", BlockBreakInfo::instant(), "as", 33, 4)); - self::register(new Element(new BID(Ids::ELEMENT_34), "Selenium", BlockBreakInfo::instant(), "se", 34, 5)); - self::register(new Element(new BID(Ids::ELEMENT_35), "Bromine", BlockBreakInfo::instant(), "br", 35, 6)); - self::register(new Element(new BID(Ids::ELEMENT_36), "Krypton", BlockBreakInfo::instant(), "kr", 36, 7)); - self::register(new Element(new BID(Ids::ELEMENT_37), "Rubidium", BlockBreakInfo::instant(), "rb", 37, 0)); - self::register(new Element(new BID(Ids::ELEMENT_38), "Strontium", BlockBreakInfo::instant(), "sr", 38, 1)); - self::register(new Element(new BID(Ids::ELEMENT_39), "Yttrium", BlockBreakInfo::instant(), "y", 39, 2)); - self::register(new Element(new BID(Ids::ELEMENT_40), "Zirconium", BlockBreakInfo::instant(), "zr", 40, 2)); - self::register(new Element(new BID(Ids::ELEMENT_41), "Niobium", BlockBreakInfo::instant(), "nb", 41, 2)); - self::register(new Element(new BID(Ids::ELEMENT_42), "Molybdenum", BlockBreakInfo::instant(), "mo", 42, 2)); - self::register(new Element(new BID(Ids::ELEMENT_43), "Technetium", BlockBreakInfo::instant(), "tc", 43, 2)); - self::register(new Element(new BID(Ids::ELEMENT_44), "Ruthenium", BlockBreakInfo::instant(), "ru", 44, 2)); - self::register(new Element(new BID(Ids::ELEMENT_45), "Rhodium", BlockBreakInfo::instant(), "rh", 45, 2)); - self::register(new Element(new BID(Ids::ELEMENT_46), "Palladium", BlockBreakInfo::instant(), "pd", 46, 2)); - self::register(new Element(new BID(Ids::ELEMENT_47), "Silver", BlockBreakInfo::instant(), "ag", 47, 2)); - self::register(new Element(new BID(Ids::ELEMENT_48), "Cadmium", BlockBreakInfo::instant(), "cd", 48, 2)); - self::register(new Element(new BID(Ids::ELEMENT_49), "Indium", BlockBreakInfo::instant(), "in", 49, 3)); - self::register(new Element(new BID(Ids::ELEMENT_50), "Tin", BlockBreakInfo::instant(), "sn", 50, 3)); - self::register(new Element(new BID(Ids::ELEMENT_51), "Antimony", BlockBreakInfo::instant(), "sb", 51, 4)); - self::register(new Element(new BID(Ids::ELEMENT_52), "Tellurium", BlockBreakInfo::instant(), "te", 52, 4)); - self::register(new Element(new BID(Ids::ELEMENT_53), "Iodine", BlockBreakInfo::instant(), "i", 53, 6)); - self::register(new Element(new BID(Ids::ELEMENT_54), "Xenon", BlockBreakInfo::instant(), "xe", 54, 7)); - self::register(new Element(new BID(Ids::ELEMENT_55), "Cesium", BlockBreakInfo::instant(), "cs", 55, 0)); - self::register(new Element(new BID(Ids::ELEMENT_56), "Barium", BlockBreakInfo::instant(), "ba", 56, 1)); - self::register(new Element(new BID(Ids::ELEMENT_57), "Lanthanum", BlockBreakInfo::instant(), "la", 57, 8)); - self::register(new Element(new BID(Ids::ELEMENT_58), "Cerium", BlockBreakInfo::instant(), "ce", 58, 8)); - self::register(new Element(new BID(Ids::ELEMENT_59), "Praseodymium", BlockBreakInfo::instant(), "pr", 59, 8)); - self::register(new Element(new BID(Ids::ELEMENT_60), "Neodymium", BlockBreakInfo::instant(), "nd", 60, 8)); - self::register(new Element(new BID(Ids::ELEMENT_61), "Promethium", BlockBreakInfo::instant(), "pm", 61, 8)); - self::register(new Element(new BID(Ids::ELEMENT_62), "Samarium", BlockBreakInfo::instant(), "sm", 62, 8)); - self::register(new Element(new BID(Ids::ELEMENT_63), "Europium", BlockBreakInfo::instant(), "eu", 63, 8)); - self::register(new Element(new BID(Ids::ELEMENT_64), "Gadolinium", BlockBreakInfo::instant(), "gd", 64, 8)); - self::register(new Element(new BID(Ids::ELEMENT_65), "Terbium", BlockBreakInfo::instant(), "tb", 65, 8)); - self::register(new Element(new BID(Ids::ELEMENT_66), "Dysprosium", BlockBreakInfo::instant(), "dy", 66, 8)); - self::register(new Element(new BID(Ids::ELEMENT_67), "Holmium", BlockBreakInfo::instant(), "ho", 67, 8)); - self::register(new Element(new BID(Ids::ELEMENT_68), "Erbium", BlockBreakInfo::instant(), "er", 68, 8)); - self::register(new Element(new BID(Ids::ELEMENT_69), "Thulium", BlockBreakInfo::instant(), "tm", 69, 8)); - self::register(new Element(new BID(Ids::ELEMENT_70), "Ytterbium", BlockBreakInfo::instant(), "yb", 70, 8)); - self::register(new Element(new BID(Ids::ELEMENT_71), "Lutetium", BlockBreakInfo::instant(), "lu", 71, 8)); - self::register(new Element(new BID(Ids::ELEMENT_72), "Hafnium", BlockBreakInfo::instant(), "hf", 72, 2)); - self::register(new Element(new BID(Ids::ELEMENT_73), "Tantalum", BlockBreakInfo::instant(), "ta", 73, 2)); - self::register(new Element(new BID(Ids::ELEMENT_74), "Tungsten", BlockBreakInfo::instant(), "w", 74, 2)); - self::register(new Element(new BID(Ids::ELEMENT_75), "Rhenium", BlockBreakInfo::instant(), "re", 75, 2)); - self::register(new Element(new BID(Ids::ELEMENT_76), "Osmium", BlockBreakInfo::instant(), "os", 76, 2)); - self::register(new Element(new BID(Ids::ELEMENT_77), "Iridium", BlockBreakInfo::instant(), "ir", 77, 2)); - self::register(new Element(new BID(Ids::ELEMENT_78), "Platinum", BlockBreakInfo::instant(), "pt", 78, 2)); - self::register(new Element(new BID(Ids::ELEMENT_79), "Gold", BlockBreakInfo::instant(), "au", 79, 2)); - self::register(new Element(new BID(Ids::ELEMENT_80), "Mercury", BlockBreakInfo::instant(), "hg", 80, 2)); - self::register(new Element(new BID(Ids::ELEMENT_81), "Thallium", BlockBreakInfo::instant(), "tl", 81, 3)); - self::register(new Element(new BID(Ids::ELEMENT_82), "Lead", BlockBreakInfo::instant(), "pb", 82, 3)); - self::register(new Element(new BID(Ids::ELEMENT_83), "Bismuth", BlockBreakInfo::instant(), "bi", 83, 3)); - self::register(new Element(new BID(Ids::ELEMENT_84), "Polonium", BlockBreakInfo::instant(), "po", 84, 4)); - self::register(new Element(new BID(Ids::ELEMENT_85), "Astatine", BlockBreakInfo::instant(), "at", 85, 6)); - self::register(new Element(new BID(Ids::ELEMENT_86), "Radon", BlockBreakInfo::instant(), "rn", 86, 7)); - self::register(new Element(new BID(Ids::ELEMENT_87), "Francium", BlockBreakInfo::instant(), "fr", 87, 0)); - self::register(new Element(new BID(Ids::ELEMENT_88), "Radium", BlockBreakInfo::instant(), "ra", 88, 1)); - self::register(new Element(new BID(Ids::ELEMENT_89), "Actinium", BlockBreakInfo::instant(), "ac", 89, 9)); - self::register(new Element(new BID(Ids::ELEMENT_90), "Thorium", BlockBreakInfo::instant(), "th", 90, 9)); - self::register(new Element(new BID(Ids::ELEMENT_91), "Protactinium", BlockBreakInfo::instant(), "pa", 91, 9)); - self::register(new Element(new BID(Ids::ELEMENT_92), "Uranium", BlockBreakInfo::instant(), "u", 92, 9)); - self::register(new Element(new BID(Ids::ELEMENT_93), "Neptunium", BlockBreakInfo::instant(), "np", 93, 9)); - self::register(new Element(new BID(Ids::ELEMENT_94), "Plutonium", BlockBreakInfo::instant(), "pu", 94, 9)); - self::register(new Element(new BID(Ids::ELEMENT_95), "Americium", BlockBreakInfo::instant(), "am", 95, 9)); - self::register(new Element(new BID(Ids::ELEMENT_96), "Curium", BlockBreakInfo::instant(), "cm", 96, 9)); - self::register(new Element(new BID(Ids::ELEMENT_97), "Berkelium", BlockBreakInfo::instant(), "bk", 97, 9)); - self::register(new Element(new BID(Ids::ELEMENT_98), "Californium", BlockBreakInfo::instant(), "cf", 98, 9)); - self::register(new Element(new BID(Ids::ELEMENT_99), "Einsteinium", BlockBreakInfo::instant(), "es", 99, 9)); - self::register(new Element(new BID(Ids::ELEMENT_100), "Fermium", BlockBreakInfo::instant(), "fm", 100, 9)); - self::register(new Element(new BID(Ids::ELEMENT_101), "Mendelevium", BlockBreakInfo::instant(), "md", 101, 9)); - self::register(new Element(new BID(Ids::ELEMENT_102), "Nobelium", BlockBreakInfo::instant(), "no", 102, 9)); - self::register(new Element(new BID(Ids::ELEMENT_103), "Lawrencium", BlockBreakInfo::instant(), "lr", 103, 9)); - self::register(new Element(new BID(Ids::ELEMENT_104), "Rutherfordium", BlockBreakInfo::instant(), "rf", 104, 2)); - self::register(new Element(new BID(Ids::ELEMENT_105), "Dubnium", BlockBreakInfo::instant(), "db", 105, 2)); - self::register(new Element(new BID(Ids::ELEMENT_106), "Seaborgium", BlockBreakInfo::instant(), "sg", 106, 2)); - self::register(new Element(new BID(Ids::ELEMENT_107), "Bohrium", BlockBreakInfo::instant(), "bh", 107, 2)); - self::register(new Element(new BID(Ids::ELEMENT_108), "Hassium", BlockBreakInfo::instant(), "hs", 108, 2)); - self::register(new Element(new BID(Ids::ELEMENT_109), "Meitnerium", BlockBreakInfo::instant(), "mt", 109, 2)); - self::register(new Element(new BID(Ids::ELEMENT_110), "Darmstadtium", BlockBreakInfo::instant(), "ds", 110, 2)); - self::register(new Element(new BID(Ids::ELEMENT_111), "Roentgenium", BlockBreakInfo::instant(), "rg", 111, 2)); - self::register(new Element(new BID(Ids::ELEMENT_112), "Copernicium", BlockBreakInfo::instant(), "cn", 112, 2)); - self::register(new Element(new BID(Ids::ELEMENT_113), "Nihonium", BlockBreakInfo::instant(), "nh", 113, 3)); - self::register(new Element(new BID(Ids::ELEMENT_114), "Flerovium", BlockBreakInfo::instant(), "fl", 114, 3)); - self::register(new Element(new BID(Ids::ELEMENT_115), "Moscovium", BlockBreakInfo::instant(), "mc", 115, 3)); - self::register(new Element(new BID(Ids::ELEMENT_116), "Livermorium", BlockBreakInfo::instant(), "lv", 116, 3)); - self::register(new Element(new BID(Ids::ELEMENT_117), "Tennessine", BlockBreakInfo::instant(), "ts", 117, 6)); - self::register(new Element(new BID(Ids::ELEMENT_118), "Oganesson", BlockBreakInfo::instant(), "og", 118, 7)); - } - - public static function isInit() : bool{ - return self::$fullList !== null; + $this->register(new Element(new BID(Ids::ELEMENT_1), "Hydrogen", BlockBreakInfo::instant(), "h", 1, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_2), "Helium", BlockBreakInfo::instant(), "he", 2, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_3), "Lithium", BlockBreakInfo::instant(), "li", 3, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_4), "Beryllium", BlockBreakInfo::instant(), "be", 4, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_5), "Boron", BlockBreakInfo::instant(), "b", 5, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_6), "Carbon", BlockBreakInfo::instant(), "c", 6, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_7), "Nitrogen", BlockBreakInfo::instant(), "n", 7, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_8), "Oxygen", BlockBreakInfo::instant(), "o", 8, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_9), "Fluorine", BlockBreakInfo::instant(), "f", 9, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_10), "Neon", BlockBreakInfo::instant(), "ne", 10, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_11), "Sodium", BlockBreakInfo::instant(), "na", 11, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_12), "Magnesium", BlockBreakInfo::instant(), "mg", 12, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_13), "Aluminum", BlockBreakInfo::instant(), "al", 13, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_14), "Silicon", BlockBreakInfo::instant(), "si", 14, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_15), "Phosphorus", BlockBreakInfo::instant(), "p", 15, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_16), "Sulfur", BlockBreakInfo::instant(), "s", 16, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_17), "Chlorine", BlockBreakInfo::instant(), "cl", 17, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_18), "Argon", BlockBreakInfo::instant(), "ar", 18, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_19), "Potassium", BlockBreakInfo::instant(), "k", 19, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_20), "Calcium", BlockBreakInfo::instant(), "ca", 20, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_21), "Scandium", BlockBreakInfo::instant(), "sc", 21, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_22), "Titanium", BlockBreakInfo::instant(), "ti", 22, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_23), "Vanadium", BlockBreakInfo::instant(), "v", 23, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_24), "Chromium", BlockBreakInfo::instant(), "cr", 24, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_25), "Manganese", BlockBreakInfo::instant(), "mn", 25, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_26), "Iron", BlockBreakInfo::instant(), "fe", 26, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_27), "Cobalt", BlockBreakInfo::instant(), "co", 27, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_28), "Nickel", BlockBreakInfo::instant(), "ni", 28, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_29), "Copper", BlockBreakInfo::instant(), "cu", 29, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_30), "Zinc", BlockBreakInfo::instant(), "zn", 30, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_31), "Gallium", BlockBreakInfo::instant(), "ga", 31, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_32), "Germanium", BlockBreakInfo::instant(), "ge", 32, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_33), "Arsenic", BlockBreakInfo::instant(), "as", 33, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_34), "Selenium", BlockBreakInfo::instant(), "se", 34, 5)); + $this->register(new Element(new BID(Ids::ELEMENT_35), "Bromine", BlockBreakInfo::instant(), "br", 35, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_36), "Krypton", BlockBreakInfo::instant(), "kr", 36, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_37), "Rubidium", BlockBreakInfo::instant(), "rb", 37, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_38), "Strontium", BlockBreakInfo::instant(), "sr", 38, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_39), "Yttrium", BlockBreakInfo::instant(), "y", 39, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_40), "Zirconium", BlockBreakInfo::instant(), "zr", 40, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_41), "Niobium", BlockBreakInfo::instant(), "nb", 41, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_42), "Molybdenum", BlockBreakInfo::instant(), "mo", 42, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_43), "Technetium", BlockBreakInfo::instant(), "tc", 43, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_44), "Ruthenium", BlockBreakInfo::instant(), "ru", 44, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_45), "Rhodium", BlockBreakInfo::instant(), "rh", 45, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_46), "Palladium", BlockBreakInfo::instant(), "pd", 46, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_47), "Silver", BlockBreakInfo::instant(), "ag", 47, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_48), "Cadmium", BlockBreakInfo::instant(), "cd", 48, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_49), "Indium", BlockBreakInfo::instant(), "in", 49, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_50), "Tin", BlockBreakInfo::instant(), "sn", 50, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_51), "Antimony", BlockBreakInfo::instant(), "sb", 51, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_52), "Tellurium", BlockBreakInfo::instant(), "te", 52, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_53), "Iodine", BlockBreakInfo::instant(), "i", 53, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_54), "Xenon", BlockBreakInfo::instant(), "xe", 54, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_55), "Cesium", BlockBreakInfo::instant(), "cs", 55, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_56), "Barium", BlockBreakInfo::instant(), "ba", 56, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_57), "Lanthanum", BlockBreakInfo::instant(), "la", 57, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_58), "Cerium", BlockBreakInfo::instant(), "ce", 58, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_59), "Praseodymium", BlockBreakInfo::instant(), "pr", 59, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_60), "Neodymium", BlockBreakInfo::instant(), "nd", 60, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_61), "Promethium", BlockBreakInfo::instant(), "pm", 61, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_62), "Samarium", BlockBreakInfo::instant(), "sm", 62, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_63), "Europium", BlockBreakInfo::instant(), "eu", 63, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_64), "Gadolinium", BlockBreakInfo::instant(), "gd", 64, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_65), "Terbium", BlockBreakInfo::instant(), "tb", 65, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_66), "Dysprosium", BlockBreakInfo::instant(), "dy", 66, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_67), "Holmium", BlockBreakInfo::instant(), "ho", 67, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_68), "Erbium", BlockBreakInfo::instant(), "er", 68, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_69), "Thulium", BlockBreakInfo::instant(), "tm", 69, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_70), "Ytterbium", BlockBreakInfo::instant(), "yb", 70, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_71), "Lutetium", BlockBreakInfo::instant(), "lu", 71, 8)); + $this->register(new Element(new BID(Ids::ELEMENT_72), "Hafnium", BlockBreakInfo::instant(), "hf", 72, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_73), "Tantalum", BlockBreakInfo::instant(), "ta", 73, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_74), "Tungsten", BlockBreakInfo::instant(), "w", 74, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_75), "Rhenium", BlockBreakInfo::instant(), "re", 75, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_76), "Osmium", BlockBreakInfo::instant(), "os", 76, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_77), "Iridium", BlockBreakInfo::instant(), "ir", 77, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_78), "Platinum", BlockBreakInfo::instant(), "pt", 78, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_79), "Gold", BlockBreakInfo::instant(), "au", 79, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_80), "Mercury", BlockBreakInfo::instant(), "hg", 80, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_81), "Thallium", BlockBreakInfo::instant(), "tl", 81, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_82), "Lead", BlockBreakInfo::instant(), "pb", 82, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_83), "Bismuth", BlockBreakInfo::instant(), "bi", 83, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_84), "Polonium", BlockBreakInfo::instant(), "po", 84, 4)); + $this->register(new Element(new BID(Ids::ELEMENT_85), "Astatine", BlockBreakInfo::instant(), "at", 85, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_86), "Radon", BlockBreakInfo::instant(), "rn", 86, 7)); + $this->register(new Element(new BID(Ids::ELEMENT_87), "Francium", BlockBreakInfo::instant(), "fr", 87, 0)); + $this->register(new Element(new BID(Ids::ELEMENT_88), "Radium", BlockBreakInfo::instant(), "ra", 88, 1)); + $this->register(new Element(new BID(Ids::ELEMENT_89), "Actinium", BlockBreakInfo::instant(), "ac", 89, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_90), "Thorium", BlockBreakInfo::instant(), "th", 90, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_91), "Protactinium", BlockBreakInfo::instant(), "pa", 91, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_92), "Uranium", BlockBreakInfo::instant(), "u", 92, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_93), "Neptunium", BlockBreakInfo::instant(), "np", 93, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_94), "Plutonium", BlockBreakInfo::instant(), "pu", 94, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_95), "Americium", BlockBreakInfo::instant(), "am", 95, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_96), "Curium", BlockBreakInfo::instant(), "cm", 96, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_97), "Berkelium", BlockBreakInfo::instant(), "bk", 97, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_98), "Californium", BlockBreakInfo::instant(), "cf", 98, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_99), "Einsteinium", BlockBreakInfo::instant(), "es", 99, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_100), "Fermium", BlockBreakInfo::instant(), "fm", 100, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_101), "Mendelevium", BlockBreakInfo::instant(), "md", 101, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_102), "Nobelium", BlockBreakInfo::instant(), "no", 102, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_103), "Lawrencium", BlockBreakInfo::instant(), "lr", 103, 9)); + $this->register(new Element(new BID(Ids::ELEMENT_104), "Rutherfordium", BlockBreakInfo::instant(), "rf", 104, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_105), "Dubnium", BlockBreakInfo::instant(), "db", 105, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_106), "Seaborgium", BlockBreakInfo::instant(), "sg", 106, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_107), "Bohrium", BlockBreakInfo::instant(), "bh", 107, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_108), "Hassium", BlockBreakInfo::instant(), "hs", 108, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_109), "Meitnerium", BlockBreakInfo::instant(), "mt", 109, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_110), "Darmstadtium", BlockBreakInfo::instant(), "ds", 110, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_111), "Roentgenium", BlockBreakInfo::instant(), "rg", 111, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_112), "Copernicium", BlockBreakInfo::instant(), "cn", 112, 2)); + $this->register(new Element(new BID(Ids::ELEMENT_113), "Nihonium", BlockBreakInfo::instant(), "nh", 113, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_114), "Flerovium", BlockBreakInfo::instant(), "fl", 114, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_115), "Moscovium", BlockBreakInfo::instant(), "mc", 115, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_116), "Livermorium", BlockBreakInfo::instant(), "lv", 116, 3)); + $this->register(new Element(new BID(Ids::ELEMENT_117), "Tennessine", BlockBreakInfo::instant(), "ts", 117, 6)); + $this->register(new Element(new BID(Ids::ELEMENT_118), "Oganesson", BlockBreakInfo::instant(), "og", 118, 7)); } /** @@ -777,7 +779,7 @@ class BlockFactory{ * @throws \RuntimeException if something attempted to override an already-registered block without specifying the * $override parameter. */ - public static function register(Block $block, bool $override = false) : void{ + public function register(Block $block, bool $override = false) : void{ $variant = $block->getIdInfo()->getVariant(); $stateMask = $block->getStateBitmask(); @@ -786,7 +788,7 @@ class BlockFactory{ } foreach($block->getIdInfo()->getAllBlockIds() as $id){ - if(!$override and self::isRegistered($id, $variant)){ + if(!$override and $this->isRegistered($id, $variant)){ throw new \InvalidArgumentException("Block registration $id:$variant conflicts with an existing block"); } @@ -795,7 +797,7 @@ class BlockFactory{ continue; } - if(!$override and self::isRegistered($id, $m)){ + if(!$override and $this->isRegistered($id, $m)){ throw new \InvalidArgumentException("Block registration " . get_class($block) . " has states which conflict with other blocks"); } @@ -811,33 +813,33 @@ class BlockFactory{ continue; } - self::fillStaticArrays($index, $v); + $this->fillStaticArrays($index, $v); } - if(!self::isRegistered($id, $variant)){ - self::fillStaticArrays(($id << 4) | $variant, $block); //register default state mapped to variant, for blocks which don't use 0 as valid state + if(!$this->isRegistered($id, $variant)){ + $this->fillStaticArrays(($id << 4) | $variant, $block); //register default state mapped to variant, for blocks which don't use 0 as valid state } } } - public static function remap(int $id, int $meta, Block $block) : void{ - if(self::isRegistered($id, $meta)){ + public function remap(int $id, int $meta, Block $block) : void{ + if($this->isRegistered($id, $meta)){ throw new \InvalidArgumentException("$id:$meta is already mapped"); } - self::fillStaticArrays(($id << 4) | $meta, $block); + $this->fillStaticArrays(($id << 4) | $meta, $block); } - private static function fillStaticArrays(int $index, Block $block) : void{ - self::$fullList[$index] = $block; - self::$lightFilter[$index] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter - self::$diffusesSkyLight[$index] = $block->diffusesSkyLight(); - self::$blastResistance[$index] = $block->getBreakInfo()->getBlastResistance(); + private function fillStaticArrays(int $index, Block $block) : void{ + $this->fullList[$index] = $block; + $this->lightFilter[$index] = min(15, $block->getLightFilter() + 1); //opacity plus 1 standard light filter + $this->diffusesSkyLight[$index] = $block->diffusesSkyLight(); + $this->blastResistance[$index] = $block->getBreakInfo()->getBlastResistance(); } /** * Returns a new Block instance with the specified ID, meta and position. */ - public static function get(int $id, int $meta = 0) : Block{ + public function get(int $id, int $meta = 0) : Block{ if($meta < 0 or $meta > 0xf){ throw new \InvalidArgumentException("Block meta value $meta is out of bounds"); } @@ -846,8 +848,8 @@ class BlockFactory{ $block = null; try{ $index = ($id << 4) | $meta; - if(self::$fullList[$index] !== null){ - $block = clone self::$fullList[$index]; + if($this->fullList[$index] !== null){ + $block = clone $this->fullList[$index]; } }catch(\RuntimeException $e){ throw new \InvalidArgumentException("Block ID $id is out of bounds"); @@ -860,22 +862,22 @@ class BlockFactory{ return $block; } - public static function fromFullBlock(int $fullState) : Block{ - return self::get($fullState >> 4, $fullState & 0xf); + public function fromFullBlock(int $fullState) : Block{ + return $this->get($fullState >> 4, $fullState & 0xf); } /** * Returns whether a specified block state is already registered in the block factory. */ - public static function isRegistered(int $id, int $meta = 0) : bool{ - $b = self::$fullList[($id << 4) | $meta]; + public function isRegistered(int $id, int $meta = 0) : bool{ + $b = $this->fullList[($id << 4) | $meta]; return $b !== null and !($b instanceof UnknownBlock); } /** * @return Block[] */ - public static function getAllKnownStates() : array{ - return array_filter(self::$fullList->toArray(), function(?Block $v) : bool{ return $v !== null; }); + public function getAllKnownStates() : array{ + return array_filter($this->fullList->toArray(), function(?Block $v) : bool{ return $v !== null; }); } } diff --git a/src/block/ConcretePowder.php b/src/block/ConcretePowder.php index 63cf6c993..2154acce1 100644 --- a/src/block/ConcretePowder.php +++ b/src/block/ConcretePowder.php @@ -54,7 +54,7 @@ class ConcretePowder extends Opaque implements Fallable{ continue; } if($this->getSide($i) instanceof Water){ - return BlockFactory::get(BlockLegacyIds::CONCRETE, $this->idInfo->getVariant()); + return BlockFactory::getInstance()->get(BlockLegacyIds::CONCRETE, $this->idInfo->getVariant()); } } diff --git a/src/block/VanillaBlocks.php b/src/block/VanillaBlocks.php index fc85d0d65..5da766624 100644 --- a/src/block/VanillaBlocks.php +++ b/src/block/VanillaBlocks.php @@ -689,636 +689,637 @@ final class VanillaBlocks{ } protected static function setup() : void{ - self::register("acacia_button", BlockFactory::get(395)); - self::register("acacia_door", BlockFactory::get(196)); - self::register("acacia_fence", BlockFactory::get(85, 4)); - self::register("acacia_fence_gate", BlockFactory::get(187)); - self::register("acacia_leaves", BlockFactory::get(161)); - self::register("acacia_log", BlockFactory::get(162)); - self::register("acacia_planks", BlockFactory::get(5, 4)); - self::register("acacia_pressure_plate", BlockFactory::get(405)); - self::register("acacia_sapling", BlockFactory::get(6, 4)); - self::register("acacia_sign", BlockFactory::get(445)); - self::register("acacia_slab", BlockFactory::get(158, 4)); - self::register("acacia_stairs", BlockFactory::get(163)); - self::register("acacia_trapdoor", BlockFactory::get(400)); - self::register("acacia_wood", BlockFactory::get(467, 4)); - self::register("activator_rail", BlockFactory::get(126)); - self::register("air", BlockFactory::get(0)); - self::register("allium", BlockFactory::get(38, 2)); - self::register("andesite", BlockFactory::get(1, 5)); - self::register("andesite_slab", BlockFactory::get(417, 3)); - self::register("andesite_stairs", BlockFactory::get(426)); - self::register("andesite_wall", BlockFactory::get(139, 4)); - self::register("anvil", BlockFactory::get(145)); - self::register("azure_bluet", BlockFactory::get(38, 3)); - self::register("banner", BlockFactory::get(176)); - self::register("barrier", BlockFactory::get(416)); - self::register("bed", BlockFactory::get(26)); - self::register("bedrock", BlockFactory::get(7)); - self::register("beetroots", BlockFactory::get(244)); - self::register("birch_button", BlockFactory::get(396)); - self::register("birch_door", BlockFactory::get(194)); - self::register("birch_fence", BlockFactory::get(85, 2)); - self::register("birch_fence_gate", BlockFactory::get(184)); - self::register("birch_leaves", BlockFactory::get(18, 2)); - self::register("birch_log", BlockFactory::get(17, 2)); - self::register("birch_planks", BlockFactory::get(5, 2)); - self::register("birch_pressure_plate", BlockFactory::get(406)); - self::register("birch_sapling", BlockFactory::get(6, 2)); - self::register("birch_sign", BlockFactory::get(441)); - self::register("birch_slab", BlockFactory::get(158, 2)); - self::register("birch_stairs", BlockFactory::get(135)); - self::register("birch_trapdoor", BlockFactory::get(401)); - self::register("birch_wood", BlockFactory::get(467, 2)); - self::register("black_carpet", BlockFactory::get(171, 15)); - self::register("black_concrete", BlockFactory::get(236, 15)); - self::register("black_concrete_powder", BlockFactory::get(237, 15)); - self::register("black_glazed_terracotta", BlockFactory::get(235, 2)); - self::register("black_stained_clay", BlockFactory::get(159, 15)); - self::register("black_stained_glass", BlockFactory::get(241, 15)); - self::register("black_stained_glass_pane", BlockFactory::get(160, 15)); - self::register("black_wool", BlockFactory::get(35, 15)); - self::register("blue_carpet", BlockFactory::get(171, 11)); - self::register("blue_concrete", BlockFactory::get(236, 11)); - self::register("blue_concrete_powder", BlockFactory::get(237, 11)); - self::register("blue_glazed_terracotta", BlockFactory::get(231, 2)); - self::register("blue_ice", BlockFactory::get(266)); - self::register("blue_orchid", BlockFactory::get(38, 1)); - self::register("blue_stained_clay", BlockFactory::get(159, 11)); - self::register("blue_stained_glass", BlockFactory::get(241, 11)); - self::register("blue_stained_glass_pane", BlockFactory::get(160, 11)); - self::register("blue_torch", BlockFactory::get(204, 5)); - self::register("blue_wool", BlockFactory::get(35, 11)); - self::register("bone_block", BlockFactory::get(216)); - self::register("bookshelf", BlockFactory::get(47)); - self::register("brewing_stand", BlockFactory::get(117)); - self::register("brick_slab", BlockFactory::get(44, 4)); - self::register("brick_stairs", BlockFactory::get(108)); - self::register("brick_wall", BlockFactory::get(139, 6)); - self::register("bricks", BlockFactory::get(45)); - self::register("brown_carpet", BlockFactory::get(171, 12)); - self::register("brown_concrete", BlockFactory::get(236, 12)); - self::register("brown_concrete_powder", BlockFactory::get(237, 12)); - self::register("brown_glazed_terracotta", BlockFactory::get(232, 2)); - self::register("brown_mushroom", BlockFactory::get(39)); - self::register("brown_mushroom_block", BlockFactory::get(99)); - self::register("brown_stained_clay", BlockFactory::get(159, 12)); - self::register("brown_stained_glass", BlockFactory::get(241, 12)); - self::register("brown_stained_glass_pane", BlockFactory::get(160, 12)); - self::register("brown_wool", BlockFactory::get(35, 12)); - self::register("cactus", BlockFactory::get(81)); - self::register("cake", BlockFactory::get(92)); - self::register("carrots", BlockFactory::get(141)); - self::register("carved_pumpkin", BlockFactory::get(410)); - self::register("chest", BlockFactory::get(54, 2)); - self::register("chiseled_quartz", BlockFactory::get(155, 1)); - self::register("chiseled_red_sandstone", BlockFactory::get(179, 1)); - self::register("chiseled_sandstone", BlockFactory::get(24, 1)); - self::register("chiseled_stone_bricks", BlockFactory::get(98, 3)); - self::register("clay", BlockFactory::get(82)); - self::register("coal", BlockFactory::get(173)); - self::register("coal_ore", BlockFactory::get(16)); - self::register("coarse_dirt", BlockFactory::get(3, 1)); - self::register("cobblestone", BlockFactory::get(4)); - self::register("cobblestone_slab", BlockFactory::get(44, 3)); - self::register("cobblestone_stairs", BlockFactory::get(67)); - self::register("cobblestone_wall", BlockFactory::get(139)); - self::register("cobweb", BlockFactory::get(30)); - self::register("cocoa_pod", BlockFactory::get(127)); - self::register("cornflower", BlockFactory::get(38, 9)); - self::register("cracked_stone_bricks", BlockFactory::get(98, 2)); - self::register("crafting_table", BlockFactory::get(58)); - self::register("cut_red_sandstone", BlockFactory::get(179, 2)); - self::register("cut_red_sandstone_slab", BlockFactory::get(421, 4)); - self::register("cut_sandstone", BlockFactory::get(24, 2)); - self::register("cut_sandstone_slab", BlockFactory::get(421, 3)); - self::register("cyan_carpet", BlockFactory::get(171, 9)); - self::register("cyan_concrete", BlockFactory::get(236, 9)); - self::register("cyan_concrete_powder", BlockFactory::get(237, 9)); - self::register("cyan_glazed_terracotta", BlockFactory::get(229, 2)); - self::register("cyan_stained_clay", BlockFactory::get(159, 9)); - self::register("cyan_stained_glass", BlockFactory::get(241, 9)); - self::register("cyan_stained_glass_pane", BlockFactory::get(160, 9)); - self::register("cyan_wool", BlockFactory::get(35, 9)); - self::register("dandelion", BlockFactory::get(37)); - self::register("dark_oak_button", BlockFactory::get(397)); - self::register("dark_oak_door", BlockFactory::get(197)); - self::register("dark_oak_fence", BlockFactory::get(85, 5)); - self::register("dark_oak_fence_gate", BlockFactory::get(186)); - self::register("dark_oak_leaves", BlockFactory::get(161, 1)); - self::register("dark_oak_log", BlockFactory::get(162, 1)); - self::register("dark_oak_planks", BlockFactory::get(5, 5)); - self::register("dark_oak_pressure_plate", BlockFactory::get(407)); - self::register("dark_oak_sapling", BlockFactory::get(6, 5)); - self::register("dark_oak_sign", BlockFactory::get(447)); - self::register("dark_oak_slab", BlockFactory::get(158, 5)); - self::register("dark_oak_stairs", BlockFactory::get(164)); - self::register("dark_oak_trapdoor", BlockFactory::get(402)); - self::register("dark_oak_wood", BlockFactory::get(467, 5)); - self::register("dark_prismarine", BlockFactory::get(168, 1)); - self::register("dark_prismarine_slab", BlockFactory::get(182, 3)); - self::register("dark_prismarine_stairs", BlockFactory::get(258)); - self::register("daylight_sensor", BlockFactory::get(151)); - self::register("dead_bush", BlockFactory::get(32)); - self::register("detector_rail", BlockFactory::get(28)); - self::register("diamond", BlockFactory::get(57)); - self::register("diamond_ore", BlockFactory::get(56)); - self::register("diorite", BlockFactory::get(1, 3)); - self::register("diorite_slab", BlockFactory::get(417, 4)); - self::register("diorite_stairs", BlockFactory::get(425)); - self::register("diorite_wall", BlockFactory::get(139, 3)); - self::register("dirt", BlockFactory::get(3)); - self::register("double_tallgrass", BlockFactory::get(175, 2)); - self::register("dragon_egg", BlockFactory::get(122)); - self::register("dried_kelp", BlockFactory::get(394)); - self::register("element_actinium", BlockFactory::get(355)); - self::register("element_aluminum", BlockFactory::get(279)); - self::register("element_americium", BlockFactory::get(361)); - self::register("element_antimony", BlockFactory::get(317)); - self::register("element_argon", BlockFactory::get(284)); - self::register("element_arsenic", BlockFactory::get(299)); - self::register("element_astatine", BlockFactory::get(351)); - self::register("element_barium", BlockFactory::get(322)); - self::register("element_berkelium", BlockFactory::get(363)); - self::register("element_beryllium", BlockFactory::get(270)); - self::register("element_bismuth", BlockFactory::get(349)); - self::register("element_bohrium", BlockFactory::get(373)); - self::register("element_boron", BlockFactory::get(271)); - self::register("element_bromine", BlockFactory::get(301)); - self::register("element_cadmium", BlockFactory::get(314)); - self::register("element_calcium", BlockFactory::get(286)); - self::register("element_californium", BlockFactory::get(364)); - self::register("element_carbon", BlockFactory::get(272)); - self::register("element_cerium", BlockFactory::get(324)); - self::register("element_cesium", BlockFactory::get(321)); - self::register("element_chlorine", BlockFactory::get(283)); - self::register("element_chromium", BlockFactory::get(290)); - self::register("element_cobalt", BlockFactory::get(293)); - self::register("element_copernicium", BlockFactory::get(378)); - self::register("element_copper", BlockFactory::get(295)); - self::register("element_curium", BlockFactory::get(362)); - self::register("element_darmstadtium", BlockFactory::get(376)); - self::register("element_dubnium", BlockFactory::get(371)); - self::register("element_dysprosium", BlockFactory::get(332)); - self::register("element_einsteinium", BlockFactory::get(365)); - self::register("element_erbium", BlockFactory::get(334)); - self::register("element_europium", BlockFactory::get(329)); - self::register("element_fermium", BlockFactory::get(366)); - self::register("element_flerovium", BlockFactory::get(380)); - self::register("element_fluorine", BlockFactory::get(275)); - self::register("element_francium", BlockFactory::get(353)); - self::register("element_gadolinium", BlockFactory::get(330)); - self::register("element_gallium", BlockFactory::get(297)); - self::register("element_germanium", BlockFactory::get(298)); - self::register("element_gold", BlockFactory::get(345)); - self::register("element_hafnium", BlockFactory::get(338)); - self::register("element_hassium", BlockFactory::get(374)); - self::register("element_helium", BlockFactory::get(268)); - self::register("element_holmium", BlockFactory::get(333)); - self::register("element_hydrogen", BlockFactory::get(267)); - self::register("element_indium", BlockFactory::get(315)); - self::register("element_iodine", BlockFactory::get(319)); - self::register("element_iridium", BlockFactory::get(343)); - self::register("element_iron", BlockFactory::get(292)); - self::register("element_krypton", BlockFactory::get(302)); - self::register("element_lanthanum", BlockFactory::get(323)); - self::register("element_lawrencium", BlockFactory::get(369)); - self::register("element_lead", BlockFactory::get(348)); - self::register("element_lithium", BlockFactory::get(269)); - self::register("element_livermorium", BlockFactory::get(382)); - self::register("element_lutetium", BlockFactory::get(337)); - self::register("element_magnesium", BlockFactory::get(278)); - self::register("element_manganese", BlockFactory::get(291)); - self::register("element_meitnerium", BlockFactory::get(375)); - self::register("element_mendelevium", BlockFactory::get(367)); - self::register("element_mercury", BlockFactory::get(346)); - self::register("element_molybdenum", BlockFactory::get(308)); - self::register("element_moscovium", BlockFactory::get(381)); - self::register("element_neodymium", BlockFactory::get(326)); - self::register("element_neon", BlockFactory::get(276)); - self::register("element_neptunium", BlockFactory::get(359)); - self::register("element_nickel", BlockFactory::get(294)); - self::register("element_nihonium", BlockFactory::get(379)); - self::register("element_niobium", BlockFactory::get(307)); - self::register("element_nitrogen", BlockFactory::get(273)); - self::register("element_nobelium", BlockFactory::get(368)); - self::register("element_oganesson", BlockFactory::get(384)); - self::register("element_osmium", BlockFactory::get(342)); - self::register("element_oxygen", BlockFactory::get(274)); - self::register("element_palladium", BlockFactory::get(312)); - self::register("element_phosphorus", BlockFactory::get(281)); - self::register("element_platinum", BlockFactory::get(344)); - self::register("element_plutonium", BlockFactory::get(360)); - self::register("element_polonium", BlockFactory::get(350)); - self::register("element_potassium", BlockFactory::get(285)); - self::register("element_praseodymium", BlockFactory::get(325)); - self::register("element_promethium", BlockFactory::get(327)); - self::register("element_protactinium", BlockFactory::get(357)); - self::register("element_radium", BlockFactory::get(354)); - self::register("element_radon", BlockFactory::get(352)); - self::register("element_rhenium", BlockFactory::get(341)); - self::register("element_rhodium", BlockFactory::get(311)); - self::register("element_roentgenium", BlockFactory::get(377)); - self::register("element_rubidium", BlockFactory::get(303)); - self::register("element_ruthenium", BlockFactory::get(310)); - self::register("element_rutherfordium", BlockFactory::get(370)); - self::register("element_samarium", BlockFactory::get(328)); - self::register("element_scandium", BlockFactory::get(287)); - self::register("element_seaborgium", BlockFactory::get(372)); - self::register("element_selenium", BlockFactory::get(300)); - self::register("element_silicon", BlockFactory::get(280)); - self::register("element_silver", BlockFactory::get(313)); - self::register("element_sodium", BlockFactory::get(277)); - self::register("element_strontium", BlockFactory::get(304)); - self::register("element_sulfur", BlockFactory::get(282)); - self::register("element_tantalum", BlockFactory::get(339)); - self::register("element_technetium", BlockFactory::get(309)); - self::register("element_tellurium", BlockFactory::get(318)); - self::register("element_tennessine", BlockFactory::get(383)); - self::register("element_terbium", BlockFactory::get(331)); - self::register("element_thallium", BlockFactory::get(347)); - self::register("element_thorium", BlockFactory::get(356)); - self::register("element_thulium", BlockFactory::get(335)); - self::register("element_tin", BlockFactory::get(316)); - self::register("element_titanium", BlockFactory::get(288)); - self::register("element_tungsten", BlockFactory::get(340)); - self::register("element_uranium", BlockFactory::get(358)); - self::register("element_vanadium", BlockFactory::get(289)); - self::register("element_xenon", BlockFactory::get(320)); - self::register("element_ytterbium", BlockFactory::get(336)); - self::register("element_yttrium", BlockFactory::get(305)); - self::register("element_zero", BlockFactory::get(36)); - self::register("element_zinc", BlockFactory::get(296)); - self::register("element_zirconium", BlockFactory::get(306)); - self::register("emerald", BlockFactory::get(133)); - self::register("emerald_ore", BlockFactory::get(129)); - self::register("enchanting_table", BlockFactory::get(116)); - self::register("end_portal_frame", BlockFactory::get(120)); - self::register("end_rod", BlockFactory::get(208)); - self::register("end_stone", BlockFactory::get(121)); - self::register("end_stone_brick_slab", BlockFactory::get(417)); - self::register("end_stone_brick_stairs", BlockFactory::get(433)); - self::register("end_stone_brick_wall", BlockFactory::get(139, 10)); - self::register("end_stone_bricks", BlockFactory::get(206)); - self::register("ender_chest", BlockFactory::get(130, 2)); - self::register("fake_wooden_slab", BlockFactory::get(44, 2)); - self::register("farmland", BlockFactory::get(60)); - self::register("fern", BlockFactory::get(31, 2)); - self::register("fire", BlockFactory::get(51)); - self::register("flower_pot", BlockFactory::get(140)); - self::register("frosted_ice", BlockFactory::get(207)); - self::register("furnace", BlockFactory::get(61, 2)); - self::register("glass", BlockFactory::get(20)); - self::register("glass_pane", BlockFactory::get(102)); - self::register("glowing_obsidian", BlockFactory::get(246)); - self::register("glowstone", BlockFactory::get(89)); - self::register("gold", BlockFactory::get(41)); - self::register("gold_ore", BlockFactory::get(14)); - self::register("granite", BlockFactory::get(1, 1)); - self::register("granite_slab", BlockFactory::get(417, 6)); - self::register("granite_stairs", BlockFactory::get(424)); - self::register("granite_wall", BlockFactory::get(139, 2)); - self::register("grass", BlockFactory::get(2)); - self::register("grass_path", BlockFactory::get(198)); - self::register("gravel", BlockFactory::get(13)); - self::register("gray_carpet", BlockFactory::get(171, 7)); - self::register("gray_concrete", BlockFactory::get(236, 7)); - self::register("gray_concrete_powder", BlockFactory::get(237, 7)); - self::register("gray_glazed_terracotta", BlockFactory::get(227, 2)); - self::register("gray_stained_clay", BlockFactory::get(159, 7)); - self::register("gray_stained_glass", BlockFactory::get(241, 7)); - self::register("gray_stained_glass_pane", BlockFactory::get(160, 7)); - self::register("gray_wool", BlockFactory::get(35, 7)); - self::register("green_carpet", BlockFactory::get(171, 13)); - self::register("green_concrete", BlockFactory::get(236, 13)); - self::register("green_concrete_powder", BlockFactory::get(237, 13)); - self::register("green_glazed_terracotta", BlockFactory::get(233, 2)); - self::register("green_stained_clay", BlockFactory::get(159, 13)); - self::register("green_stained_glass", BlockFactory::get(241, 13)); - self::register("green_stained_glass_pane", BlockFactory::get(160, 13)); - self::register("green_torch", BlockFactory::get(202, 13)); - self::register("green_wool", BlockFactory::get(35, 13)); - self::register("hardened_black_stained_glass", BlockFactory::get(254, 15)); - self::register("hardened_black_stained_glass_pane", BlockFactory::get(191, 15)); - self::register("hardened_blue_stained_glass", BlockFactory::get(254, 11)); - self::register("hardened_blue_stained_glass_pane", BlockFactory::get(191, 11)); - self::register("hardened_brown_stained_glass", BlockFactory::get(254, 12)); - self::register("hardened_brown_stained_glass_pane", BlockFactory::get(191, 12)); - self::register("hardened_clay", BlockFactory::get(172)); - self::register("hardened_cyan_stained_glass", BlockFactory::get(254, 9)); - self::register("hardened_cyan_stained_glass_pane", BlockFactory::get(191, 9)); - self::register("hardened_glass", BlockFactory::get(253)); - self::register("hardened_glass_pane", BlockFactory::get(190)); - self::register("hardened_gray_stained_glass", BlockFactory::get(254, 7)); - self::register("hardened_gray_stained_glass_pane", BlockFactory::get(191, 7)); - self::register("hardened_green_stained_glass", BlockFactory::get(254, 13)); - self::register("hardened_green_stained_glass_pane", BlockFactory::get(191, 13)); - self::register("hardened_light_blue_stained_glass", BlockFactory::get(254, 3)); - self::register("hardened_light_blue_stained_glass_pane", BlockFactory::get(191, 3)); - self::register("hardened_light_gray_stained_glass", BlockFactory::get(254, 8)); - self::register("hardened_light_gray_stained_glass_pane", BlockFactory::get(191, 8)); - self::register("hardened_lime_stained_glass", BlockFactory::get(254, 5)); - self::register("hardened_lime_stained_glass_pane", BlockFactory::get(191, 5)); - self::register("hardened_magenta_stained_glass", BlockFactory::get(254, 2)); - self::register("hardened_magenta_stained_glass_pane", BlockFactory::get(191, 2)); - self::register("hardened_orange_stained_glass", BlockFactory::get(254, 1)); - self::register("hardened_orange_stained_glass_pane", BlockFactory::get(191, 1)); - self::register("hardened_pink_stained_glass", BlockFactory::get(254, 6)); - self::register("hardened_pink_stained_glass_pane", BlockFactory::get(191, 6)); - self::register("hardened_purple_stained_glass", BlockFactory::get(254, 10)); - self::register("hardened_purple_stained_glass_pane", BlockFactory::get(191, 10)); - self::register("hardened_red_stained_glass", BlockFactory::get(254, 14)); - self::register("hardened_red_stained_glass_pane", BlockFactory::get(191, 14)); - self::register("hardened_white_stained_glass", BlockFactory::get(254)); - self::register("hardened_white_stained_glass_pane", BlockFactory::get(191)); - self::register("hardened_yellow_stained_glass", BlockFactory::get(254, 4)); - self::register("hardened_yellow_stained_glass_pane", BlockFactory::get(191, 4)); - self::register("hay_bale", BlockFactory::get(170)); - self::register("hopper", BlockFactory::get(154)); - self::register("ice", BlockFactory::get(79)); - self::register("infested_chiseled_stone_brick", BlockFactory::get(97, 5)); - self::register("infested_cobblestone", BlockFactory::get(97, 1)); - self::register("infested_cracked_stone_brick", BlockFactory::get(97, 4)); - self::register("infested_mossy_stone_brick", BlockFactory::get(97, 3)); - self::register("infested_stone", BlockFactory::get(97)); - self::register("infested_stone_brick", BlockFactory::get(97, 2)); - self::register("info_update", BlockFactory::get(248)); - self::register("info_update2", BlockFactory::get(249)); - self::register("invisible_bedrock", BlockFactory::get(95)); - self::register("iron", BlockFactory::get(42)); - self::register("iron_bars", BlockFactory::get(101)); - self::register("iron_door", BlockFactory::get(71)); - self::register("iron_ore", BlockFactory::get(15)); - self::register("iron_trapdoor", BlockFactory::get(167)); - self::register("item_frame", BlockFactory::get(199)); - self::register("jungle_button", BlockFactory::get(398)); - self::register("jungle_door", BlockFactory::get(195)); - self::register("jungle_fence", BlockFactory::get(85, 3)); - self::register("jungle_fence_gate", BlockFactory::get(185)); - self::register("jungle_leaves", BlockFactory::get(18, 3)); - self::register("jungle_log", BlockFactory::get(17, 3)); - self::register("jungle_planks", BlockFactory::get(5, 3)); - self::register("jungle_pressure_plate", BlockFactory::get(408)); - self::register("jungle_sapling", BlockFactory::get(6, 3)); - self::register("jungle_sign", BlockFactory::get(443)); - self::register("jungle_slab", BlockFactory::get(158, 3)); - self::register("jungle_stairs", BlockFactory::get(136)); - self::register("jungle_trapdoor", BlockFactory::get(403)); - self::register("jungle_wood", BlockFactory::get(467, 3)); - self::register("ladder", BlockFactory::get(65, 2)); - self::register("lantern", BlockFactory::get(463)); - self::register("lapis_lazuli", BlockFactory::get(22)); - self::register("lapis_lazuli_ore", BlockFactory::get(21)); - self::register("large_fern", BlockFactory::get(175, 3)); - self::register("lava", BlockFactory::get(10)); - self::register("legacy_stonecutter", BlockFactory::get(245)); - self::register("lever", BlockFactory::get(69)); - self::register("light_blue_carpet", BlockFactory::get(171, 3)); - self::register("light_blue_concrete", BlockFactory::get(236, 3)); - self::register("light_blue_concrete_powder", BlockFactory::get(237, 3)); - self::register("light_blue_glazed_terracotta", BlockFactory::get(223, 2)); - self::register("light_blue_stained_clay", BlockFactory::get(159, 3)); - self::register("light_blue_stained_glass", BlockFactory::get(241, 3)); - self::register("light_blue_stained_glass_pane", BlockFactory::get(160, 3)); - self::register("light_blue_wool", BlockFactory::get(35, 3)); - self::register("light_gray_carpet", BlockFactory::get(171, 8)); - self::register("light_gray_concrete", BlockFactory::get(236, 8)); - self::register("light_gray_concrete_powder", BlockFactory::get(237, 8)); - self::register("light_gray_glazed_terracotta", BlockFactory::get(228, 2)); - self::register("light_gray_stained_clay", BlockFactory::get(159, 8)); - self::register("light_gray_stained_glass", BlockFactory::get(241, 8)); - self::register("light_gray_stained_glass_pane", BlockFactory::get(160, 8)); - self::register("light_gray_wool", BlockFactory::get(35, 8)); - self::register("lilac", BlockFactory::get(175, 1)); - self::register("lily_of_the_valley", BlockFactory::get(38, 10)); - self::register("lily_pad", BlockFactory::get(111)); - self::register("lime_carpet", BlockFactory::get(171, 5)); - self::register("lime_concrete", BlockFactory::get(236, 5)); - self::register("lime_concrete_powder", BlockFactory::get(237, 5)); - self::register("lime_glazed_terracotta", BlockFactory::get(225, 2)); - self::register("lime_stained_clay", BlockFactory::get(159, 5)); - self::register("lime_stained_glass", BlockFactory::get(241, 5)); - self::register("lime_stained_glass_pane", BlockFactory::get(160, 5)); - self::register("lime_wool", BlockFactory::get(35, 5)); - self::register("lit_pumpkin", BlockFactory::get(91)); - self::register("magenta_carpet", BlockFactory::get(171, 2)); - self::register("magenta_concrete", BlockFactory::get(236, 2)); - self::register("magenta_concrete_powder", BlockFactory::get(237, 2)); - self::register("magenta_glazed_terracotta", BlockFactory::get(222, 2)); - self::register("magenta_stained_clay", BlockFactory::get(159, 2)); - self::register("magenta_stained_glass", BlockFactory::get(241, 2)); - self::register("magenta_stained_glass_pane", BlockFactory::get(160, 2)); - self::register("magenta_wool", BlockFactory::get(35, 2)); - self::register("magma", BlockFactory::get(213)); - self::register("melon", BlockFactory::get(103)); - self::register("melon_stem", BlockFactory::get(105)); - self::register("mob_head", BlockFactory::get(144, 2)); - self::register("monster_spawner", BlockFactory::get(52)); - self::register("mossy_cobblestone", BlockFactory::get(48)); - self::register("mossy_cobblestone_slab", BlockFactory::get(182, 5)); - self::register("mossy_cobblestone_stairs", BlockFactory::get(434)); - self::register("mossy_cobblestone_wall", BlockFactory::get(139, 1)); - self::register("mossy_stone_brick_slab", BlockFactory::get(421)); - self::register("mossy_stone_brick_stairs", BlockFactory::get(430)); - self::register("mossy_stone_brick_wall", BlockFactory::get(139, 8)); - self::register("mossy_stone_bricks", BlockFactory::get(98, 1)); - self::register("mycelium", BlockFactory::get(110)); - self::register("nether_brick_fence", BlockFactory::get(113)); - self::register("nether_brick_slab", BlockFactory::get(44, 7)); - self::register("nether_brick_stairs", BlockFactory::get(114)); - self::register("nether_brick_wall", BlockFactory::get(139, 9)); - self::register("nether_bricks", BlockFactory::get(112)); - self::register("nether_portal", BlockFactory::get(90, 1)); - self::register("nether_quartz_ore", BlockFactory::get(153)); - self::register("nether_reactor_core", BlockFactory::get(247)); - self::register("nether_wart", BlockFactory::get(115)); - self::register("nether_wart_block", BlockFactory::get(214)); - self::register("netherrack", BlockFactory::get(87)); - self::register("note_block", BlockFactory::get(25)); - self::register("oak_button", BlockFactory::get(143)); - self::register("oak_door", BlockFactory::get(64)); - self::register("oak_fence", BlockFactory::get(85)); - self::register("oak_fence_gate", BlockFactory::get(107)); - self::register("oak_leaves", BlockFactory::get(18)); - self::register("oak_log", BlockFactory::get(17)); - self::register("oak_planks", BlockFactory::get(5)); - self::register("oak_pressure_plate", BlockFactory::get(72)); - self::register("oak_sapling", BlockFactory::get(6)); - self::register("oak_sign", BlockFactory::get(63)); - self::register("oak_slab", BlockFactory::get(158)); - self::register("oak_stairs", BlockFactory::get(53)); - self::register("oak_trapdoor", BlockFactory::get(96)); - self::register("oak_wood", BlockFactory::get(467)); - self::register("obsidian", BlockFactory::get(49)); - self::register("orange_carpet", BlockFactory::get(171, 1)); - self::register("orange_concrete", BlockFactory::get(236, 1)); - self::register("orange_concrete_powder", BlockFactory::get(237, 1)); - self::register("orange_glazed_terracotta", BlockFactory::get(221, 2)); - self::register("orange_stained_clay", BlockFactory::get(159, 1)); - self::register("orange_stained_glass", BlockFactory::get(241, 1)); - self::register("orange_stained_glass_pane", BlockFactory::get(160, 1)); - self::register("orange_tulip", BlockFactory::get(38, 5)); - self::register("orange_wool", BlockFactory::get(35, 1)); - self::register("oxeye_daisy", BlockFactory::get(38, 8)); - self::register("packed_ice", BlockFactory::get(174)); - self::register("peony", BlockFactory::get(175, 5)); - self::register("pink_carpet", BlockFactory::get(171, 6)); - self::register("pink_concrete", BlockFactory::get(236, 6)); - self::register("pink_concrete_powder", BlockFactory::get(237, 6)); - self::register("pink_glazed_terracotta", BlockFactory::get(226, 2)); - self::register("pink_stained_clay", BlockFactory::get(159, 6)); - self::register("pink_stained_glass", BlockFactory::get(241, 6)); - self::register("pink_stained_glass_pane", BlockFactory::get(160, 6)); - self::register("pink_tulip", BlockFactory::get(38, 7)); - self::register("pink_wool", BlockFactory::get(35, 6)); - self::register("podzol", BlockFactory::get(243)); - self::register("polished_andesite", BlockFactory::get(1, 6)); - self::register("polished_andesite_slab", BlockFactory::get(417, 2)); - self::register("polished_andesite_stairs", BlockFactory::get(429)); - self::register("polished_diorite", BlockFactory::get(1, 4)); - self::register("polished_diorite_slab", BlockFactory::get(417, 5)); - self::register("polished_diorite_stairs", BlockFactory::get(428)); - self::register("polished_granite", BlockFactory::get(1, 2)); - self::register("polished_granite_slab", BlockFactory::get(417, 7)); - self::register("polished_granite_stairs", BlockFactory::get(427)); - self::register("poppy", BlockFactory::get(38)); - self::register("potatoes", BlockFactory::get(142)); - self::register("powered_rail", BlockFactory::get(27)); - self::register("prismarine", BlockFactory::get(168)); - self::register("prismarine_bricks", BlockFactory::get(168, 2)); - self::register("prismarine_bricks_slab", BlockFactory::get(182, 4)); - self::register("prismarine_bricks_stairs", BlockFactory::get(259)); - self::register("prismarine_slab", BlockFactory::get(182, 2)); - self::register("prismarine_stairs", BlockFactory::get(257)); - self::register("prismarine_wall", BlockFactory::get(139, 11)); - self::register("pumpkin", BlockFactory::get(86)); - self::register("pumpkin_stem", BlockFactory::get(104)); - self::register("purple_carpet", BlockFactory::get(171, 10)); - self::register("purple_concrete", BlockFactory::get(236, 10)); - self::register("purple_concrete_powder", BlockFactory::get(237, 10)); - self::register("purple_glazed_terracotta", BlockFactory::get(219, 2)); - self::register("purple_stained_clay", BlockFactory::get(159, 10)); - self::register("purple_stained_glass", BlockFactory::get(241, 10)); - self::register("purple_stained_glass_pane", BlockFactory::get(160, 10)); - self::register("purple_torch", BlockFactory::get(204, 13)); - self::register("purple_wool", BlockFactory::get(35, 10)); - self::register("purpur", BlockFactory::get(201)); - self::register("purpur_pillar", BlockFactory::get(201, 2)); - self::register("purpur_slab", BlockFactory::get(182, 1)); - self::register("purpur_stairs", BlockFactory::get(203)); - self::register("quartz", BlockFactory::get(155)); - self::register("quartz_pillar", BlockFactory::get(155, 2)); - self::register("quartz_slab", BlockFactory::get(44, 6)); - self::register("quartz_stairs", BlockFactory::get(156)); - self::register("rail", BlockFactory::get(66)); - self::register("red_carpet", BlockFactory::get(171, 14)); - self::register("red_concrete", BlockFactory::get(236, 14)); - self::register("red_concrete_powder", BlockFactory::get(237, 14)); - self::register("red_glazed_terracotta", BlockFactory::get(234, 2)); - self::register("red_mushroom", BlockFactory::get(40)); - self::register("red_mushroom_block", BlockFactory::get(100)); - self::register("red_nether_brick_slab", BlockFactory::get(182, 7)); - self::register("red_nether_brick_stairs", BlockFactory::get(439)); - self::register("red_nether_brick_wall", BlockFactory::get(139, 13)); - self::register("red_nether_bricks", BlockFactory::get(215)); - self::register("red_sand", BlockFactory::get(12, 1)); - self::register("red_sandstone", BlockFactory::get(179)); - self::register("red_sandstone_slab", BlockFactory::get(182)); - self::register("red_sandstone_stairs", BlockFactory::get(180)); - self::register("red_sandstone_wall", BlockFactory::get(139, 12)); - self::register("red_stained_clay", BlockFactory::get(159, 14)); - self::register("red_stained_glass", BlockFactory::get(241, 14)); - self::register("red_stained_glass_pane", BlockFactory::get(160, 14)); - self::register("red_torch", BlockFactory::get(202, 5)); - self::register("red_tulip", BlockFactory::get(38, 4)); - self::register("red_wool", BlockFactory::get(35, 14)); - self::register("redstone", BlockFactory::get(152)); - self::register("redstone_comparator", BlockFactory::get(149)); - self::register("redstone_lamp", BlockFactory::get(123)); - self::register("redstone_ore", BlockFactory::get(73)); - self::register("redstone_repeater", BlockFactory::get(93)); - self::register("redstone_torch", BlockFactory::get(76, 5)); - self::register("redstone_wire", BlockFactory::get(55)); - self::register("reserved6", BlockFactory::get(255)); - self::register("rose_bush", BlockFactory::get(175, 4)); - self::register("sand", BlockFactory::get(12)); - self::register("sandstone", BlockFactory::get(24)); - self::register("sandstone_slab", BlockFactory::get(44, 1)); - self::register("sandstone_stairs", BlockFactory::get(128)); - self::register("sandstone_wall", BlockFactory::get(139, 5)); - self::register("sea_lantern", BlockFactory::get(169)); - self::register("sea_pickle", BlockFactory::get(411)); - self::register("slightly_damaged_anvil", BlockFactory::get(145, 4)); - self::register("smooth_quartz", BlockFactory::get(155, 3)); - self::register("smooth_quartz_slab", BlockFactory::get(421, 1)); - self::register("smooth_quartz_stairs", BlockFactory::get(440)); - self::register("smooth_red_sandstone", BlockFactory::get(179, 3)); - self::register("smooth_red_sandstone_slab", BlockFactory::get(417, 1)); - self::register("smooth_red_sandstone_stairs", BlockFactory::get(431)); - self::register("smooth_sandstone", BlockFactory::get(24, 3)); - self::register("smooth_sandstone_slab", BlockFactory::get(182, 6)); - self::register("smooth_sandstone_stairs", BlockFactory::get(432)); - self::register("smooth_stone", BlockFactory::get(438)); - self::register("smooth_stone_slab", BlockFactory::get(44)); - self::register("snow", BlockFactory::get(80)); - self::register("snow_layer", BlockFactory::get(78)); - self::register("soul_sand", BlockFactory::get(88)); - self::register("sponge", BlockFactory::get(19)); - self::register("spruce_button", BlockFactory::get(399)); - self::register("spruce_door", BlockFactory::get(193)); - self::register("spruce_fence", BlockFactory::get(85, 1)); - self::register("spruce_fence_gate", BlockFactory::get(183)); - self::register("spruce_leaves", BlockFactory::get(18, 1)); - self::register("spruce_log", BlockFactory::get(17, 1)); - self::register("spruce_planks", BlockFactory::get(5, 1)); - self::register("spruce_pressure_plate", BlockFactory::get(409)); - self::register("spruce_sapling", BlockFactory::get(6, 1)); - self::register("spruce_sign", BlockFactory::get(436)); - self::register("spruce_slab", BlockFactory::get(158, 1)); - self::register("spruce_stairs", BlockFactory::get(134)); - self::register("spruce_trapdoor", BlockFactory::get(404)); - self::register("spruce_wood", BlockFactory::get(467, 1)); - self::register("stone", BlockFactory::get(1)); - self::register("stone_brick_slab", BlockFactory::get(44, 5)); - self::register("stone_brick_stairs", BlockFactory::get(109)); - self::register("stone_brick_wall", BlockFactory::get(139, 7)); - self::register("stone_bricks", BlockFactory::get(98)); - self::register("stone_button", BlockFactory::get(77)); - self::register("stone_pressure_plate", BlockFactory::get(70)); - self::register("stone_slab", BlockFactory::get(421, 2)); - self::register("stone_stairs", BlockFactory::get(435)); - self::register("sugarcane", BlockFactory::get(83)); - self::register("sunflower", BlockFactory::get(175)); - self::register("tall_grass", BlockFactory::get(31, 1)); - self::register("tnt", BlockFactory::get(46)); - self::register("torch", BlockFactory::get(50, 5)); - self::register("trapped_chest", BlockFactory::get(146, 2)); - self::register("tripwire", BlockFactory::get(132)); - self::register("tripwire_hook", BlockFactory::get(131)); - self::register("underwater_torch", BlockFactory::get(239, 5)); - self::register("very_damaged_anvil", BlockFactory::get(145, 8)); - self::register("vines", BlockFactory::get(106)); - self::register("water", BlockFactory::get(8)); - self::register("weighted_pressure_plate_heavy", BlockFactory::get(148)); - self::register("weighted_pressure_plate_light", BlockFactory::get(147)); - self::register("wheat", BlockFactory::get(59)); - self::register("white_carpet", BlockFactory::get(171)); - self::register("white_concrete", BlockFactory::get(236)); - self::register("white_concrete_powder", BlockFactory::get(237)); - self::register("white_glazed_terracotta", BlockFactory::get(220, 2)); - self::register("white_stained_clay", BlockFactory::get(159)); - self::register("white_stained_glass", BlockFactory::get(241)); - self::register("white_stained_glass_pane", BlockFactory::get(160)); - self::register("white_tulip", BlockFactory::get(38, 6)); - self::register("white_wool", BlockFactory::get(35)); - self::register("yellow_carpet", BlockFactory::get(171, 4)); - self::register("yellow_concrete", BlockFactory::get(236, 4)); - self::register("yellow_concrete_powder", BlockFactory::get(237, 4)); - self::register("yellow_glazed_terracotta", BlockFactory::get(224, 2)); - self::register("yellow_stained_clay", BlockFactory::get(159, 4)); - self::register("yellow_stained_glass", BlockFactory::get(241, 4)); - self::register("yellow_stained_glass_pane", BlockFactory::get(160, 4)); - self::register("yellow_wool", BlockFactory::get(35, 4)); + $factory = BlockFactory::getInstance(); + self::register("acacia_button", $factory->get(395)); + self::register("acacia_door", $factory->get(196)); + self::register("acacia_fence", $factory->get(85, 4)); + self::register("acacia_fence_gate", $factory->get(187)); + self::register("acacia_leaves", $factory->get(161)); + self::register("acacia_log", $factory->get(162)); + self::register("acacia_planks", $factory->get(5, 4)); + self::register("acacia_pressure_plate", $factory->get(405)); + self::register("acacia_sapling", $factory->get(6, 4)); + self::register("acacia_sign", $factory->get(445)); + self::register("acacia_slab", $factory->get(158, 4)); + self::register("acacia_stairs", $factory->get(163)); + self::register("acacia_trapdoor", $factory->get(400)); + self::register("acacia_wood", $factory->get(467, 4)); + self::register("activator_rail", $factory->get(126)); + self::register("air", $factory->get(0)); + self::register("allium", $factory->get(38, 2)); + self::register("andesite", $factory->get(1, 5)); + self::register("andesite_slab", $factory->get(417, 3)); + self::register("andesite_stairs", $factory->get(426)); + self::register("andesite_wall", $factory->get(139, 4)); + self::register("anvil", $factory->get(145)); + self::register("azure_bluet", $factory->get(38, 3)); + self::register("banner", $factory->get(176)); + self::register("barrier", $factory->get(416)); + self::register("bed", $factory->get(26)); + self::register("bedrock", $factory->get(7)); + self::register("beetroots", $factory->get(244)); + self::register("birch_button", $factory->get(396)); + self::register("birch_door", $factory->get(194)); + self::register("birch_fence", $factory->get(85, 2)); + self::register("birch_fence_gate", $factory->get(184)); + self::register("birch_leaves", $factory->get(18, 2)); + self::register("birch_log", $factory->get(17, 2)); + self::register("birch_planks", $factory->get(5, 2)); + self::register("birch_pressure_plate", $factory->get(406)); + self::register("birch_sapling", $factory->get(6, 2)); + self::register("birch_sign", $factory->get(441)); + self::register("birch_slab", $factory->get(158, 2)); + self::register("birch_stairs", $factory->get(135)); + self::register("birch_trapdoor", $factory->get(401)); + self::register("birch_wood", $factory->get(467, 2)); + self::register("black_carpet", $factory->get(171, 15)); + self::register("black_concrete", $factory->get(236, 15)); + self::register("black_concrete_powder", $factory->get(237, 15)); + self::register("black_glazed_terracotta", $factory->get(235, 2)); + self::register("black_stained_clay", $factory->get(159, 15)); + self::register("black_stained_glass", $factory->get(241, 15)); + self::register("black_stained_glass_pane", $factory->get(160, 15)); + self::register("black_wool", $factory->get(35, 15)); + self::register("blue_carpet", $factory->get(171, 11)); + self::register("blue_concrete", $factory->get(236, 11)); + self::register("blue_concrete_powder", $factory->get(237, 11)); + self::register("blue_glazed_terracotta", $factory->get(231, 2)); + self::register("blue_ice", $factory->get(266)); + self::register("blue_orchid", $factory->get(38, 1)); + self::register("blue_stained_clay", $factory->get(159, 11)); + self::register("blue_stained_glass", $factory->get(241, 11)); + self::register("blue_stained_glass_pane", $factory->get(160, 11)); + self::register("blue_torch", $factory->get(204, 5)); + self::register("blue_wool", $factory->get(35, 11)); + self::register("bone_block", $factory->get(216)); + self::register("bookshelf", $factory->get(47)); + self::register("brewing_stand", $factory->get(117)); + self::register("brick_slab", $factory->get(44, 4)); + self::register("brick_stairs", $factory->get(108)); + self::register("brick_wall", $factory->get(139, 6)); + self::register("bricks", $factory->get(45)); + self::register("brown_carpet", $factory->get(171, 12)); + self::register("brown_concrete", $factory->get(236, 12)); + self::register("brown_concrete_powder", $factory->get(237, 12)); + self::register("brown_glazed_terracotta", $factory->get(232, 2)); + self::register("brown_mushroom", $factory->get(39)); + self::register("brown_mushroom_block", $factory->get(99)); + self::register("brown_stained_clay", $factory->get(159, 12)); + self::register("brown_stained_glass", $factory->get(241, 12)); + self::register("brown_stained_glass_pane", $factory->get(160, 12)); + self::register("brown_wool", $factory->get(35, 12)); + self::register("cactus", $factory->get(81)); + self::register("cake", $factory->get(92)); + self::register("carrots", $factory->get(141)); + self::register("carved_pumpkin", $factory->get(410)); + self::register("chest", $factory->get(54, 2)); + self::register("chiseled_quartz", $factory->get(155, 1)); + self::register("chiseled_red_sandstone", $factory->get(179, 1)); + self::register("chiseled_sandstone", $factory->get(24, 1)); + self::register("chiseled_stone_bricks", $factory->get(98, 3)); + self::register("clay", $factory->get(82)); + self::register("coal", $factory->get(173)); + self::register("coal_ore", $factory->get(16)); + self::register("coarse_dirt", $factory->get(3, 1)); + self::register("cobblestone", $factory->get(4)); + self::register("cobblestone_slab", $factory->get(44, 3)); + self::register("cobblestone_stairs", $factory->get(67)); + self::register("cobblestone_wall", $factory->get(139)); + self::register("cobweb", $factory->get(30)); + self::register("cocoa_pod", $factory->get(127)); + self::register("cornflower", $factory->get(38, 9)); + self::register("cracked_stone_bricks", $factory->get(98, 2)); + self::register("crafting_table", $factory->get(58)); + self::register("cut_red_sandstone", $factory->get(179, 2)); + self::register("cut_red_sandstone_slab", $factory->get(421, 4)); + self::register("cut_sandstone", $factory->get(24, 2)); + self::register("cut_sandstone_slab", $factory->get(421, 3)); + self::register("cyan_carpet", $factory->get(171, 9)); + self::register("cyan_concrete", $factory->get(236, 9)); + self::register("cyan_concrete_powder", $factory->get(237, 9)); + self::register("cyan_glazed_terracotta", $factory->get(229, 2)); + self::register("cyan_stained_clay", $factory->get(159, 9)); + self::register("cyan_stained_glass", $factory->get(241, 9)); + self::register("cyan_stained_glass_pane", $factory->get(160, 9)); + self::register("cyan_wool", $factory->get(35, 9)); + self::register("dandelion", $factory->get(37)); + self::register("dark_oak_button", $factory->get(397)); + self::register("dark_oak_door", $factory->get(197)); + self::register("dark_oak_fence", $factory->get(85, 5)); + self::register("dark_oak_fence_gate", $factory->get(186)); + self::register("dark_oak_leaves", $factory->get(161, 1)); + self::register("dark_oak_log", $factory->get(162, 1)); + self::register("dark_oak_planks", $factory->get(5, 5)); + self::register("dark_oak_pressure_plate", $factory->get(407)); + self::register("dark_oak_sapling", $factory->get(6, 5)); + self::register("dark_oak_sign", $factory->get(447)); + self::register("dark_oak_slab", $factory->get(158, 5)); + self::register("dark_oak_stairs", $factory->get(164)); + self::register("dark_oak_trapdoor", $factory->get(402)); + self::register("dark_oak_wood", $factory->get(467, 5)); + self::register("dark_prismarine", $factory->get(168, 1)); + self::register("dark_prismarine_slab", $factory->get(182, 3)); + self::register("dark_prismarine_stairs", $factory->get(258)); + self::register("daylight_sensor", $factory->get(151)); + self::register("dead_bush", $factory->get(32)); + self::register("detector_rail", $factory->get(28)); + self::register("diamond", $factory->get(57)); + self::register("diamond_ore", $factory->get(56)); + self::register("diorite", $factory->get(1, 3)); + self::register("diorite_slab", $factory->get(417, 4)); + self::register("diorite_stairs", $factory->get(425)); + self::register("diorite_wall", $factory->get(139, 3)); + self::register("dirt", $factory->get(3)); + self::register("double_tallgrass", $factory->get(175, 2)); + self::register("dragon_egg", $factory->get(122)); + self::register("dried_kelp", $factory->get(394)); + self::register("element_actinium", $factory->get(355)); + self::register("element_aluminum", $factory->get(279)); + self::register("element_americium", $factory->get(361)); + self::register("element_antimony", $factory->get(317)); + self::register("element_argon", $factory->get(284)); + self::register("element_arsenic", $factory->get(299)); + self::register("element_astatine", $factory->get(351)); + self::register("element_barium", $factory->get(322)); + self::register("element_berkelium", $factory->get(363)); + self::register("element_beryllium", $factory->get(270)); + self::register("element_bismuth", $factory->get(349)); + self::register("element_bohrium", $factory->get(373)); + self::register("element_boron", $factory->get(271)); + self::register("element_bromine", $factory->get(301)); + self::register("element_cadmium", $factory->get(314)); + self::register("element_calcium", $factory->get(286)); + self::register("element_californium", $factory->get(364)); + self::register("element_carbon", $factory->get(272)); + self::register("element_cerium", $factory->get(324)); + self::register("element_cesium", $factory->get(321)); + self::register("element_chlorine", $factory->get(283)); + self::register("element_chromium", $factory->get(290)); + self::register("element_cobalt", $factory->get(293)); + self::register("element_copernicium", $factory->get(378)); + self::register("element_copper", $factory->get(295)); + self::register("element_curium", $factory->get(362)); + self::register("element_darmstadtium", $factory->get(376)); + self::register("element_dubnium", $factory->get(371)); + self::register("element_dysprosium", $factory->get(332)); + self::register("element_einsteinium", $factory->get(365)); + self::register("element_erbium", $factory->get(334)); + self::register("element_europium", $factory->get(329)); + self::register("element_fermium", $factory->get(366)); + self::register("element_flerovium", $factory->get(380)); + self::register("element_fluorine", $factory->get(275)); + self::register("element_francium", $factory->get(353)); + self::register("element_gadolinium", $factory->get(330)); + self::register("element_gallium", $factory->get(297)); + self::register("element_germanium", $factory->get(298)); + self::register("element_gold", $factory->get(345)); + self::register("element_hafnium", $factory->get(338)); + self::register("element_hassium", $factory->get(374)); + self::register("element_helium", $factory->get(268)); + self::register("element_holmium", $factory->get(333)); + self::register("element_hydrogen", $factory->get(267)); + self::register("element_indium", $factory->get(315)); + self::register("element_iodine", $factory->get(319)); + self::register("element_iridium", $factory->get(343)); + self::register("element_iron", $factory->get(292)); + self::register("element_krypton", $factory->get(302)); + self::register("element_lanthanum", $factory->get(323)); + self::register("element_lawrencium", $factory->get(369)); + self::register("element_lead", $factory->get(348)); + self::register("element_lithium", $factory->get(269)); + self::register("element_livermorium", $factory->get(382)); + self::register("element_lutetium", $factory->get(337)); + self::register("element_magnesium", $factory->get(278)); + self::register("element_manganese", $factory->get(291)); + self::register("element_meitnerium", $factory->get(375)); + self::register("element_mendelevium", $factory->get(367)); + self::register("element_mercury", $factory->get(346)); + self::register("element_molybdenum", $factory->get(308)); + self::register("element_moscovium", $factory->get(381)); + self::register("element_neodymium", $factory->get(326)); + self::register("element_neon", $factory->get(276)); + self::register("element_neptunium", $factory->get(359)); + self::register("element_nickel", $factory->get(294)); + self::register("element_nihonium", $factory->get(379)); + self::register("element_niobium", $factory->get(307)); + self::register("element_nitrogen", $factory->get(273)); + self::register("element_nobelium", $factory->get(368)); + self::register("element_oganesson", $factory->get(384)); + self::register("element_osmium", $factory->get(342)); + self::register("element_oxygen", $factory->get(274)); + self::register("element_palladium", $factory->get(312)); + self::register("element_phosphorus", $factory->get(281)); + self::register("element_platinum", $factory->get(344)); + self::register("element_plutonium", $factory->get(360)); + self::register("element_polonium", $factory->get(350)); + self::register("element_potassium", $factory->get(285)); + self::register("element_praseodymium", $factory->get(325)); + self::register("element_promethium", $factory->get(327)); + self::register("element_protactinium", $factory->get(357)); + self::register("element_radium", $factory->get(354)); + self::register("element_radon", $factory->get(352)); + self::register("element_rhenium", $factory->get(341)); + self::register("element_rhodium", $factory->get(311)); + self::register("element_roentgenium", $factory->get(377)); + self::register("element_rubidium", $factory->get(303)); + self::register("element_ruthenium", $factory->get(310)); + self::register("element_rutherfordium", $factory->get(370)); + self::register("element_samarium", $factory->get(328)); + self::register("element_scandium", $factory->get(287)); + self::register("element_seaborgium", $factory->get(372)); + self::register("element_selenium", $factory->get(300)); + self::register("element_silicon", $factory->get(280)); + self::register("element_silver", $factory->get(313)); + self::register("element_sodium", $factory->get(277)); + self::register("element_strontium", $factory->get(304)); + self::register("element_sulfur", $factory->get(282)); + self::register("element_tantalum", $factory->get(339)); + self::register("element_technetium", $factory->get(309)); + self::register("element_tellurium", $factory->get(318)); + self::register("element_tennessine", $factory->get(383)); + self::register("element_terbium", $factory->get(331)); + self::register("element_thallium", $factory->get(347)); + self::register("element_thorium", $factory->get(356)); + self::register("element_thulium", $factory->get(335)); + self::register("element_tin", $factory->get(316)); + self::register("element_titanium", $factory->get(288)); + self::register("element_tungsten", $factory->get(340)); + self::register("element_uranium", $factory->get(358)); + self::register("element_vanadium", $factory->get(289)); + self::register("element_xenon", $factory->get(320)); + self::register("element_ytterbium", $factory->get(336)); + self::register("element_yttrium", $factory->get(305)); + self::register("element_zero", $factory->get(36)); + self::register("element_zinc", $factory->get(296)); + self::register("element_zirconium", $factory->get(306)); + self::register("emerald", $factory->get(133)); + self::register("emerald_ore", $factory->get(129)); + self::register("enchanting_table", $factory->get(116)); + self::register("end_portal_frame", $factory->get(120)); + self::register("end_rod", $factory->get(208)); + self::register("end_stone", $factory->get(121)); + self::register("end_stone_brick_slab", $factory->get(417)); + self::register("end_stone_brick_stairs", $factory->get(433)); + self::register("end_stone_brick_wall", $factory->get(139, 10)); + self::register("end_stone_bricks", $factory->get(206)); + self::register("ender_chest", $factory->get(130, 2)); + self::register("fake_wooden_slab", $factory->get(44, 2)); + self::register("farmland", $factory->get(60)); + self::register("fern", $factory->get(31, 2)); + self::register("fire", $factory->get(51)); + self::register("flower_pot", $factory->get(140)); + self::register("frosted_ice", $factory->get(207)); + self::register("furnace", $factory->get(61, 2)); + self::register("glass", $factory->get(20)); + self::register("glass_pane", $factory->get(102)); + self::register("glowing_obsidian", $factory->get(246)); + self::register("glowstone", $factory->get(89)); + self::register("gold", $factory->get(41)); + self::register("gold_ore", $factory->get(14)); + self::register("granite", $factory->get(1, 1)); + self::register("granite_slab", $factory->get(417, 6)); + self::register("granite_stairs", $factory->get(424)); + self::register("granite_wall", $factory->get(139, 2)); + self::register("grass", $factory->get(2)); + self::register("grass_path", $factory->get(198)); + self::register("gravel", $factory->get(13)); + self::register("gray_carpet", $factory->get(171, 7)); + self::register("gray_concrete", $factory->get(236, 7)); + self::register("gray_concrete_powder", $factory->get(237, 7)); + self::register("gray_glazed_terracotta", $factory->get(227, 2)); + self::register("gray_stained_clay", $factory->get(159, 7)); + self::register("gray_stained_glass", $factory->get(241, 7)); + self::register("gray_stained_glass_pane", $factory->get(160, 7)); + self::register("gray_wool", $factory->get(35, 7)); + self::register("green_carpet", $factory->get(171, 13)); + self::register("green_concrete", $factory->get(236, 13)); + self::register("green_concrete_powder", $factory->get(237, 13)); + self::register("green_glazed_terracotta", $factory->get(233, 2)); + self::register("green_stained_clay", $factory->get(159, 13)); + self::register("green_stained_glass", $factory->get(241, 13)); + self::register("green_stained_glass_pane", $factory->get(160, 13)); + self::register("green_torch", $factory->get(202, 13)); + self::register("green_wool", $factory->get(35, 13)); + self::register("hardened_black_stained_glass", $factory->get(254, 15)); + self::register("hardened_black_stained_glass_pane", $factory->get(191, 15)); + self::register("hardened_blue_stained_glass", $factory->get(254, 11)); + self::register("hardened_blue_stained_glass_pane", $factory->get(191, 11)); + self::register("hardened_brown_stained_glass", $factory->get(254, 12)); + self::register("hardened_brown_stained_glass_pane", $factory->get(191, 12)); + self::register("hardened_clay", $factory->get(172)); + self::register("hardened_cyan_stained_glass", $factory->get(254, 9)); + self::register("hardened_cyan_stained_glass_pane", $factory->get(191, 9)); + self::register("hardened_glass", $factory->get(253)); + self::register("hardened_glass_pane", $factory->get(190)); + self::register("hardened_gray_stained_glass", $factory->get(254, 7)); + self::register("hardened_gray_stained_glass_pane", $factory->get(191, 7)); + self::register("hardened_green_stained_glass", $factory->get(254, 13)); + self::register("hardened_green_stained_glass_pane", $factory->get(191, 13)); + self::register("hardened_light_blue_stained_glass", $factory->get(254, 3)); + self::register("hardened_light_blue_stained_glass_pane", $factory->get(191, 3)); + self::register("hardened_light_gray_stained_glass", $factory->get(254, 8)); + self::register("hardened_light_gray_stained_glass_pane", $factory->get(191, 8)); + self::register("hardened_lime_stained_glass", $factory->get(254, 5)); + self::register("hardened_lime_stained_glass_pane", $factory->get(191, 5)); + self::register("hardened_magenta_stained_glass", $factory->get(254, 2)); + self::register("hardened_magenta_stained_glass_pane", $factory->get(191, 2)); + self::register("hardened_orange_stained_glass", $factory->get(254, 1)); + self::register("hardened_orange_stained_glass_pane", $factory->get(191, 1)); + self::register("hardened_pink_stained_glass", $factory->get(254, 6)); + self::register("hardened_pink_stained_glass_pane", $factory->get(191, 6)); + self::register("hardened_purple_stained_glass", $factory->get(254, 10)); + self::register("hardened_purple_stained_glass_pane", $factory->get(191, 10)); + self::register("hardened_red_stained_glass", $factory->get(254, 14)); + self::register("hardened_red_stained_glass_pane", $factory->get(191, 14)); + self::register("hardened_white_stained_glass", $factory->get(254)); + self::register("hardened_white_stained_glass_pane", $factory->get(191)); + self::register("hardened_yellow_stained_glass", $factory->get(254, 4)); + self::register("hardened_yellow_stained_glass_pane", $factory->get(191, 4)); + self::register("hay_bale", $factory->get(170)); + self::register("hopper", $factory->get(154)); + self::register("ice", $factory->get(79)); + self::register("infested_chiseled_stone_brick", $factory->get(97, 5)); + self::register("infested_cobblestone", $factory->get(97, 1)); + self::register("infested_cracked_stone_brick", $factory->get(97, 4)); + self::register("infested_mossy_stone_brick", $factory->get(97, 3)); + self::register("infested_stone", $factory->get(97)); + self::register("infested_stone_brick", $factory->get(97, 2)); + self::register("info_update", $factory->get(248)); + self::register("info_update2", $factory->get(249)); + self::register("invisible_bedrock", $factory->get(95)); + self::register("iron", $factory->get(42)); + self::register("iron_bars", $factory->get(101)); + self::register("iron_door", $factory->get(71)); + self::register("iron_ore", $factory->get(15)); + self::register("iron_trapdoor", $factory->get(167)); + self::register("item_frame", $factory->get(199)); + self::register("jungle_button", $factory->get(398)); + self::register("jungle_door", $factory->get(195)); + self::register("jungle_fence", $factory->get(85, 3)); + self::register("jungle_fence_gate", $factory->get(185)); + self::register("jungle_leaves", $factory->get(18, 3)); + self::register("jungle_log", $factory->get(17, 3)); + self::register("jungle_planks", $factory->get(5, 3)); + self::register("jungle_pressure_plate", $factory->get(408)); + self::register("jungle_sapling", $factory->get(6, 3)); + self::register("jungle_sign", $factory->get(443)); + self::register("jungle_slab", $factory->get(158, 3)); + self::register("jungle_stairs", $factory->get(136)); + self::register("jungle_trapdoor", $factory->get(403)); + self::register("jungle_wood", $factory->get(467, 3)); + self::register("ladder", $factory->get(65, 2)); + self::register("lantern", $factory->get(463)); + self::register("lapis_lazuli", $factory->get(22)); + self::register("lapis_lazuli_ore", $factory->get(21)); + self::register("large_fern", $factory->get(175, 3)); + self::register("lava", $factory->get(10)); + self::register("legacy_stonecutter", $factory->get(245)); + self::register("lever", $factory->get(69)); + self::register("light_blue_carpet", $factory->get(171, 3)); + self::register("light_blue_concrete", $factory->get(236, 3)); + self::register("light_blue_concrete_powder", $factory->get(237, 3)); + self::register("light_blue_glazed_terracotta", $factory->get(223, 2)); + self::register("light_blue_stained_clay", $factory->get(159, 3)); + self::register("light_blue_stained_glass", $factory->get(241, 3)); + self::register("light_blue_stained_glass_pane", $factory->get(160, 3)); + self::register("light_blue_wool", $factory->get(35, 3)); + self::register("light_gray_carpet", $factory->get(171, 8)); + self::register("light_gray_concrete", $factory->get(236, 8)); + self::register("light_gray_concrete_powder", $factory->get(237, 8)); + self::register("light_gray_glazed_terracotta", $factory->get(228, 2)); + self::register("light_gray_stained_clay", $factory->get(159, 8)); + self::register("light_gray_stained_glass", $factory->get(241, 8)); + self::register("light_gray_stained_glass_pane", $factory->get(160, 8)); + self::register("light_gray_wool", $factory->get(35, 8)); + self::register("lilac", $factory->get(175, 1)); + self::register("lily_of_the_valley", $factory->get(38, 10)); + self::register("lily_pad", $factory->get(111)); + self::register("lime_carpet", $factory->get(171, 5)); + self::register("lime_concrete", $factory->get(236, 5)); + self::register("lime_concrete_powder", $factory->get(237, 5)); + self::register("lime_glazed_terracotta", $factory->get(225, 2)); + self::register("lime_stained_clay", $factory->get(159, 5)); + self::register("lime_stained_glass", $factory->get(241, 5)); + self::register("lime_stained_glass_pane", $factory->get(160, 5)); + self::register("lime_wool", $factory->get(35, 5)); + self::register("lit_pumpkin", $factory->get(91)); + self::register("magenta_carpet", $factory->get(171, 2)); + self::register("magenta_concrete", $factory->get(236, 2)); + self::register("magenta_concrete_powder", $factory->get(237, 2)); + self::register("magenta_glazed_terracotta", $factory->get(222, 2)); + self::register("magenta_stained_clay", $factory->get(159, 2)); + self::register("magenta_stained_glass", $factory->get(241, 2)); + self::register("magenta_stained_glass_pane", $factory->get(160, 2)); + self::register("magenta_wool", $factory->get(35, 2)); + self::register("magma", $factory->get(213)); + self::register("melon", $factory->get(103)); + self::register("melon_stem", $factory->get(105)); + self::register("mob_head", $factory->get(144, 2)); + self::register("monster_spawner", $factory->get(52)); + self::register("mossy_cobblestone", $factory->get(48)); + self::register("mossy_cobblestone_slab", $factory->get(182, 5)); + self::register("mossy_cobblestone_stairs", $factory->get(434)); + self::register("mossy_cobblestone_wall", $factory->get(139, 1)); + self::register("mossy_stone_brick_slab", $factory->get(421)); + self::register("mossy_stone_brick_stairs", $factory->get(430)); + self::register("mossy_stone_brick_wall", $factory->get(139, 8)); + self::register("mossy_stone_bricks", $factory->get(98, 1)); + self::register("mycelium", $factory->get(110)); + self::register("nether_brick_fence", $factory->get(113)); + self::register("nether_brick_slab", $factory->get(44, 7)); + self::register("nether_brick_stairs", $factory->get(114)); + self::register("nether_brick_wall", $factory->get(139, 9)); + self::register("nether_bricks", $factory->get(112)); + self::register("nether_portal", $factory->get(90, 1)); + self::register("nether_quartz_ore", $factory->get(153)); + self::register("nether_reactor_core", $factory->get(247)); + self::register("nether_wart", $factory->get(115)); + self::register("nether_wart_block", $factory->get(214)); + self::register("netherrack", $factory->get(87)); + self::register("note_block", $factory->get(25)); + self::register("oak_button", $factory->get(143)); + self::register("oak_door", $factory->get(64)); + self::register("oak_fence", $factory->get(85)); + self::register("oak_fence_gate", $factory->get(107)); + self::register("oak_leaves", $factory->get(18)); + self::register("oak_log", $factory->get(17)); + self::register("oak_planks", $factory->get(5)); + self::register("oak_pressure_plate", $factory->get(72)); + self::register("oak_sapling", $factory->get(6)); + self::register("oak_sign", $factory->get(63)); + self::register("oak_slab", $factory->get(158)); + self::register("oak_stairs", $factory->get(53)); + self::register("oak_trapdoor", $factory->get(96)); + self::register("oak_wood", $factory->get(467)); + self::register("obsidian", $factory->get(49)); + self::register("orange_carpet", $factory->get(171, 1)); + self::register("orange_concrete", $factory->get(236, 1)); + self::register("orange_concrete_powder", $factory->get(237, 1)); + self::register("orange_glazed_terracotta", $factory->get(221, 2)); + self::register("orange_stained_clay", $factory->get(159, 1)); + self::register("orange_stained_glass", $factory->get(241, 1)); + self::register("orange_stained_glass_pane", $factory->get(160, 1)); + self::register("orange_tulip", $factory->get(38, 5)); + self::register("orange_wool", $factory->get(35, 1)); + self::register("oxeye_daisy", $factory->get(38, 8)); + self::register("packed_ice", $factory->get(174)); + self::register("peony", $factory->get(175, 5)); + self::register("pink_carpet", $factory->get(171, 6)); + self::register("pink_concrete", $factory->get(236, 6)); + self::register("pink_concrete_powder", $factory->get(237, 6)); + self::register("pink_glazed_terracotta", $factory->get(226, 2)); + self::register("pink_stained_clay", $factory->get(159, 6)); + self::register("pink_stained_glass", $factory->get(241, 6)); + self::register("pink_stained_glass_pane", $factory->get(160, 6)); + self::register("pink_tulip", $factory->get(38, 7)); + self::register("pink_wool", $factory->get(35, 6)); + self::register("podzol", $factory->get(243)); + self::register("polished_andesite", $factory->get(1, 6)); + self::register("polished_andesite_slab", $factory->get(417, 2)); + self::register("polished_andesite_stairs", $factory->get(429)); + self::register("polished_diorite", $factory->get(1, 4)); + self::register("polished_diorite_slab", $factory->get(417, 5)); + self::register("polished_diorite_stairs", $factory->get(428)); + self::register("polished_granite", $factory->get(1, 2)); + self::register("polished_granite_slab", $factory->get(417, 7)); + self::register("polished_granite_stairs", $factory->get(427)); + self::register("poppy", $factory->get(38)); + self::register("potatoes", $factory->get(142)); + self::register("powered_rail", $factory->get(27)); + self::register("prismarine", $factory->get(168)); + self::register("prismarine_bricks", $factory->get(168, 2)); + self::register("prismarine_bricks_slab", $factory->get(182, 4)); + self::register("prismarine_bricks_stairs", $factory->get(259)); + self::register("prismarine_slab", $factory->get(182, 2)); + self::register("prismarine_stairs", $factory->get(257)); + self::register("prismarine_wall", $factory->get(139, 11)); + self::register("pumpkin", $factory->get(86)); + self::register("pumpkin_stem", $factory->get(104)); + self::register("purple_carpet", $factory->get(171, 10)); + self::register("purple_concrete", $factory->get(236, 10)); + self::register("purple_concrete_powder", $factory->get(237, 10)); + self::register("purple_glazed_terracotta", $factory->get(219, 2)); + self::register("purple_stained_clay", $factory->get(159, 10)); + self::register("purple_stained_glass", $factory->get(241, 10)); + self::register("purple_stained_glass_pane", $factory->get(160, 10)); + self::register("purple_torch", $factory->get(204, 13)); + self::register("purple_wool", $factory->get(35, 10)); + self::register("purpur", $factory->get(201)); + self::register("purpur_pillar", $factory->get(201, 2)); + self::register("purpur_slab", $factory->get(182, 1)); + self::register("purpur_stairs", $factory->get(203)); + self::register("quartz", $factory->get(155)); + self::register("quartz_pillar", $factory->get(155, 2)); + self::register("quartz_slab", $factory->get(44, 6)); + self::register("quartz_stairs", $factory->get(156)); + self::register("rail", $factory->get(66)); + self::register("red_carpet", $factory->get(171, 14)); + self::register("red_concrete", $factory->get(236, 14)); + self::register("red_concrete_powder", $factory->get(237, 14)); + self::register("red_glazed_terracotta", $factory->get(234, 2)); + self::register("red_mushroom", $factory->get(40)); + self::register("red_mushroom_block", $factory->get(100)); + self::register("red_nether_brick_slab", $factory->get(182, 7)); + self::register("red_nether_brick_stairs", $factory->get(439)); + self::register("red_nether_brick_wall", $factory->get(139, 13)); + self::register("red_nether_bricks", $factory->get(215)); + self::register("red_sand", $factory->get(12, 1)); + self::register("red_sandstone", $factory->get(179)); + self::register("red_sandstone_slab", $factory->get(182)); + self::register("red_sandstone_stairs", $factory->get(180)); + self::register("red_sandstone_wall", $factory->get(139, 12)); + self::register("red_stained_clay", $factory->get(159, 14)); + self::register("red_stained_glass", $factory->get(241, 14)); + self::register("red_stained_glass_pane", $factory->get(160, 14)); + self::register("red_torch", $factory->get(202, 5)); + self::register("red_tulip", $factory->get(38, 4)); + self::register("red_wool", $factory->get(35, 14)); + self::register("redstone", $factory->get(152)); + self::register("redstone_comparator", $factory->get(149)); + self::register("redstone_lamp", $factory->get(123)); + self::register("redstone_ore", $factory->get(73)); + self::register("redstone_repeater", $factory->get(93)); + self::register("redstone_torch", $factory->get(76, 5)); + self::register("redstone_wire", $factory->get(55)); + self::register("reserved6", $factory->get(255)); + self::register("rose_bush", $factory->get(175, 4)); + self::register("sand", $factory->get(12)); + self::register("sandstone", $factory->get(24)); + self::register("sandstone_slab", $factory->get(44, 1)); + self::register("sandstone_stairs", $factory->get(128)); + self::register("sandstone_wall", $factory->get(139, 5)); + self::register("sea_lantern", $factory->get(169)); + self::register("sea_pickle", $factory->get(411)); + self::register("slightly_damaged_anvil", $factory->get(145, 4)); + self::register("smooth_quartz", $factory->get(155, 3)); + self::register("smooth_quartz_slab", $factory->get(421, 1)); + self::register("smooth_quartz_stairs", $factory->get(440)); + self::register("smooth_red_sandstone", $factory->get(179, 3)); + self::register("smooth_red_sandstone_slab", $factory->get(417, 1)); + self::register("smooth_red_sandstone_stairs", $factory->get(431)); + self::register("smooth_sandstone", $factory->get(24, 3)); + self::register("smooth_sandstone_slab", $factory->get(182, 6)); + self::register("smooth_sandstone_stairs", $factory->get(432)); + self::register("smooth_stone", $factory->get(438)); + self::register("smooth_stone_slab", $factory->get(44)); + self::register("snow", $factory->get(80)); + self::register("snow_layer", $factory->get(78)); + self::register("soul_sand", $factory->get(88)); + self::register("sponge", $factory->get(19)); + self::register("spruce_button", $factory->get(399)); + self::register("spruce_door", $factory->get(193)); + self::register("spruce_fence", $factory->get(85, 1)); + self::register("spruce_fence_gate", $factory->get(183)); + self::register("spruce_leaves", $factory->get(18, 1)); + self::register("spruce_log", $factory->get(17, 1)); + self::register("spruce_planks", $factory->get(5, 1)); + self::register("spruce_pressure_plate", $factory->get(409)); + self::register("spruce_sapling", $factory->get(6, 1)); + self::register("spruce_sign", $factory->get(436)); + self::register("spruce_slab", $factory->get(158, 1)); + self::register("spruce_stairs", $factory->get(134)); + self::register("spruce_trapdoor", $factory->get(404)); + self::register("spruce_wood", $factory->get(467, 1)); + self::register("stone", $factory->get(1)); + self::register("stone_brick_slab", $factory->get(44, 5)); + self::register("stone_brick_stairs", $factory->get(109)); + self::register("stone_brick_wall", $factory->get(139, 7)); + self::register("stone_bricks", $factory->get(98)); + self::register("stone_button", $factory->get(77)); + self::register("stone_pressure_plate", $factory->get(70)); + self::register("stone_slab", $factory->get(421, 2)); + self::register("stone_stairs", $factory->get(435)); + self::register("sugarcane", $factory->get(83)); + self::register("sunflower", $factory->get(175)); + self::register("tall_grass", $factory->get(31, 1)); + self::register("tnt", $factory->get(46)); + self::register("torch", $factory->get(50, 5)); + self::register("trapped_chest", $factory->get(146, 2)); + self::register("tripwire", $factory->get(132)); + self::register("tripwire_hook", $factory->get(131)); + self::register("underwater_torch", $factory->get(239, 5)); + self::register("very_damaged_anvil", $factory->get(145, 8)); + self::register("vines", $factory->get(106)); + self::register("water", $factory->get(8)); + self::register("weighted_pressure_plate_heavy", $factory->get(148)); + self::register("weighted_pressure_plate_light", $factory->get(147)); + self::register("wheat", $factory->get(59)); + self::register("white_carpet", $factory->get(171)); + self::register("white_concrete", $factory->get(236)); + self::register("white_concrete_powder", $factory->get(237)); + self::register("white_glazed_terracotta", $factory->get(220, 2)); + self::register("white_stained_clay", $factory->get(159)); + self::register("white_stained_glass", $factory->get(241)); + self::register("white_stained_glass_pane", $factory->get(160)); + self::register("white_tulip", $factory->get(38, 6)); + self::register("white_wool", $factory->get(35)); + self::register("yellow_carpet", $factory->get(171, 4)); + self::register("yellow_concrete", $factory->get(236, 4)); + self::register("yellow_concrete_powder", $factory->get(237, 4)); + self::register("yellow_glazed_terracotta", $factory->get(224, 2)); + self::register("yellow_stained_clay", $factory->get(159, 4)); + self::register("yellow_stained_glass", $factory->get(241, 4)); + self::register("yellow_stained_glass_pane", $factory->get(160, 4)); + self::register("yellow_wool", $factory->get(35, 4)); } } diff --git a/src/block/tile/FlowerPot.php b/src/block/tile/FlowerPot.php index d6641a1f3..279041303 100644 --- a/src/block/tile/FlowerPot.php +++ b/src/block/tile/FlowerPot.php @@ -44,7 +44,7 @@ class FlowerPot extends Spawnable{ public function readSaveData(CompoundTag $nbt) : void{ if($nbt->hasTag(self::TAG_ITEM, ShortTag::class) and $nbt->hasTag(self::TAG_ITEM_DATA, IntTag::class)){ try{ - $this->setPlant(BlockFactory::get($nbt->getShort(self::TAG_ITEM), $nbt->getInt(self::TAG_ITEM_DATA))); + $this->setPlant(BlockFactory::getInstance()->get($nbt->getShort(self::TAG_ITEM), $nbt->getInt(self::TAG_ITEM_DATA))); }catch(\InvalidArgumentException $e){ //noop } diff --git a/src/command/defaults/ParticleCommand.php b/src/command/defaults/ParticleCommand.php index d503ee510..e9f7a649f 100644 --- a/src/command/defaults/ParticleCommand.php +++ b/src/command/defaults/ParticleCommand.php @@ -185,7 +185,7 @@ class ParticleCommand extends VanillaCommand{ break; case "terrain": if($data !== null and $data !== 0){ - return new TerrainParticle(BlockFactory::get($data)); + return new TerrainParticle(BlockFactory::getInstance()->get($data)); } break; case "heart": @@ -213,7 +213,7 @@ class ParticleCommand extends VanillaCommand{ }elseif(strpos($name, "blockcrack_") === 0){ $d = explode("_", $name); if(count($d) === 2){ - return new TerrainParticle(BlockFactory::get(((int) $d[1]) & 0xff, ((int) $d[1]) >> 12)); + return new TerrainParticle(BlockFactory::getInstance()->get(((int) $d[1]) & 0xff, ((int) $d[1]) >> 12)); } }elseif(strpos($name, "blockdust_") === 0){ $d = explode("_", $name); diff --git a/src/entity/object/FallingBlock.php b/src/entity/object/FallingBlock.php index fe23efbcf..20c7403b1 100644 --- a/src/entity/object/FallingBlock.php +++ b/src/entity/object/FallingBlock.php @@ -71,7 +71,7 @@ class FallingBlock extends Entity{ $damage = $nbt->getByte("Data", 0); - $this->block = BlockFactory::get($blockId, $damage); + $this->block = BlockFactory::getInstance()->get($blockId, $damage); } public function canCollideWith(Entity $entity) : bool{ diff --git a/src/entity/projectile/Projectile.php b/src/entity/projectile/Projectile.php index 82a1aa992..5a9777053 100644 --- a/src/entity/projectile/Projectile.php +++ b/src/entity/projectile/Projectile.php @@ -100,7 +100,7 @@ abstract class Projectile extends Entity{ break; } - $this->blockHit = BlockFactory::get($blockId, $blockData); + $this->blockHit = BlockFactory::getInstance()->get($blockId, $blockData); $this->blockHit->position($this->getWorld(), $blockPos->getFloorX(), $blockPos->getFloorY(), $blockPos->getFloorZ()); }while(false); } diff --git a/src/item/ItemBlock.php b/src/item/ItemBlock.php index ca67e2a99..aa207e924 100644 --- a/src/item/ItemBlock.php +++ b/src/item/ItemBlock.php @@ -50,7 +50,7 @@ class ItemBlock extends Item{ } public function getBlock() : Block{ - return BlockFactory::get($this->blockId, $this->meta === -1 ? 0 : $this->meta & 0xf); + return BlockFactory::getInstance()->get($this->blockId, $this->meta === -1 ? 0 : $this->meta & 0xf); } public function getFuelTime() : int{ diff --git a/src/item/ItemFactory.php b/src/item/ItemFactory.php index a526114ba..940bdaebd 100644 --- a/src/item/ItemFactory.php +++ b/src/item/ItemFactory.php @@ -467,7 +467,7 @@ class ItemFactory{ */ public static function isRegistered(int $id, int $variant = 0) : bool{ if($id < 256){ - return BlockFactory::isRegistered($id); + return BlockFactory::getInstance()->isRegistered($id); } return isset(self::$list[self::getListOffset($id, $variant)]); diff --git a/src/world/Explosion.php b/src/world/Explosion.php index 4f89c705e..f0cba16ed 100644 --- a/src/world/Explosion.php +++ b/src/world/Explosion.php @@ -93,6 +93,7 @@ class Explosion{ } $vector = new Vector3(0, 0, 0); + $blockFactory = BlockFactory::getInstance(); $currentChunk = null; $currentSubChunk = null; @@ -127,10 +128,10 @@ class Explosion{ $state = $this->subChunkHandler->currentSubChunk->getFullBlock($vBlockX & 0x0f, $vBlockY & 0x0f, $vBlockZ & 0x0f); if($state !== 0){ - $blastForce -= (BlockFactory::$blastResistance[$state] / 5 + 0.3) * $this->stepLen; + $blastForce -= ($blockFactory->blastResistance[$state] / 5 + 0.3) * $this->stepLen; if($blastForce > 0){ if(!isset($this->affectedBlocks[$index = World::blockHash($vBlockX, $vBlockY, $vBlockZ)])){ - $_block = BlockFactory::fromFullBlock($state); + $_block = $blockFactory->fromFullBlock($state); $_block->position($this->world, $vBlockX, $vBlockY, $vBlockZ); $this->affectedBlocks[$index] = $_block; } diff --git a/src/world/SimpleChunkManager.php b/src/world/SimpleChunkManager.php index 6d65b6803..754142e5b 100644 --- a/src/world/SimpleChunkManager.php +++ b/src/world/SimpleChunkManager.php @@ -51,7 +51,7 @@ class SimpleChunkManager implements ChunkManager{ public function getBlockAt(int $x, int $y, int $z) : Block{ if($this->terrainPointer->moveTo($x, $y, $z, false)){ - return BlockFactory::fromFullBlock($this->terrainPointer->currentSubChunk->getFullBlock($x & 0xf, $y & 0xf, $z & 0xf)); + return BlockFactory::getInstance()->fromFullBlock($this->terrainPointer->currentSubChunk->getFullBlock($x & 0xf, $y & 0xf, $z & 0xf)); } return VanillaBlocks::AIR(); } diff --git a/src/world/World.php b/src/world/World.php index dae02190d..4594b5946 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -346,7 +346,7 @@ class World implements ChunkManager{ $dontTickBlocks = array_fill_keys($this->server->getProperty("chunk-ticking.disable-block-ticking", []), true); - foreach(BlockFactory::getAllKnownStates() as $state){ + foreach(BlockFactory::getInstance()->getAllKnownStates() as $state){ if(!isset($dontTickBlocks[$state->getId()]) and $state->ticksRandomly()){ $this->randomTickBlocks[$state->getFullId()] = true; } @@ -945,7 +945,7 @@ class World implements ChunkManager{ if(isset($this->randomTickBlocks[$state])){ /** @var Block $block */ - $block = BlockFactory::fromFullBlock($state); + $block = BlockFactory::getInstance()->fromFullBlock($state); $block->position($this, $chunkX * 16 + $x, ($Y << 4) + $y, $chunkZ * 16 + $z); $block->onRandomTick(); } @@ -1303,7 +1303,7 @@ class World implements ChunkManager{ } } - $block = BlockFactory::fromFullBlock($fullState); + $block = BlockFactory::getInstance()->fromFullBlock($fullState); $block->position($this, $x, $y, $z); static $dynamicStateRead = false; diff --git a/src/world/generator/GeneratorRegisterTask.php b/src/world/generator/GeneratorRegisterTask.php index 5b31a31f8..d00235120 100644 --- a/src/world/generator/GeneratorRegisterTask.php +++ b/src/world/generator/GeneratorRegisterTask.php @@ -23,7 +23,6 @@ declare(strict_types=1); namespace pocketmine\world\generator; -use pocketmine\block\BlockFactory; use pocketmine\scheduler\AsyncTask; use pocketmine\world\biome\Biome; use pocketmine\world\World; @@ -56,7 +55,6 @@ class GeneratorRegisterTask extends AsyncTask{ } public function onRun() : void{ - BlockFactory::init(); Biome::init(); $manager = new GeneratorChunkManager($this->worldHeight); $this->worker->saveToThreadStore("generation.world{$this->worldId}.manager", $manager); diff --git a/src/world/generator/PopulationTask.php b/src/world/generator/PopulationTask.php index a6b79ca71..e1a488b89 100644 --- a/src/world/generator/PopulationTask.php +++ b/src/world/generator/PopulationTask.php @@ -119,8 +119,9 @@ class PopulationTask extends AsyncTask{ $chunk = $manager->getChunk($chunk->getX(), $chunk->getZ()); $chunk->setPopulated(); - $chunk->recalculateHeightMap(BlockFactory::$lightFilter, BlockFactory::$diffusesSkyLight); - $chunk->populateSkyLight(BlockFactory::$lightFilter); + $blockFactory = BlockFactory::getInstance(); + $chunk->recalculateHeightMap($blockFactory->lightFilter, $blockFactory->diffusesSkyLight); + $chunk->populateSkyLight($blockFactory->lightFilter); $chunk->setLightPopulated(); $this->chunk = FastChunkSerializer::serialize($chunk); diff --git a/src/world/generator/populator/GroundCover.php b/src/world/generator/populator/GroundCover.php index 96e09d237..98bb73fae 100644 --- a/src/world/generator/populator/GroundCover.php +++ b/src/world/generator/populator/GroundCover.php @@ -36,6 +36,7 @@ class GroundCover extends Populator{ public function populate(ChunkManager $world, int $chunkX, int $chunkZ, Random $random) : void{ $chunk = $world->getChunk($chunkX, $chunkZ); + $factory = BlockFactory::getInstance(); for($x = 0; $x < 16; ++$x){ for($z = 0; $z < 16; ++$z){ $biome = Biome::getBiome($chunk->getBiomeId($x, $z)); @@ -48,7 +49,7 @@ class GroundCover extends Populator{ $startY = 127; for(; $startY > 0; --$startY){ - if(!BlockFactory::fromFullBlock($chunk->getFullBlock($x, $startY, $z))->isTransparent()){ + if(!$factory->fromFullBlock($chunk->getFullBlock($x, $startY, $z))->isTransparent()){ break; } } @@ -56,7 +57,7 @@ class GroundCover extends Populator{ $endY = $startY - count($cover); for($y = $startY; $y > $endY and $y >= 0; --$y){ $b = $cover[$startY - $y]; - $id = BlockFactory::fromFullBlock($chunk->getFullBlock($x, $y, $z)); + $id = $factory->fromFullBlock($chunk->getFullBlock($x, $y, $z)); if($id->getId() === BlockLegacyIds::AIR and $b->isSolid()){ break; } diff --git a/src/world/light/BlockLightUpdate.php b/src/world/light/BlockLightUpdate.php index 9be3d6a37..266e84f4b 100644 --- a/src/world/light/BlockLightUpdate.php +++ b/src/world/light/BlockLightUpdate.php @@ -33,6 +33,6 @@ class BlockLightUpdate extends LightUpdate{ public function recalculateNode(int $x, int $y, int $z) : void{ $block = $this->world->getBlockAt($x, $y, $z); - $this->setAndUpdateLight($x, $y, $z, max($block->getLightLevel(), $this->getHighestAdjacentLight($x, $y, $z) - BlockFactory::$lightFilter[$block->getFullId()])); + $this->setAndUpdateLight($x, $y, $z, max($block->getLightLevel(), $this->getHighestAdjacentLight($x, $y, $z) - BlockFactory::getInstance()->lightFilter[$block->getFullId()])); } } diff --git a/src/world/light/LightPopulationTask.php b/src/world/light/LightPopulationTask.php index 0fd0b40d6..8fa5776e9 100644 --- a/src/world/light/LightPopulationTask.php +++ b/src/world/light/LightPopulationTask.php @@ -57,14 +57,12 @@ class LightPopulationTask extends AsyncTask{ } public function onRun() : void{ - if(!BlockFactory::isInit()){ - BlockFactory::init(); - } /** @var Chunk $chunk */ $chunk = FastChunkSerializer::deserialize($this->chunk); - $chunk->recalculateHeightMap(BlockFactory::$lightFilter, BlockFactory::$diffusesSkyLight); - $chunk->populateSkyLight(BlockFactory::$lightFilter); + $blockFactory = BlockFactory::getInstance(); + $chunk->recalculateHeightMap($blockFactory->lightFilter, $blockFactory->diffusesSkyLight); + $chunk->populateSkyLight($blockFactory->lightFilter); $chunk->setLightPopulated(); $this->resultHeightMap = igbinary_serialize($chunk->getHeightMapArray()); diff --git a/src/world/light/LightUpdate.php b/src/world/light/LightUpdate.php index c91a68ac4..4a8abe8e5 100644 --- a/src/world/light/LightUpdate.php +++ b/src/world/light/LightUpdate.php @@ -188,7 +188,7 @@ abstract class LightUpdate{ protected function computeSpreadLight(int $x, int $y, int $z, int $newAdjacentLevel) : void{ $current = $this->currentLightArray->get($x & 0xf, $y & 0xf, $z & 0xf); - $potentialLight = $newAdjacentLevel - BlockFactory::$lightFilter[$this->subChunkHandler->currentSubChunk->getFullBlock($x & 0x0f, $y & 0x0f, $z & 0x0f)]; + $potentialLight = $newAdjacentLevel - BlockFactory::getInstance()->lightFilter[$this->subChunkHandler->currentSubChunk->getFullBlock($x & 0x0f, $y & 0x0f, $z & 0x0f)]; if($current < $potentialLight){ $this->currentLightArray->set($x & 0xf, $y & 0xf, $z & 0xf, $potentialLight); diff --git a/src/world/light/SkyLightUpdate.php b/src/world/light/SkyLightUpdate.php index 74eba4031..290537da9 100644 --- a/src/world/light/SkyLightUpdate.php +++ b/src/world/light/SkyLightUpdate.php @@ -51,7 +51,7 @@ class SkyLightUpdate extends LightUpdate{ $yPlusOne = $y + 1; if($yPlusOne === $oldHeightMap){ //Block changed directly beneath the heightmap. Check if a block was removed or changed to a different light-filter. - $newHeightMap = $chunk->recalculateHeightMapColumn($x & 0x0f, $z & 0x0f, BlockFactory::$lightFilter, BlockFactory::$diffusesSkyLight); + $newHeightMap = $chunk->recalculateHeightMapColumn($x & 0x0f, $z & 0x0f, BlockFactory::getInstance()->lightFilter, BlockFactory::getInstance()->diffusesSkyLight); }elseif($yPlusOne > $oldHeightMap){ //Block changed above the heightmap. if($source->getLightFilter() > 0 or $source->diffusesSkyLight()){ $chunk->setHeightMap($x & 0xf, $z & 0xf, $yPlusOne); @@ -72,7 +72,7 @@ class SkyLightUpdate extends LightUpdate{ $this->setAndUpdateLight($x, $i, $z, 15); } }else{ //No heightmap change, block changed "underground" - $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - BlockFactory::$lightFilter[$source->getFullId()])); + $this->setAndUpdateLight($x, $y, $z, max(0, $this->getHighestAdjacentLight($x, $y, $z) - BlockFactory::getInstance()->lightFilter[$source->getFullId()])); } } } diff --git a/tests/phpunit/block/BlockTest.php b/tests/phpunit/block/BlockTest.php index 218897d82..fef6694bd 100644 --- a/tests/phpunit/block/BlockTest.php +++ b/tests/phpunit/block/BlockTest.php @@ -29,8 +29,11 @@ use function json_decode; class BlockTest extends TestCase{ + /** @var BlockFactory */ + private $blockFactory; + public function setUp() : void{ - BlockFactory::init(); + $this->blockFactory = new BlockFactory(); } /** @@ -39,7 +42,7 @@ class BlockTest extends TestCase{ public function testAccidentalOverrideBlock() : void{ $block = new MyCustomBlock(new BlockIdentifier(BlockLegacyIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); $this->expectException(\InvalidArgumentException::class); - BlockFactory::register($block); + $this->blockFactory->register($block); } /** @@ -47,8 +50,8 @@ class BlockTest extends TestCase{ */ public function testDeliberateOverrideBlock() : void{ $block = new MyCustomBlock(new BlockIdentifier(BlockLegacyIds::COBBLESTONE), "Cobblestone", BlockBreakInfo::instant()); - BlockFactory::register($block, true); - self::assertInstanceOf(MyCustomBlock::class, BlockFactory::get($block->getId())); + $this->blockFactory->register($block, true); + self::assertInstanceOf(MyCustomBlock::class, $this->blockFactory->get($block->getId())); } /** @@ -56,10 +59,10 @@ class BlockTest extends TestCase{ */ public function testRegisterNewBlock() : void{ for($i = 0; $i < 256; ++$i){ - if(!BlockFactory::isRegistered($i)){ + if(!$this->blockFactory->isRegistered($i)){ $b = new StrangeNewBlock(new BlockIdentifier($i), "Strange New Block", BlockBreakInfo::instant()); - BlockFactory::register($b); - self::assertInstanceOf(StrangeNewBlock::class, BlockFactory::get($b->getId())); + $this->blockFactory->register($b); + self::assertInstanceOf(StrangeNewBlock::class, $this->blockFactory->get($b->getId())); return; } } @@ -72,7 +75,7 @@ class BlockTest extends TestCase{ */ public function testRegisterIdTooLarge() : void{ self::expectException(\RuntimeException::class); - BlockFactory::register(new OutOfBoundsBlock(new BlockIdentifier(25555), "Out Of Bounds Block", BlockBreakInfo::instant())); + $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(25555), "Out Of Bounds Block", BlockBreakInfo::instant())); } /** @@ -80,7 +83,7 @@ class BlockTest extends TestCase{ */ public function testRegisterIdTooSmall() : void{ self::expectException(\RuntimeException::class); - BlockFactory::register(new OutOfBoundsBlock(new BlockIdentifier(-1), "Out Of Bounds Block", BlockBreakInfo::instant())); + $this->blockFactory->register(new OutOfBoundsBlock(new BlockIdentifier(-1), "Out Of Bounds Block", BlockBreakInfo::instant())); } /** @@ -90,8 +93,8 @@ class BlockTest extends TestCase{ */ public function testBlockFactoryClone() : void{ for($i = 0; $i < 256; ++$i){ - $b1 = BlockFactory::get($i); - $b2 = BlockFactory::get($i); + $b1 = $this->blockFactory->get($i); + $b2 = $this->blockFactory->get($i); self::assertNotSame($b1, $b2); } } @@ -117,7 +120,7 @@ class BlockTest extends TestCase{ * @param int $meta */ public function testBlockGet(int $id, int $meta) : void{ - $block = BlockFactory::get($id, $meta); + $block = $this->blockFactory->get($id, $meta); self::assertEquals($id, $block->getId()); self::assertEquals($meta, $block->getMeta()); @@ -125,7 +128,7 @@ class BlockTest extends TestCase{ public function testBlockIds() : void{ for($i = 0; $i < 256; ++$i){ - $b = BlockFactory::get($i); + $b = $this->blockFactory->get($i); self::assertContains($i, $b->getIdInfo()->getAllBlockIds()); } } @@ -135,7 +138,7 @@ class BlockTest extends TestCase{ * (like freezes) when doing light population. */ public function testLightFiltersValid() : void{ - foreach(BlockFactory::$lightFilter as $id => $value){ + foreach($this->blockFactory->lightFilter as $id => $value){ self::assertNotNull($value, "Light filter value missing for $id"); self::assertLessThanOrEqual(15, $value, "Light filter value for $id is larger than the expected 15"); self::assertGreaterThan(0, $value, "Light filter value for $id must be larger than 0"); @@ -144,7 +147,7 @@ class BlockTest extends TestCase{ public function testConsistency() : void{ $list = json_decode(file_get_contents(__DIR__ . '/block_factory_consistency_check.json'), true); - $states = BlockFactory::getAllKnownStates(); + $states = $this->blockFactory->getAllKnownStates(); foreach($states as $k => $state){ self::assertArrayHasKey($k, $list, "New block state $k (" . $state->getName() . ") - consistency check may need regenerating"); self::assertSame($list[$k], $state->getName()); diff --git a/tests/phpunit/block/regenerate_consistency_check.php b/tests/phpunit/block/regenerate_consistency_check.php index 693bd89ae..aac5194c9 100644 --- a/tests/phpunit/block/regenerate_consistency_check.php +++ b/tests/phpunit/block/regenerate_consistency_check.php @@ -25,14 +25,14 @@ require dirname(__DIR__, 3) . '/vendor/autoload.php'; /* This script needs to be re-run after any intentional blockfactory change (adding or removing a block state). */ -\pocketmine\block\BlockFactory::init(); +$factory = new \pocketmine\block\BlockFactory(); $old = json_decode(file_get_contents(__DIR__ . '/block_factory_consistency_check.json'), true); $new = array_map( function(\pocketmine\block\Block $block) : string{ return $block->getName(); }, - \pocketmine\block\BlockFactory::getAllKnownStates() + $factory->getAllKnownStates() ); foreach($old as $k => $name){ if(!isset($new[$k])){ diff --git a/tests/phpunit/item/ItemFactoryTest.php b/tests/phpunit/item/ItemFactoryTest.php index a05fba080..9e85f0665 100644 --- a/tests/phpunit/item/ItemFactoryTest.php +++ b/tests/phpunit/item/ItemFactoryTest.php @@ -29,7 +29,6 @@ use pocketmine\block\BlockFactory; class ItemFactoryTest extends TestCase{ public function setUp() : void{ - BlockFactory::init(); ItemFactory::init(); } @@ -38,7 +37,7 @@ class ItemFactoryTest extends TestCase{ */ public function testItemBlockRegistered() : void{ for($id = 0; $id < 256; ++$id){ - self::assertEquals(BlockFactory::isRegistered($id), ItemFactory::isRegistered($id)); + self::assertEquals(BlockFactory::getInstance()->isRegistered($id), ItemFactory::isRegistered($id)); } } diff --git a/tests/phpunit/item/ItemTest.php b/tests/phpunit/item/ItemTest.php index 205ebae30..ee98abb3c 100644 --- a/tests/phpunit/item/ItemTest.php +++ b/tests/phpunit/item/ItemTest.php @@ -24,14 +24,12 @@ declare(strict_types=1); namespace pocketmine\item; use PHPUnit\Framework\TestCase; -use pocketmine\block\BlockFactory; use pocketmine\item\enchantment\Enchantment; use pocketmine\item\enchantment\EnchantmentInstance; class ItemTest extends TestCase{ public static function setUpBeforeClass() : void{ - BlockFactory::init(); ItemFactory::init(); Enchantment::init(); }