22declare(strict_types=1);
58use pocketmine\block\utils\AmethystTrait;
59use pocketmine\block\utils\LeavesType;
60use pocketmine\block\utils\SaplingType;
61use pocketmine\block\utils\WoodType;
62use pocketmine\crafting\FurnaceType;
68use
function mb_strtolower;
69use
function strtolower;
769 use CloningRegistryTrait;
771 private function __construct(){
775 protected static function register(
string $name,
Block $block) :
void{
776 self::_registryRegister($name, $block);
786 $result = self::_registryGetAll();
790 protected static function setup() : void{
791 $railBreakInfo = new Info(new BreakInfo(0.7));
792 self::register(
"activator_rail",
new ActivatorRail(
new BID(Ids::ACTIVATOR_RAIL),
"Activator Rail", $railBreakInfo));
793 self::register(
"air",
new Air(
new BID(Ids::AIR),
"Air",
new Info(BreakInfo::indestructible(-1.0))));
794 self::register(
"anvil",
new Anvil(
new BID(Ids::ANVIL),
"Anvil",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 6000.0))));
795 self::register(
"bamboo",
new Bamboo(
new BID(Ids::BAMBOO),
"Bamboo",
new Info(
new class(2.0 , ToolType::AXE) extends BreakInfo{
796 public function getBreakTime(
Item $item) : float{
797 if($item->getBlockToolType() === ToolType::SWORD){
800 return parent::getBreakTime($item);
802 }, [Tags::POTTABLE_PLANTS])));
803 self::register(
"bamboo_sapling",
new BambooSapling(
new BID(Ids::BAMBOO_SAPLING),
"Bamboo Sapling",
new Info(BreakInfo::instant())));
805 $bannerBreakInfo =
new Info(BreakInfo::axe(1.0));
806 self::register(
"banner",
new FloorBanner(
new BID(Ids::BANNER, TileBanner::class),
"Banner", $bannerBreakInfo));
807 self::register(
"wall_banner",
new WallBanner(
new BID(Ids::WALL_BANNER, TileBanner::class),
"Wall Banner", $bannerBreakInfo));
808 self::register(
"barrel",
new Barrel(
new BID(Ids::BARREL, TileBarrel::class),
"Barrel",
new Info(BreakInfo::axe(2.5))));
809 self::register(
"barrier",
new Transparent(
new BID(Ids::BARRIER),
"Barrier",
new Info(BreakInfo::indestructible())));
810 self::register(
"beacon",
new Beacon(
new BID(Ids::BEACON, TileBeacon::class),
"Beacon",
new Info(
new BreakInfo(3.0))));
811 self::register(
"bed",
new Bed(
new BID(Ids::BED, TileBed::class),
"Bed Block",
new Info(
new BreakInfo(0.2))));
812 self::register(
"bedrock",
new Bedrock(
new BID(Ids::BEDROCK),
"Bedrock",
new Info(BreakInfo::indestructible())));
814 self::register(
"beetroots",
new Beetroot(
new BID(Ids::BEETROOTS),
"Beetroot Block",
new Info(BreakInfo::instant())));
815 self::register(
"bell",
new Bell(
new BID(Ids::BELL, TileBell::class),
"Bell",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD))));
816 self::register(
"blue_ice",
new BlueIce(
new BID(Ids::BLUE_ICE),
"Blue Ice",
new Info(BreakInfo::pickaxe(2.8))));
817 self::register(
"bone_block",
new BoneBlock(
new BID(Ids::BONE_BLOCK),
"Bone Block",
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD))));
818 self::register(
"bookshelf",
new Bookshelf(
new BID(Ids::BOOKSHELF),
"Bookshelf",
new Info(BreakInfo::axe(1.5))));
819 self::register(
"chiseled_bookshelf",
new ChiseledBookshelf(
new BID(Ids::CHISELED_BOOKSHELF, TileChiseledBookshelf::class),
"Chiseled Bookshelf",
new Info(BreakInfo::axe(1.5))));
820 self::register(
"brewing_stand",
new BrewingStand(
new BID(Ids::BREWING_STAND, TileBrewingStand::class),
"Brewing Stand",
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD))));
822 $bricksBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
823 self::register(
"brick_stairs",
new Stair(
new BID(Ids::BRICK_STAIRS),
"Brick Stairs", $bricksBreakInfo));
824 self::register(
"bricks",
new Opaque(
new BID(Ids::BRICKS),
"Bricks", $bricksBreakInfo));
826 self::register(
"brown_mushroom",
new BrownMushroom(
new BID(Ids::BROWN_MUSHROOM),
"Brown Mushroom",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
827 self::register(
"cactus",
new Cactus(
new BID(Ids::CACTUS),
"Cactus",
new Info(
new BreakInfo(0.4), [Tags::POTTABLE_PLANTS])));
828 self::register(
"cake",
new Cake(
new BID(Ids::CAKE),
"Cake",
new Info(
new BreakInfo(0.5))));
829 self::register(
"carrots",
new Carrot(
new BID(Ids::CARROTS),
"Carrot Block",
new Info(BreakInfo::instant())));
831 $chestBreakInfo =
new Info(BreakInfo::axe(2.5));
832 self::register(
"chest",
new Chest(
new BID(Ids::CHEST, TileChest::class),
"Chest", $chestBreakInfo));
833 self::register(
"clay",
new Clay(
new BID(Ids::CLAY),
"Clay Block",
new Info(BreakInfo::shovel(0.6))));
834 self::register(
"coal",
new Coal(
new BID(Ids::COAL),
"Coal Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 30.0))));
836 $cobblestoneBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
837 self::register(
"cobblestone", $cobblestone =
new Opaque(
new BID(Ids::COBBLESTONE),
"Cobblestone", $cobblestoneBreakInfo));
838 self::register(
"mossy_cobblestone",
new Opaque(
new BID(Ids::MOSSY_COBBLESTONE),
"Mossy Cobblestone", $cobblestoneBreakInfo));
839 self::register(
"cobblestone_stairs",
new Stair(
new BID(Ids::COBBLESTONE_STAIRS),
"Cobblestone Stairs", $cobblestoneBreakInfo));
840 self::register(
"mossy_cobblestone_stairs",
new Stair(
new BID(Ids::MOSSY_COBBLESTONE_STAIRS),
"Mossy Cobblestone Stairs", $cobblestoneBreakInfo));
842 self::register(
"cobweb",
new Cobweb(
new BID(Ids::COBWEB),
"Cobweb",
new Info(
new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))));
843 self::register(
"cocoa_pod",
new CocoaBlock(
new BID(Ids::COCOA_POD),
"Cocoa Block",
new Info(BreakInfo::axe(0.2,
null, 15.0))));
844 self::register(
"coral_block",
new CoralBlock(
new BID(Ids::CORAL_BLOCK),
"Coral Block",
new Info(BreakInfo::pickaxe(7.0, ToolTier::WOOD))));
845 self::register(
"daylight_sensor",
new DaylightSensor(
new BID(Ids::DAYLIGHT_SENSOR, TileDaylightSensor::class),
"Daylight Sensor",
new Info(BreakInfo::axe(0.2))));
846 self::register(
"dead_bush",
new DeadBush(
new BID(Ids::DEAD_BUSH),
"Dead Bush",
new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS])));
847 self::register(
"detector_rail",
new DetectorRail(
new BID(Ids::DETECTOR_RAIL),
"Detector Rail", $railBreakInfo));
849 self::register(
"diamond",
new Opaque(
new BID(Ids::DIAMOND),
"Diamond Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON, 30.0))));
850 self::register(
"dirt",
new Dirt(
new BID(Ids::DIRT),
"Dirt",
new Info(BreakInfo::shovel(0.5), [Tags::DIRT])));
851 self::register(
"sunflower",
new DoublePlant(
new BID(Ids::SUNFLOWER),
"Sunflower",
new Info(BreakInfo::instant())));
852 self::register(
"lilac",
new DoublePlant(
new BID(Ids::LILAC),
"Lilac",
new Info(BreakInfo::instant())));
853 self::register(
"rose_bush",
new DoublePlant(
new BID(Ids::ROSE_BUSH),
"Rose Bush",
new Info(BreakInfo::instant())));
854 self::register(
"peony",
new DoublePlant(
new BID(Ids::PEONY),
"Peony",
new Info(BreakInfo::instant())));
855 self::register(
"pink_petals",
new PinkPetals(
new BID(Ids::PINK_PETALS),
"Pink Petals",
new Info(BreakInfo::instant())));
856 self::register(
"double_tallgrass",
new DoubleTallGrass(
new BID(Ids::DOUBLE_TALLGRASS),
"Double Tallgrass",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
857 self::register(
"large_fern",
new DoubleTallGrass(
new BID(Ids::LARGE_FERN),
"Large Fern",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
858 self::register(
"pitcher_plant",
new DoublePlant(
new BID(Ids::PITCHER_PLANT),
"Pitcher Plant",
new Info(BreakInfo::instant())));
859 self::register(
"pitcher_crop",
new PitcherCrop(
new BID(Ids::PITCHER_CROP),
"Pitcher Crop",
new Info(BreakInfo::instant())));
860 self::register(
"double_pitcher_crop",
new DoublePitcherCrop(
new BID(Ids::DOUBLE_PITCHER_CROP),
"Double Pitcher Crop",
new Info(BreakInfo::instant())));
861 self::register(
"dragon_egg",
new DragonEgg(
new BID(Ids::DRAGON_EGG),
"Dragon Egg",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD))));
862 self::register(
"dried_kelp",
new DriedKelp(
new BID(Ids::DRIED_KELP),
"Dried Kelp Block",
new Info(
new BreakInfo(0.5, ToolType::NONE, 0, 12.5))));
863 self::register(
"emerald",
new Opaque(
new BID(Ids::EMERALD),
"Emerald Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON, 30.0))));
864 self::register(
"enchanting_table",
new EnchantingTable(
new BID(Ids::ENCHANTING_TABLE, TileEnchantingTable::class),
"Enchanting Table",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 6000.0))));
865 self::register(
"end_portal_frame",
new EndPortalFrame(
new BID(Ids::END_PORTAL_FRAME),
"End Portal Frame",
new Info(BreakInfo::indestructible())));
866 self::register(
"end_rod",
new EndRod(
new BID(Ids::END_ROD),
"End Rod",
new Info(BreakInfo::instant())));
867 self::register(
"end_stone",
new Opaque(
new BID(Ids::END_STONE),
"End Stone",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 45.0))));
869 $endBrickBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD, 4.0));
870 self::register(
"end_stone_bricks",
new Opaque(
new BID(Ids::END_STONE_BRICKS),
"End Stone Bricks", $endBrickBreakInfo));
871 self::register(
"end_stone_brick_stairs",
new Stair(
new BID(Ids::END_STONE_BRICK_STAIRS),
"End Stone Brick Stairs", $endBrickBreakInfo));
873 self::register(
"ender_chest",
new EnderChest(
new BID(Ids::ENDER_CHEST, TileEnderChest::class),
"Ender Chest",
new Info(BreakInfo::pickaxe(22.5, ToolTier::WOOD, 3000.0))));
874 self::register(
"farmland",
new Farmland(
new BID(Ids::FARMLAND),
"Farmland",
new Info(BreakInfo::shovel(0.6), [Tags::DIRT])));
875 self::register(
"fire",
new Fire(
new BID(Ids::FIRE),
"Fire Block",
new Info(BreakInfo::instant(), [Tags::FIRE])));
877 $flowerTypeInfo =
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]);
878 self::register(
"dandelion",
new Flower(
new BID(Ids::DANDELION),
"Dandelion", $flowerTypeInfo));
879 self::register(
"poppy",
new Flower(
new BID(Ids::POPPY),
"Poppy", $flowerTypeInfo));
880 self::register(
"allium",
new Flower(
new BID(Ids::ALLIUM),
"Allium", $flowerTypeInfo));
881 self::register(
"azure_bluet",
new Flower(
new BID(Ids::AZURE_BLUET),
"Azure Bluet", $flowerTypeInfo));
882 self::register(
"blue_orchid",
new Flower(
new BID(Ids::BLUE_ORCHID),
"Blue Orchid", $flowerTypeInfo));
883 self::register(
"cornflower",
new Flower(
new BID(Ids::CORNFLOWER),
"Cornflower", $flowerTypeInfo));
884 self::register(
"lily_of_the_valley",
new Flower(
new BID(Ids::LILY_OF_THE_VALLEY),
"Lily of the Valley", $flowerTypeInfo));
885 self::register(
"orange_tulip",
new Flower(
new BID(Ids::ORANGE_TULIP),
"Orange Tulip", $flowerTypeInfo));
886 self::register(
"oxeye_daisy",
new Flower(
new BID(Ids::OXEYE_DAISY),
"Oxeye Daisy", $flowerTypeInfo));
887 self::register(
"pink_tulip",
new Flower(
new BID(Ids::PINK_TULIP),
"Pink Tulip", $flowerTypeInfo));
888 self::register(
"red_tulip",
new Flower(
new BID(Ids::RED_TULIP),
"Red Tulip", $flowerTypeInfo));
889 self::register(
"white_tulip",
new Flower(
new BID(Ids::WHITE_TULIP),
"White Tulip", $flowerTypeInfo));
890 self::register(
"torchflower",
new Flower(
new BID(Ids::TORCHFLOWER),
"Torchflower", $flowerTypeInfo));
891 self::register(
"torchflower_crop",
new TorchflowerCrop(
new BID(Ids::TORCHFLOWER_CROP),
"Torchflower Crop",
new Info(BreakInfo::instant())));
892 self::register(
"flower_pot",
new FlowerPot(
new BID(Ids::FLOWER_POT, TileFlowerPot::class),
"Flower Pot",
new Info(BreakInfo::instant())));
893 self::register(
"frosted_ice",
new FrostedIce(
new BID(Ids::FROSTED_ICE),
"Frosted Ice",
new Info(BreakInfo::pickaxe(2.5))));
894 self::register(
"furnace",
new Furnace(
new BID(Ids::FURNACE, TileNormalFurnace::class),
"Furnace",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::FURNACE));
895 self::register(
"blast_furnace",
new Furnace(
new BID(Ids::BLAST_FURNACE, TileBlastFurnace::class),
"Blast Furnace",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::BLAST_FURNACE));
896 self::register(
"smoker",
new Furnace(
new BID(Ids::SMOKER, TileSmoker::class),
"Smoker",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::SMOKER));
898 $glassBreakInfo =
new Info(
new BreakInfo(0.3));
899 self::register(
"glass",
new Glass(
new BID(Ids::GLASS),
"Glass", $glassBreakInfo));
900 self::register(
"glass_pane",
new GlassPane(
new BID(Ids::GLASS_PANE),
"Glass Pane", $glassBreakInfo));
901 self::register(
"glowing_obsidian",
new GlowingObsidian(
new BID(Ids::GLOWING_OBSIDIAN),
"Glowing Obsidian",
new Info(BreakInfo::pickaxe(10.0, ToolTier::DIAMOND, 50.0))));
902 self::register(
"glowstone",
new Glowstone(
new BID(Ids::GLOWSTONE),
"Glowstone",
new Info(BreakInfo::pickaxe(0.3))));
903 self::register(
"glow_lichen",
new GlowLichen(
new BID(Ids::GLOW_LICHEN),
"Glow Lichen",
new Info(BreakInfo::axe(0.2,
null, 0.2))));
904 self::register(
"gold",
new Opaque(
new BID(Ids::GOLD),
"Gold Block",
new Info(BreakInfo::pickaxe(3.0, ToolTier::IRON, 30.0))));
906 $grassBreakInfo = BreakInfo::shovel(0.6);
907 self::register(
"grass",
new Grass(
new BID(Ids::GRASS),
"Grass",
new Info($grassBreakInfo, [Tags::DIRT])));
908 self::register(
"grass_path",
new GrassPath(
new BID(Ids::GRASS_PATH),
"Grass Path",
new Info($grassBreakInfo)));
909 self::register(
"gravel",
new Gravel(
new BID(Ids::GRAVEL),
"Gravel",
new Info(BreakInfo::shovel(0.6))));
911 $hardenedClayBreakInfo =
new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD, 21.0));
912 self::register(
"hardened_clay",
new HardenedClay(
new BID(Ids::HARDENED_CLAY),
"Hardened Clay", $hardenedClayBreakInfo));
914 $hardenedGlassBreakInfo =
new Info(
new BreakInfo(10.0));
915 self::register(
"hardened_glass",
new HardenedGlass(
new BID(Ids::HARDENED_GLASS),
"Hardened Glass", $hardenedGlassBreakInfo));
916 self::register(
"hardened_glass_pane",
new HardenedGlassPane(
new BID(Ids::HARDENED_GLASS_PANE),
"Hardened Glass Pane", $hardenedGlassBreakInfo));
917 self::register(
"hay_bale",
new HayBale(
new BID(Ids::HAY_BALE),
"Hay Bale",
new Info(
new BreakInfo(0.5))));
918 self::register(
"hopper",
new Hopper(
new BID(Ids::HOPPER, TileHopper::class),
"Hopper",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 15.0))));
919 self::register(
"ice",
new Ice(
new BID(Ids::ICE),
"Ice",
new Info(BreakInfo::pickaxe(0.5))));
921 $updateBlockBreakInfo =
new Info(
new BreakInfo(1.0));
922 self::register(
"info_update",
new Opaque(
new BID(Ids::INFO_UPDATE),
"update!", $updateBlockBreakInfo));
923 self::register(
"info_update2",
new Opaque(
new BID(Ids::INFO_UPDATE2),
"ate!upd", $updateBlockBreakInfo));
924 self::register(
"invisible_bedrock",
new Transparent(
new BID(Ids::INVISIBLE_BEDROCK),
"Invisible Bedrock",
new Info(BreakInfo::indestructible())));
926 $ironBreakInfo =
new Info(BreakInfo::pickaxe(5.0, ToolTier::STONE, 30.0));
927 self::register(
"iron",
new Opaque(
new BID(Ids::IRON),
"Iron Block", $ironBreakInfo));
928 self::register(
"iron_bars",
new Thin(
new BID(Ids::IRON_BARS),
"Iron Bars", $ironBreakInfo));
929 $ironDoorBreakInfo =
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 25.0));
930 self::register(
"iron_door",
new Door(
new BID(Ids::IRON_DOOR),
"Iron Door", $ironDoorBreakInfo));
931 self::register(
"iron_trapdoor",
new Trapdoor(
new BID(Ids::IRON_TRAPDOOR),
"Iron Trapdoor", $ironDoorBreakInfo));
933 $itemFrameInfo =
new Info(
new BreakInfo(0.25));
934 self::register(
"item_frame",
new ItemFrame(
new BID(Ids::ITEM_FRAME, TileItemFrame::class),
"Item Frame", $itemFrameInfo));
935 self::register(
"glowing_item_frame",
new ItemFrame(
new BID(Ids::GLOWING_ITEM_FRAME, TileGlowingItemFrame::class),
"Glow Item Frame", $itemFrameInfo));
937 self::register(
"jukebox",
new Jukebox(
new BID(Ids::JUKEBOX, TileJukebox::class),
"Jukebox",
new Info(BreakInfo::axe(0.8))));
938 self::register(
"ladder",
new Ladder(
new BID(Ids::LADDER),
"Ladder",
new Info(BreakInfo::axe(0.4))));
940 $lanternBreakInfo =
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD));
941 self::register(
"lantern",
new Lantern(
new BID(Ids::LANTERN),
"Lantern", $lanternBreakInfo, 15));
942 self::register(
"soul_lantern",
new Lantern(
new BID(Ids::SOUL_LANTERN),
"Soul Lantern", $lanternBreakInfo, 10));
944 self::register(
"lapis_lazuli",
new Opaque(
new BID(Ids::LAPIS_LAZULI),
"Lapis Lazuli Block",
new Info(BreakInfo::pickaxe(3.0, ToolTier::STONE))));
945 self::register(
"lava",
new Lava(
new BID(Ids::LAVA),
"Lava",
new Info(BreakInfo::indestructible(500.0))));
946 self::register(
"lectern",
new Lectern(
new BID(Ids::LECTERN, TileLectern::class),
"Lectern",
new Info(BreakInfo::axe(2.0))));
947 self::register(
"lever",
new Lever(
new BID(Ids::LEVER),
"Lever",
new Info(
new BreakInfo(0.5))));
948 self::register(
"magma",
new Magma(
new BID(Ids::MAGMA),
"Magma Block",
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD))));
949 self::register(
"melon",
new Melon(
new BID(Ids::MELON),
"Melon Block",
new Info(BreakInfo::axe(1.0))));
950 self::register(
"melon_stem",
new MelonStem(
new BID(Ids::MELON_STEM),
"Melon Stem",
new Info(BreakInfo::instant())));
951 self::register(
"monster_spawner",
new MonsterSpawner(
new BID(Ids::MONSTER_SPAWNER, TileMonsterSpawner::class),
"Monster Spawner",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD))));
952 self::register(
"mycelium",
new Mycelium(
new BID(Ids::MYCELIUM),
"Mycelium",
new Info(BreakInfo::shovel(0.6), [Tags::DIRT])));
954 $netherBrickBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
955 self::register(
"nether_bricks",
new Opaque(
new BID(Ids::NETHER_BRICKS),
"Nether Bricks", $netherBrickBreakInfo));
956 self::register(
"red_nether_bricks",
new Opaque(
new BID(Ids::RED_NETHER_BRICKS),
"Red Nether Bricks", $netherBrickBreakInfo));
957 self::register(
"nether_brick_fence",
new Fence(
new BID(Ids::NETHER_BRICK_FENCE),
"Nether Brick Fence", $netherBrickBreakInfo));
958 self::register(
"nether_brick_stairs",
new Stair(
new BID(Ids::NETHER_BRICK_STAIRS),
"Nether Brick Stairs", $netherBrickBreakInfo));
959 self::register(
"red_nether_brick_stairs",
new Stair(
new BID(Ids::RED_NETHER_BRICK_STAIRS),
"Red Nether Brick Stairs", $netherBrickBreakInfo));
960 self::register(
"chiseled_nether_bricks",
new Opaque(
new BID(Ids::CHISELED_NETHER_BRICKS),
"Chiseled Nether Bricks", $netherBrickBreakInfo));
961 self::register(
"cracked_nether_bricks",
new Opaque(
new BID(Ids::CRACKED_NETHER_BRICKS),
"Cracked Nether Bricks", $netherBrickBreakInfo));
963 self::register(
"nether_portal",
new NetherPortal(
new BID(Ids::NETHER_PORTAL),
"Nether Portal",
new Info(BreakInfo::indestructible(0.0))));
964 self::register(
"nether_reactor_core",
new NetherReactor(
new BID(Ids::NETHER_REACTOR_CORE),
"Nether Reactor Core",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD))));
965 self::register(
"nether_wart_block",
new Opaque(
new BID(Ids::NETHER_WART_BLOCK),
"Nether Wart Block",
new Info(
new BreakInfo(1.0, ToolType::HOE))));
966 self::register(
"nether_wart",
new NetherWartPlant(
new BID(Ids::NETHER_WART),
"Nether Wart",
new Info(BreakInfo::instant())));
967 self::register(
"netherrack",
new Netherrack(
new BID(Ids::NETHERRACK),
"Netherrack",
new Info(BreakInfo::pickaxe(0.4, ToolTier::WOOD))));
968 self::register(
"note_block",
new Note(
new BID(Ids::NOTE_BLOCK, TileNote::class),
"Note Block",
new Info(BreakInfo::axe(0.8))));
969 self::register(
"obsidian",
new Opaque(
new BID(Ids::OBSIDIAN),
"Obsidian",
new Info(BreakInfo::pickaxe(35.0 , ToolTier::DIAMOND, 6000.0))));
970 self::register(
"packed_ice",
new PackedIce(
new BID(Ids::PACKED_ICE),
"Packed Ice",
new Info(BreakInfo::pickaxe(0.5))));
971 self::register(
"podzol",
new Podzol(
new BID(Ids::PODZOL),
"Podzol",
new Info(BreakInfo::shovel(0.5), [Tags::DIRT])));
972 self::register(
"potatoes",
new Potato(
new BID(Ids::POTATOES),
"Potato Block",
new Info(BreakInfo::instant())));
973 self::register(
"powered_rail",
new PoweredRail(
new BID(Ids::POWERED_RAIL),
"Powered Rail", $railBreakInfo));
975 $prismarineBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
976 self::register(
"prismarine",
new Opaque(
new BID(Ids::PRISMARINE),
"Prismarine", $prismarineBreakInfo));
977 self::register(
"dark_prismarine",
new Opaque(
new BID(Ids::DARK_PRISMARINE),
"Dark Prismarine", $prismarineBreakInfo));
978 self::register(
"prismarine_bricks",
new Opaque(
new BID(Ids::PRISMARINE_BRICKS),
"Prismarine Bricks", $prismarineBreakInfo));
979 self::register(
"prismarine_bricks_stairs",
new Stair(
new BID(Ids::PRISMARINE_BRICKS_STAIRS),
"Prismarine Bricks Stairs", $prismarineBreakInfo));
980 self::register(
"dark_prismarine_stairs",
new Stair(
new BID(Ids::DARK_PRISMARINE_STAIRS),
"Dark Prismarine Stairs", $prismarineBreakInfo));
981 self::register(
"prismarine_stairs",
new Stair(
new BID(Ids::PRISMARINE_STAIRS),
"Prismarine Stairs", $prismarineBreakInfo));
983 $pumpkinBreakInfo =
new Info(BreakInfo::axe(1.0));
984 self::register(
"pumpkin",
new Pumpkin(
new BID(Ids::PUMPKIN),
"Pumpkin", $pumpkinBreakInfo));
985 self::register(
"carved_pumpkin",
new CarvedPumpkin(
new BID(Ids::CARVED_PUMPKIN),
"Carved Pumpkin",
new Info(BreakInfo::axe(1.0), enchantmentTags: [EnchantmentTags::MASK])));
986 self::register(
"lit_pumpkin",
new LitPumpkin(
new BID(Ids::LIT_PUMPKIN),
"Jack o'Lantern", $pumpkinBreakInfo));
988 self::register(
"pumpkin_stem",
new PumpkinStem(
new BID(Ids::PUMPKIN_STEM),
"Pumpkin Stem",
new Info(BreakInfo::instant())));
990 $purpurBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
991 self::register(
"purpur",
new Opaque(
new BID(Ids::PURPUR),
"Purpur Block", $purpurBreakInfo));
992 self::register(
"purpur_pillar",
new SimplePillar(
new BID(Ids::PURPUR_PILLAR),
"Purpur Pillar", $purpurBreakInfo));
993 self::register(
"purpur_stairs",
new Stair(
new BID(Ids::PURPUR_STAIRS),
"Purpur Stairs", $purpurBreakInfo));
995 $quartzBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD));
996 self::register(
"quartz",
new Opaque(
new BID(Ids::QUARTZ),
"Quartz Block", $quartzBreakInfo));
997 self::register(
"chiseled_quartz",
new SimplePillar(
new BID(Ids::CHISELED_QUARTZ),
"Chiseled Quartz Block", $quartzBreakInfo));
998 self::register(
"quartz_pillar",
new SimplePillar(
new BID(Ids::QUARTZ_PILLAR),
"Quartz Pillar", $quartzBreakInfo));
999 self::register(
"smooth_quartz",
new Opaque(
new BID(Ids::SMOOTH_QUARTZ),
"Smooth Quartz Block", $quartzBreakInfo));
1000 self::register(
"quartz_bricks",
new Opaque(
new BID(Ids::QUARTZ_BRICKS),
"Quartz Bricks", $quartzBreakInfo));
1002 self::register(
"quartz_stairs",
new Stair(
new BID(Ids::QUARTZ_STAIRS),
"Quartz Stairs", $quartzBreakInfo));
1003 self::register(
"smooth_quartz_stairs",
new Stair(
new BID(Ids::SMOOTH_QUARTZ_STAIRS),
"Smooth Quartz Stairs", $quartzBreakInfo));
1005 self::register(
"rail",
new Rail(
new BID(Ids::RAIL),
"Rail", $railBreakInfo));
1006 self::register(
"red_mushroom",
new RedMushroom(
new BID(Ids::RED_MUSHROOM),
"Red Mushroom",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
1007 self::register(
"redstone",
new Redstone(
new BID(Ids::REDSTONE),
"Redstone Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 30.0))));
1008 self::register(
"redstone_comparator",
new RedstoneComparator(
new BID(Ids::REDSTONE_COMPARATOR, TileComparator::class),
"Redstone Comparator",
new Info(BreakInfo::instant())));
1009 self::register(
"redstone_lamp",
new RedstoneLamp(
new BID(Ids::REDSTONE_LAMP),
"Redstone Lamp",
new Info(
new BreakInfo(0.3))));
1010 self::register(
"redstone_repeater",
new RedstoneRepeater(
new BID(Ids::REDSTONE_REPEATER),
"Redstone Repeater",
new Info(BreakInfo::instant())));
1011 self::register(
"redstone_torch",
new RedstoneTorch(
new BID(Ids::REDSTONE_TORCH),
"Redstone Torch",
new Info(BreakInfo::instant())));
1012 self::register(
"redstone_wire",
new RedstoneWire(
new BID(Ids::REDSTONE_WIRE),
"Redstone",
new Info(BreakInfo::instant())));
1013 self::register(
"reserved6",
new Reserved6(
new BID(Ids::RESERVED6),
"reserved6",
new Info(BreakInfo::instant())));
1015 $sandTypeInfo =
new Info(BreakInfo::shovel(0.5), [Tags::SAND]);
1016 self::register(
"sand",
new Sand(
new BID(Ids::SAND),
"Sand", $sandTypeInfo));
1017 self::register(
"red_sand",
new Sand(
new BID(Ids::RED_SAND),
"Red Sand", $sandTypeInfo));
1019 self::register(
"sea_lantern",
new SeaLantern(
new BID(Ids::SEA_LANTERN),
"Sea Lantern",
new Info(
new BreakInfo(0.3))));
1020 self::register(
"sea_pickle",
new SeaPickle(
new BID(Ids::SEA_PICKLE),
"Sea Pickle",
new Info(BreakInfo::instant())));
1021 self::register(
"mob_head",
new MobHead(
new BID(Ids::MOB_HEAD, TileMobHead::class),
"Mob Head",
new Info(
new BreakInfo(1.0), enchantmentTags: [EnchantmentTags::MASK])));
1022 self::register(
"slime",
new Slime(
new BID(Ids::SLIME),
"Slime Block",
new Info(BreakInfo::instant())));
1023 self::register(
"snow",
new Snow(
new BID(Ids::SNOW),
"Snow Block",
new Info(BreakInfo::shovel(0.2, ToolTier::WOOD))));
1024 self::register(
"snow_layer",
new SnowLayer(
new BID(Ids::SNOW_LAYER),
"Snow Layer",
new Info(BreakInfo::shovel(0.1, ToolTier::WOOD))));
1025 self::register(
"soul_sand",
new SoulSand(
new BID(Ids::SOUL_SAND),
"Soul Sand",
new Info(BreakInfo::shovel(0.5))));
1026 self::register(
"sponge",
new Sponge(
new BID(Ids::SPONGE),
"Sponge",
new Info(
new BreakInfo(0.6, ToolType::HOE))));
1027 $shulkerBoxBreakInfo =
new Info(BreakInfo::pickaxe(2));
1028 self::register(
"shulker_box",
new ShulkerBox(
new BID(Ids::SHULKER_BOX, TileShulkerBox::class),
"Shulker Box", $shulkerBoxBreakInfo));
1030 $stoneBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
1033 $stone =
new class(
new BID(Ids::STONE),
"Stone", $stoneBreakInfo) extends Opaque{
1034 public function getDropsForCompatibleTool(Item $item) : array{
1035 return [VanillaBlocks::COBBLESTONE()->asItem()];
1038 public function isAffectedBySilkTouch() : bool{
1043 self::register(
"andesite",
new Opaque(
new BID(Ids::ANDESITE),
"Andesite", $stoneBreakInfo));
1044 self::register(
"diorite",
new Opaque(
new BID(Ids::DIORITE),
"Diorite", $stoneBreakInfo));
1045 self::register(
"granite",
new Opaque(
new BID(Ids::GRANITE),
"Granite", $stoneBreakInfo));
1046 self::register(
"polished_andesite",
new Opaque(
new BID(Ids::POLISHED_ANDESITE),
"Polished Andesite", $stoneBreakInfo));
1047 self::register(
"polished_diorite",
new Opaque(
new BID(Ids::POLISHED_DIORITE),
"Polished Diorite", $stoneBreakInfo));
1048 self::register(
"polished_granite",
new Opaque(
new BID(Ids::POLISHED_GRANITE),
"Polished Granite", $stoneBreakInfo));
1050 self::register(
"stone_bricks", $stoneBrick =
new Opaque(
new BID(Ids::STONE_BRICKS),
"Stone Bricks", $stoneBreakInfo));
1051 self::register(
"mossy_stone_bricks", $mossyStoneBrick =
new Opaque(
new BID(Ids::MOSSY_STONE_BRICKS),
"Mossy Stone Bricks", $stoneBreakInfo));
1052 self::register(
"cracked_stone_bricks", $crackedStoneBrick =
new Opaque(
new BID(Ids::CRACKED_STONE_BRICKS),
"Cracked Stone Bricks", $stoneBreakInfo));
1053 self::register(
"chiseled_stone_bricks", $chiseledStoneBrick =
new Opaque(
new BID(Ids::CHISELED_STONE_BRICKS),
"Chiseled Stone Bricks", $stoneBreakInfo));
1055 $infestedStoneBreakInfo =
new Info(BreakInfo::pickaxe(0.75));
1056 self::register(
"infested_stone",
new InfestedStone(
new BID(Ids::INFESTED_STONE),
"Infested Stone", $infestedStoneBreakInfo, $stone));
1057 self::register(
"infested_stone_brick",
new InfestedStone(
new BID(Ids::INFESTED_STONE_BRICK),
"Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick));
1058 self::register(
"infested_cobblestone",
new InfestedStone(
new BID(Ids::INFESTED_COBBLESTONE),
"Infested Cobblestone", $infestedStoneBreakInfo, $cobblestone));
1059 self::register(
"infested_mossy_stone_brick",
new InfestedStone(
new BID(Ids::INFESTED_MOSSY_STONE_BRICK),
"Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick));
1060 self::register(
"infested_cracked_stone_brick",
new InfestedStone(
new BID(Ids::INFESTED_CRACKED_STONE_BRICK),
"Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick));
1061 self::register(
"infested_chiseled_stone_brick",
new InfestedStone(
new BID(Ids::INFESTED_CHISELED_STONE_BRICK),
"Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick));
1063 self::register(
"stone_stairs",
new Stair(
new BID(Ids::STONE_STAIRS),
"Stone Stairs", $stoneBreakInfo));
1064 self::register(
"smooth_stone",
new Opaque(
new BID(Ids::SMOOTH_STONE),
"Smooth Stone", $stoneBreakInfo));
1065 self::register(
"andesite_stairs",
new Stair(
new BID(Ids::ANDESITE_STAIRS),
"Andesite Stairs", $stoneBreakInfo));
1066 self::register(
"diorite_stairs",
new Stair(
new BID(Ids::DIORITE_STAIRS),
"Diorite Stairs", $stoneBreakInfo));
1067 self::register(
"granite_stairs",
new Stair(
new BID(Ids::GRANITE_STAIRS),
"Granite Stairs", $stoneBreakInfo));
1068 self::register(
"polished_andesite_stairs",
new Stair(
new BID(Ids::POLISHED_ANDESITE_STAIRS),
"Polished Andesite Stairs", $stoneBreakInfo));
1069 self::register(
"polished_diorite_stairs",
new Stair(
new BID(Ids::POLISHED_DIORITE_STAIRS),
"Polished Diorite Stairs", $stoneBreakInfo));
1070 self::register(
"polished_granite_stairs",
new Stair(
new BID(Ids::POLISHED_GRANITE_STAIRS),
"Polished Granite Stairs", $stoneBreakInfo));
1071 self::register(
"stone_brick_stairs",
new Stair(
new BID(Ids::STONE_BRICK_STAIRS),
"Stone Brick Stairs", $stoneBreakInfo));
1072 self::register(
"mossy_stone_brick_stairs",
new Stair(
new BID(Ids::MOSSY_STONE_BRICK_STAIRS),
"Mossy Stone Brick Stairs", $stoneBreakInfo));
1073 self::register(
"stone_button",
new StoneButton(
new BID(Ids::STONE_BUTTON),
"Stone Button",
new Info(BreakInfo::pickaxe(0.5))));
1074 self::register(
"stonecutter",
new Stonecutter(
new BID(Ids::STONECUTTER),
"Stonecutter",
new Info(BreakInfo::pickaxe(3.5))));
1075 self::register(
"stone_pressure_plate",
new StonePressurePlate(
new BID(Ids::STONE_PRESSURE_PLATE),
"Stone Pressure Plate",
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD))));
1078 $stoneSlabBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
1080 self::register(
"brick_slab",
new Slab(
new BID(Ids::BRICK_SLAB),
"Brick", $stoneSlabBreakInfo));
1081 self::register(
"cobblestone_slab",
new Slab(
new BID(Ids::COBBLESTONE_SLAB),
"Cobblestone", $stoneSlabBreakInfo));
1082 self::register(
"fake_wooden_slab",
new Slab(
new BID(Ids::FAKE_WOODEN_SLAB),
"Fake Wooden", $stoneSlabBreakInfo));
1083 self::register(
"nether_brick_slab",
new Slab(
new BID(Ids::NETHER_BRICK_SLAB),
"Nether Brick", $stoneSlabBreakInfo));
1084 self::register(
"quartz_slab",
new Slab(
new BID(Ids::QUARTZ_SLAB),
"Quartz", $stoneSlabBreakInfo));
1085 self::register(
"sandstone_slab",
new Slab(
new BID(Ids::SANDSTONE_SLAB),
"Sandstone", $stoneSlabBreakInfo));
1086 self::register(
"smooth_stone_slab",
new Slab(
new BID(Ids::SMOOTH_STONE_SLAB),
"Smooth Stone", $stoneSlabBreakInfo));
1087 self::register(
"stone_brick_slab",
new Slab(
new BID(Ids::STONE_BRICK_SLAB),
"Stone Brick", $stoneSlabBreakInfo));
1088 self::register(
"dark_prismarine_slab",
new Slab(
new BID(Ids::DARK_PRISMARINE_SLAB),
"Dark Prismarine", $stoneSlabBreakInfo));
1089 self::register(
"mossy_cobblestone_slab",
new Slab(
new BID(Ids::MOSSY_COBBLESTONE_SLAB),
"Mossy Cobblestone", $stoneSlabBreakInfo));
1090 self::register(
"prismarine_slab",
new Slab(
new BID(Ids::PRISMARINE_SLAB),
"Prismarine", $stoneSlabBreakInfo));
1091 self::register(
"prismarine_bricks_slab",
new Slab(
new BID(Ids::PRISMARINE_BRICKS_SLAB),
"Prismarine Bricks", $stoneSlabBreakInfo));
1092 self::register(
"purpur_slab",
new Slab(
new BID(Ids::PURPUR_SLAB),
"Purpur", $stoneSlabBreakInfo));
1093 self::register(
"red_nether_brick_slab",
new Slab(
new BID(Ids::RED_NETHER_BRICK_SLAB),
"Red Nether Brick", $stoneSlabBreakInfo));
1094 self::register(
"red_sandstone_slab",
new Slab(
new BID(Ids::RED_SANDSTONE_SLAB),
"Red Sandstone", $stoneSlabBreakInfo));
1095 self::register(
"smooth_sandstone_slab",
new Slab(
new BID(Ids::SMOOTH_SANDSTONE_SLAB),
"Smooth Sandstone", $stoneSlabBreakInfo));
1096 self::register(
"andesite_slab",
new Slab(
new BID(Ids::ANDESITE_SLAB),
"Andesite", $stoneSlabBreakInfo));
1097 self::register(
"diorite_slab",
new Slab(
new BID(Ids::DIORITE_SLAB),
"Diorite", $stoneSlabBreakInfo));
1098 self::register(
"end_stone_brick_slab",
new Slab(
new BID(Ids::END_STONE_BRICK_SLAB),
"End Stone Brick", $stoneSlabBreakInfo));
1099 self::register(
"granite_slab",
new Slab(
new BID(Ids::GRANITE_SLAB),
"Granite", $stoneSlabBreakInfo));
1100 self::register(
"polished_andesite_slab",
new Slab(
new BID(Ids::POLISHED_ANDESITE_SLAB),
"Polished Andesite", $stoneSlabBreakInfo));
1101 self::register(
"polished_diorite_slab",
new Slab(
new BID(Ids::POLISHED_DIORITE_SLAB),
"Polished Diorite", $stoneSlabBreakInfo));
1102 self::register(
"polished_granite_slab",
new Slab(
new BID(Ids::POLISHED_GRANITE_SLAB),
"Polished Granite", $stoneSlabBreakInfo));
1103 self::register(
"smooth_red_sandstone_slab",
new Slab(
new BID(Ids::SMOOTH_RED_SANDSTONE_SLAB),
"Smooth Red Sandstone", $stoneSlabBreakInfo));
1104 self::register(
"cut_red_sandstone_slab",
new Slab(
new BID(Ids::CUT_RED_SANDSTONE_SLAB),
"Cut Red Sandstone", $stoneSlabBreakInfo));
1105 self::register(
"cut_sandstone_slab",
new Slab(
new BID(Ids::CUT_SANDSTONE_SLAB),
"Cut Sandstone", $stoneSlabBreakInfo));
1106 self::register(
"mossy_stone_brick_slab",
new Slab(
new BID(Ids::MOSSY_STONE_BRICK_SLAB),
"Mossy Stone Brick", $stoneSlabBreakInfo));
1107 self::register(
"smooth_quartz_slab",
new Slab(
new BID(Ids::SMOOTH_QUARTZ_SLAB),
"Smooth Quartz", $stoneSlabBreakInfo));
1108 self::register(
"stone_slab",
new Slab(
new BID(Ids::STONE_SLAB),
"Stone", $stoneSlabBreakInfo));
1110 self::register(
"legacy_stonecutter",
new Opaque(
new BID(Ids::LEGACY_STONECUTTER),
"Legacy Stonecutter",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD))));
1111 self::register(
"sugarcane",
new Sugarcane(
new BID(Ids::SUGARCANE),
"Sugarcane",
new Info(BreakInfo::instant())));
1112 self::register(
"sweet_berry_bush",
new SweetBerryBush(
new BID(Ids::SWEET_BERRY_BUSH),
"Sweet Berry Bush",
new Info(BreakInfo::instant())));
1113 self::register(
"tnt",
new TNT(
new BID(Ids::TNT),
"TNT",
new Info(BreakInfo::instant())));
1114 self::register(
"fern",
new TallGrass(
new BID(Ids::FERN),
"Fern",
new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS])));
1115 self::register(
"tall_grass",
new TallGrass(
new BID(Ids::TALL_GRASS),
"Tall Grass",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
1117 self::register(
"blue_torch",
new Torch(
new BID(Ids::BLUE_TORCH),
"Blue Torch",
new Info(BreakInfo::instant())));
1118 self::register(
"purple_torch",
new Torch(
new BID(Ids::PURPLE_TORCH),
"Purple Torch",
new Info(BreakInfo::instant())));
1119 self::register(
"red_torch",
new Torch(
new BID(Ids::RED_TORCH),
"Red Torch",
new Info(BreakInfo::instant())));
1120 self::register(
"green_torch",
new Torch(
new BID(Ids::GREEN_TORCH),
"Green Torch",
new Info(BreakInfo::instant())));
1121 self::register(
"torch",
new Torch(
new BID(Ids::TORCH),
"Torch",
new Info(BreakInfo::instant())));
1123 self::register(
"trapped_chest",
new TrappedChest(
new BID(Ids::TRAPPED_CHEST, TileChest::class),
"Trapped Chest", $chestBreakInfo));
1124 self::register(
"tripwire",
new Tripwire(
new BID(Ids::TRIPWIRE),
"Tripwire",
new Info(BreakInfo::instant())));
1125 self::register(
"tripwire_hook",
new TripwireHook(
new BID(Ids::TRIPWIRE_HOOK),
"Tripwire Hook",
new Info(BreakInfo::instant())));
1126 self::register(
"underwater_torch",
new UnderwaterTorch(
new BID(Ids::UNDERWATER_TORCH),
"Underwater Torch",
new Info(BreakInfo::instant())));
1127 self::register(
"vines",
new Vine(
new BID(Ids::VINES),
"Vines",
new Info(BreakInfo::axe(0.2))));
1128 self::register(
"water",
new Water(
new BID(Ids::WATER),
"Water",
new Info(BreakInfo::indestructible(500.0))));
1129 self::register(
"lily_pad",
new WaterLily(
new BID(Ids::LILY_PAD),
"Lily Pad",
new Info(BreakInfo::instant())));
1131 $weightedPressurePlateBreakInfo =
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD));
1132 self::register(
"weighted_pressure_plate_heavy",
new WeightedPressurePlateHeavy(
1133 new BID(Ids::WEIGHTED_PRESSURE_PLATE_HEAVY),
1134 "Weighted Pressure Plate Heavy",
1135 $weightedPressurePlateBreakInfo,
1136 deactivationDelayTicks: 10,
1137 signalStrengthFactor: 0.1
1139 self::register(
"weighted_pressure_plate_light",
new WeightedPressurePlateLight(
1140 new BID(Ids::WEIGHTED_PRESSURE_PLATE_LIGHT),
1141 "Weighted Pressure Plate Light",
1142 $weightedPressurePlateBreakInfo,
1143 deactivationDelayTicks: 10,
1144 signalStrengthFactor: 1.0
1146 self::register(
"wheat",
new Wheat(
new BID(Ids::WHEAT),
"Wheat Block",
new Info(BreakInfo::instant())));
1148 $leavesBreakInfo =
new Info(
new class(0.2, ToolType::HOE) extends BreakInfo{
1149 public function getBreakTime(Item $item) : float{
1150 if($item->getBlockToolType() === ToolType::SHEARS){
1153 return parent::getBreakTime($item);
1156 $saplingTypeInfo =
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]);
1158 foreach(SaplingType::cases() as $saplingType){
1159 $name = $saplingType->getDisplayName();
1160 self::register(strtolower($saplingType->name) .
"_sapling",
new Sapling(WoodLikeBlockIdHelper::getSaplingIdentifier($saplingType), $name .
" Sapling", $saplingTypeInfo, $saplingType));
1162 foreach(LeavesType::cases() as $leavesType){
1163 $name = $leavesType->getDisplayName();
1164 self::register(strtolower($leavesType->name) .
"_leaves",
new Leaves(WoodLikeBlockIdHelper::getLeavesIdentifier($leavesType), $name .
" Leaves", $leavesBreakInfo, $leavesType));
1167 $sandstoneBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD));
1168 self::register(
"red_sandstone_stairs",
new Stair(
new BID(Ids::RED_SANDSTONE_STAIRS),
"Red Sandstone Stairs", $sandstoneBreakInfo));
1169 self::register(
"smooth_red_sandstone_stairs",
new Stair(
new BID(Ids::SMOOTH_RED_SANDSTONE_STAIRS),
"Smooth Red Sandstone Stairs", $sandstoneBreakInfo));
1170 self::register(
"red_sandstone",
new Opaque(
new BID(Ids::RED_SANDSTONE),
"Red Sandstone", $sandstoneBreakInfo));
1171 self::register(
"chiseled_red_sandstone",
new Opaque(
new BID(Ids::CHISELED_RED_SANDSTONE),
"Chiseled Red Sandstone", $sandstoneBreakInfo));
1172 self::register(
"cut_red_sandstone",
new Opaque(
new BID(Ids::CUT_RED_SANDSTONE),
"Cut Red Sandstone", $sandstoneBreakInfo));
1173 self::register(
"smooth_red_sandstone",
new Opaque(
new BID(Ids::SMOOTH_RED_SANDSTONE),
"Smooth Red Sandstone", $sandstoneBreakInfo));
1175 self::register(
"sandstone_stairs",
new Stair(
new BID(Ids::SANDSTONE_STAIRS),
"Sandstone Stairs", $sandstoneBreakInfo));
1176 self::register(
"smooth_sandstone_stairs",
new Stair(
new BID(Ids::SMOOTH_SANDSTONE_STAIRS),
"Smooth Sandstone Stairs", $sandstoneBreakInfo));
1177 self::register(
"sandstone",
new Opaque(
new BID(Ids::SANDSTONE),
"Sandstone", $sandstoneBreakInfo));
1178 self::register(
"chiseled_sandstone",
new Opaque(
new BID(Ids::CHISELED_SANDSTONE),
"Chiseled Sandstone", $sandstoneBreakInfo));
1179 self::register(
"cut_sandstone",
new Opaque(
new BID(Ids::CUT_SANDSTONE),
"Cut Sandstone", $sandstoneBreakInfo));
1180 self::register(
"smooth_sandstone",
new Opaque(
new BID(Ids::SMOOTH_SANDSTONE),
"Smooth Sandstone", $sandstoneBreakInfo));
1182 self::register(
"glazed_terracotta",
new GlazedTerracotta(
new BID(Ids::GLAZED_TERRACOTTA),
"Glazed Terracotta",
new Info(BreakInfo::pickaxe(1.4, ToolTier::WOOD))));
1183 self::register(
"dyed_shulker_box",
new DyedShulkerBox(
new BID(Ids::DYED_SHULKER_BOX, TileShulkerBox::class),
"Dyed Shulker Box", $shulkerBoxBreakInfo));
1184 self::register(
"stained_glass",
new StainedGlass(
new BID(Ids::STAINED_GLASS),
"Stained Glass", $glassBreakInfo));
1185 self::register(
"stained_glass_pane",
new StainedGlassPane(
new BID(Ids::STAINED_GLASS_PANE),
"Stained Glass Pane", $glassBreakInfo));
1186 self::register(
"stained_clay",
new StainedHardenedClay(
new BID(Ids::STAINED_CLAY),
"Stained Clay", $hardenedClayBreakInfo));
1187 self::register(
"stained_hardened_glass",
new StainedHardenedGlass(
new BID(Ids::STAINED_HARDENED_GLASS),
"Stained Hardened Glass", $hardenedGlassBreakInfo));
1188 self::register(
"stained_hardened_glass_pane",
new StainedHardenedGlassPane(
new BID(Ids::STAINED_HARDENED_GLASS_PANE),
"Stained Hardened Glass Pane", $hardenedGlassBreakInfo));
1189 self::register(
"carpet",
new Carpet(
new BID(Ids::CARPET),
"Carpet",
new Info(
new BreakInfo(0.1))));
1190 self::register(
"concrete",
new Concrete(
new BID(Ids::CONCRETE),
"Concrete",
new Info(BreakInfo::pickaxe(1.8, ToolTier::WOOD))));
1191 self::register(
"concrete_powder",
new ConcretePowder(
new BID(Ids::CONCRETE_POWDER),
"Concrete Powder",
new Info(BreakInfo::shovel(0.5))));
1192 self::register(
"wool",
new Wool(
new BID(Ids::WOOL),
"Wool",
new Info(
new class(0.8, ToolType::SHEARS) extends BreakInfo{
1193 public function getBreakTime(Item $item) : float{
1194 $time = parent::getBreakTime($item);
1195 if($item->getBlockToolType() === ToolType::SHEARS){
1204 $wallBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
1205 self::register(
"cobblestone_wall",
new Wall(
new BID(Ids::COBBLESTONE_WALL),
"Cobblestone Wall", $wallBreakInfo));
1206 self::register(
"andesite_wall",
new Wall(
new BID(Ids::ANDESITE_WALL),
"Andesite Wall", $wallBreakInfo));
1207 self::register(
"brick_wall",
new Wall(
new BID(Ids::BRICK_WALL),
"Brick Wall", $wallBreakInfo));
1208 self::register(
"diorite_wall",
new Wall(
new BID(Ids::DIORITE_WALL),
"Diorite Wall", $wallBreakInfo));
1209 self::register(
"end_stone_brick_wall",
new Wall(
new BID(Ids::END_STONE_BRICK_WALL),
"End Stone Brick Wall", $wallBreakInfo));
1210 self::register(
"granite_wall",
new Wall(
new BID(Ids::GRANITE_WALL),
"Granite Wall", $wallBreakInfo));
1211 self::register(
"mossy_stone_brick_wall",
new Wall(
new BID(Ids::MOSSY_STONE_BRICK_WALL),
"Mossy Stone Brick Wall", $wallBreakInfo));
1212 self::register(
"mossy_cobblestone_wall",
new Wall(
new BID(Ids::MOSSY_COBBLESTONE_WALL),
"Mossy Cobblestone Wall", $wallBreakInfo));
1213 self::register(
"nether_brick_wall",
new Wall(
new BID(Ids::NETHER_BRICK_WALL),
"Nether Brick Wall", $wallBreakInfo));
1214 self::register(
"prismarine_wall",
new Wall(
new BID(Ids::PRISMARINE_WALL),
"Prismarine Wall", $wallBreakInfo));
1215 self::register(
"red_nether_brick_wall",
new Wall(
new BID(Ids::RED_NETHER_BRICK_WALL),
"Red Nether Brick Wall", $wallBreakInfo));
1216 self::register(
"red_sandstone_wall",
new Wall(
new BID(Ids::RED_SANDSTONE_WALL),
"Red Sandstone Wall", $wallBreakInfo));
1217 self::register(
"sandstone_wall",
new Wall(
new BID(Ids::SANDSTONE_WALL),
"Sandstone Wall", $wallBreakInfo));
1218 self::register(
"stone_brick_wall",
new Wall(
new BID(Ids::STONE_BRICK_WALL),
"Stone Brick Wall", $wallBreakInfo));
1220 self::registerElements();
1222 $chemistryTableBreakInfo =
new Info(BreakInfo::pickaxe(2.5, ToolTier::WOOD));
1223 self::register(
"compound_creator",
new ChemistryTable(
new BID(Ids::COMPOUND_CREATOR),
"Compound Creator", $chemistryTableBreakInfo));
1224 self::register(
"element_constructor",
new ChemistryTable(
new BID(Ids::ELEMENT_CONSTRUCTOR),
"Element Constructor", $chemistryTableBreakInfo));
1225 self::register(
"lab_table",
new ChemistryTable(
new BID(Ids::LAB_TABLE),
"Lab Table", $chemistryTableBreakInfo));
1226 self::register(
"material_reducer",
new ChemistryTable(
new BID(Ids::MATERIAL_REDUCER),
"Material Reducer", $chemistryTableBreakInfo));
1228 self::register(
"chemical_heat",
new ChemicalHeat(
new BID(Ids::CHEMICAL_HEAT),
"Heat Block", $chemistryTableBreakInfo));
1230 self::registerMushroomBlocks();
1232 self::register(
"coral",
new Coral(
1233 new BID(Ids::CORAL),
1235 new Info(BreakInfo::instant()),
1237 self::register(
"coral_fan",
new FloorCoralFan(
1238 new BID(Ids::CORAL_FAN),
1240 new Info(BreakInfo::instant()),
1242 self::register(
"wall_coral_fan",
new WallCoralFan(
1243 new BID(Ids::WALL_CORAL_FAN),
1245 new Info(BreakInfo::instant()),
1248 self::register(
"mangrove_roots",
new MangroveRoots(
new BID(Ids::MANGROVE_ROOTS),
"Mangrove Roots",
new Info(BreakInfo::axe(0.7))));
1249 self::register(
"muddy_mangrove_roots",
new SimplePillar(
new BID(Ids::MUDDY_MANGROVE_ROOTS),
"Muddy Mangrove Roots",
new Info(BreakInfo::shovel(0.7), [Tags::MUD])));
1250 self::register(
"froglight",
new Froglight(
new BID(Ids::FROGLIGHT),
"Froglight",
new Info(
new BreakInfo(0.3))));
1251 self::register(
"sculk",
new Sculk(
new BID(Ids::SCULK),
"Sculk",
new Info(
new BreakInfo(0.6, ToolType::HOE))));
1252 self::register(
"reinforced_deepslate",
new class(
new BID(Ids::REINFORCED_DEEPSLATE),
"Reinforced Deepslate",
new Info(
new BreakInfo(55.0, ToolType::NONE, 0, 3600.0))) extends Opaque{
1253 public function getDropsForCompatibleTool(Item $item) : array{
1258 self::registerBlocksR13();
1259 self::registerBlocksR14();
1260 self::registerBlocksR16();
1261 self::registerBlocksR17();
1262 self::registerBlocksR18();
1263 self::registerMudBlocks();
1265 self::registerCraftingTables();
1266 self::registerChorusBlocks();
1267 self::registerOres();
1268 self::registerWoodenBlocks();
1269 self::registerCauldronBlocks();
1272 private static function registerWoodenBlocks() : void{
1273 $planksBreakInfo = new Info(BreakInfo::axe(2.0, null, 15.0));
1274 $signBreakInfo =
new Info(BreakInfo::axe(1.0));
1275 $logBreakInfo =
new Info(BreakInfo::axe(2.0));
1276 $woodenDoorBreakInfo =
new Info(BreakInfo::axe(3.0,
null, 15.0));
1277 $woodenButtonBreakInfo =
new Info(BreakInfo::axe(0.5));
1278 $woodenPressurePlateBreakInfo =
new Info(BreakInfo::axe(0.5));
1280 foreach(WoodType::cases() as $woodType){
1281 $name = $woodType->getDisplayName();
1282 $idName = fn(
string $suffix) => strtolower($woodType->name) .
"_" . $suffix;
1284 self::register($idName(mb_strtolower($woodType->getStandardLogSuffix() ??
"log",
'US-ASCII')),
new Wood(WoodLikeBlockIdHelper::getLogIdentifier($woodType), $name .
" " . ($woodType->getStandardLogSuffix() ??
"Log"), $logBreakInfo, $woodType));
1285 self::register($idName(mb_strtolower($woodType->getAllSidedLogSuffix() ??
"wood",
'US-ASCII')),
new Wood(WoodLikeBlockIdHelper::getAllSidedLogIdentifier($woodType), $name .
" " . ($woodType->getAllSidedLogSuffix() ??
"Wood"), $logBreakInfo, $woodType));
1287 self::register($idName(
"planks"),
new Planks(WoodLikeBlockIdHelper::getPlanksIdentifier($woodType), $name .
" Planks", $planksBreakInfo, $woodType));
1288 self::register($idName(
"fence"),
new WoodenFence(WoodLikeBlockIdHelper::getFenceIdentifier($woodType), $name .
" Fence", $planksBreakInfo, $woodType));
1289 self::register($idName(
"slab"),
new WoodenSlab(WoodLikeBlockIdHelper::getSlabIdentifier($woodType), $name, $planksBreakInfo, $woodType));
1291 self::register($idName(
"fence_gate"),
new FenceGate(WoodLikeBlockIdHelper::getFenceGateIdentifier($woodType), $name .
" Fence Gate", $planksBreakInfo, $woodType));
1292 self::register($idName(
"stairs"),
new WoodenStairs(WoodLikeBlockIdHelper::getStairsIdentifier($woodType), $name .
" Stairs", $planksBreakInfo, $woodType));
1293 self::register($idName(
"door"),
new WoodenDoor(WoodLikeBlockIdHelper::getDoorIdentifier($woodType), $name .
" Door", $woodenDoorBreakInfo, $woodType));
1295 self::register($idName(
"button"),
new WoodenButton(WoodLikeBlockIdHelper::getButtonIdentifier($woodType), $name .
" Button", $woodenButtonBreakInfo, $woodType));
1296 self::register($idName(
"pressure_plate"),
new WoodenPressurePlate(WoodLikeBlockIdHelper::getPressurePlateIdentifier($woodType), $name .
" Pressure Plate", $woodenPressurePlateBreakInfo, $woodType, 20));
1297 self::register($idName(
"trapdoor"),
new WoodenTrapdoor(WoodLikeBlockIdHelper::getTrapdoorIdentifier($woodType), $name .
" Trapdoor", $woodenDoorBreakInfo, $woodType));
1299 [$floorSignId, $wallSignId, $signAsItem] = WoodLikeBlockIdHelper::getSignInfo($woodType);
1300 self::register($idName(
"sign"),
new FloorSign($floorSignId, $name .
" Sign", $signBreakInfo, $woodType, $signAsItem));
1301 self::register($idName(
"wall_sign"),
new WallSign($wallSignId, $name .
" Wall Sign", $signBreakInfo, $woodType, $signAsItem));
1305 private static function registerMushroomBlocks() : void{
1306 $mushroomBlockBreakInfo = new Info(BreakInfo::axe(0.2));
1308 self::register(
"brown_mushroom_block",
new BrownMushroomBlock(
new BID(Ids::BROWN_MUSHROOM_BLOCK),
"Brown Mushroom Block", $mushroomBlockBreakInfo));
1309 self::register(
"red_mushroom_block",
new RedMushroomBlock(
new BID(Ids::RED_MUSHROOM_BLOCK),
"Red Mushroom Block", $mushroomBlockBreakInfo));
1312 self::register(
"mushroom_stem",
new MushroomStem(
new BID(Ids::MUSHROOM_STEM),
"Mushroom Stem", $mushroomBlockBreakInfo));
1313 self::register(
"all_sided_mushroom_stem",
new MushroomStem(
new BID(Ids::ALL_SIDED_MUSHROOM_STEM),
"All Sided Mushroom Stem", $mushroomBlockBreakInfo));
1316 private static function registerElements() : void{
1317 $instaBreak = new Info(BreakInfo::instant());
1318 self::register(
"element_zero",
new Opaque(
new BID(Ids::ELEMENT_ZERO),
"???", $instaBreak));
1320 $register = fn(
string $name,
int $id,
string $displayName,
string $symbol,
int $atomicWeight,
int $group) =>
1321 self::register(
"element_$name",
new Element(
new BID($id), $displayName, $instaBreak, $symbol, $atomicWeight, $group));
1323 $register(
"hydrogen", Ids::ELEMENT_HYDROGEN,
"Hydrogen",
"h", 1, 5);
1324 $register(
"helium", Ids::ELEMENT_HELIUM,
"Helium",
"he", 2, 7);
1325 $register(
"lithium", Ids::ELEMENT_LITHIUM,
"Lithium",
"li", 3, 0);
1326 $register(
"beryllium", Ids::ELEMENT_BERYLLIUM,
"Beryllium",
"be", 4, 1);
1327 $register(
"boron", Ids::ELEMENT_BORON,
"Boron",
"b", 5, 4);
1328 $register(
"carbon", Ids::ELEMENT_CARBON,
"Carbon",
"c", 6, 5);
1329 $register(
"nitrogen", Ids::ELEMENT_NITROGEN,
"Nitrogen",
"n", 7, 5);
1330 $register(
"oxygen", Ids::ELEMENT_OXYGEN,
"Oxygen",
"o", 8, 5);
1331 $register(
"fluorine", Ids::ELEMENT_FLUORINE,
"Fluorine",
"f", 9, 6);
1332 $register(
"neon", Ids::ELEMENT_NEON,
"Neon",
"ne", 10, 7);
1333 $register(
"sodium", Ids::ELEMENT_SODIUM,
"Sodium",
"na", 11, 0);
1334 $register(
"magnesium", Ids::ELEMENT_MAGNESIUM,
"Magnesium",
"mg", 12, 1);
1335 $register(
"aluminum", Ids::ELEMENT_ALUMINUM,
"Aluminum",
"al", 13, 3);
1336 $register(
"silicon", Ids::ELEMENT_SILICON,
"Silicon",
"si", 14, 4);
1337 $register(
"phosphorus", Ids::ELEMENT_PHOSPHORUS,
"Phosphorus",
"p", 15, 5);
1338 $register(
"sulfur", Ids::ELEMENT_SULFUR,
"Sulfur",
"s", 16, 5);
1339 $register(
"chlorine", Ids::ELEMENT_CHLORINE,
"Chlorine",
"cl", 17, 6);
1340 $register(
"argon", Ids::ELEMENT_ARGON,
"Argon",
"ar", 18, 7);
1341 $register(
"potassium", Ids::ELEMENT_POTASSIUM,
"Potassium",
"k", 19, 0);
1342 $register(
"calcium", Ids::ELEMENT_CALCIUM,
"Calcium",
"ca", 20, 1);
1343 $register(
"scandium", Ids::ELEMENT_SCANDIUM,
"Scandium",
"sc", 21, 2);
1344 $register(
"titanium", Ids::ELEMENT_TITANIUM,
"Titanium",
"ti", 22, 2);
1345 $register(
"vanadium", Ids::ELEMENT_VANADIUM,
"Vanadium",
"v", 23, 2);
1346 $register(
"chromium", Ids::ELEMENT_CHROMIUM,
"Chromium",
"cr", 24, 2);
1347 $register(
"manganese", Ids::ELEMENT_MANGANESE,
"Manganese",
"mn", 25, 2);
1348 $register(
"iron", Ids::ELEMENT_IRON,
"Iron",
"fe", 26, 2);
1349 $register(
"cobalt", Ids::ELEMENT_COBALT,
"Cobalt",
"co", 27, 2);
1350 $register(
"nickel", Ids::ELEMENT_NICKEL,
"Nickel",
"ni", 28, 2);
1351 $register(
"copper", Ids::ELEMENT_COPPER,
"Copper",
"cu", 29, 2);
1352 $register(
"zinc", Ids::ELEMENT_ZINC,
"Zinc",
"zn", 30, 2);
1353 $register(
"gallium", Ids::ELEMENT_GALLIUM,
"Gallium",
"ga", 31, 3);
1354 $register(
"germanium", Ids::ELEMENT_GERMANIUM,
"Germanium",
"ge", 32, 4);
1355 $register(
"arsenic", Ids::ELEMENT_ARSENIC,
"Arsenic",
"as", 33, 4);
1356 $register(
"selenium", Ids::ELEMENT_SELENIUM,
"Selenium",
"se", 34, 5);
1357 $register(
"bromine", Ids::ELEMENT_BROMINE,
"Bromine",
"br", 35, 6);
1358 $register(
"krypton", Ids::ELEMENT_KRYPTON,
"Krypton",
"kr", 36, 7);
1359 $register(
"rubidium", Ids::ELEMENT_RUBIDIUM,
"Rubidium",
"rb", 37, 0);
1360 $register(
"strontium", Ids::ELEMENT_STRONTIUM,
"Strontium",
"sr", 38, 1);
1361 $register(
"yttrium", Ids::ELEMENT_YTTRIUM,
"Yttrium",
"y", 39, 2);
1362 $register(
"zirconium", Ids::ELEMENT_ZIRCONIUM,
"Zirconium",
"zr", 40, 2);
1363 $register(
"niobium", Ids::ELEMENT_NIOBIUM,
"Niobium",
"nb", 41, 2);
1364 $register(
"molybdenum", Ids::ELEMENT_MOLYBDENUM,
"Molybdenum",
"mo", 42, 2);
1365 $register(
"technetium", Ids::ELEMENT_TECHNETIUM,
"Technetium",
"tc", 43, 2);
1366 $register(
"ruthenium", Ids::ELEMENT_RUTHENIUM,
"Ruthenium",
"ru", 44, 2);
1367 $register(
"rhodium", Ids::ELEMENT_RHODIUM,
"Rhodium",
"rh", 45, 2);
1368 $register(
"palladium", Ids::ELEMENT_PALLADIUM,
"Palladium",
"pd", 46, 2);
1369 $register(
"silver", Ids::ELEMENT_SILVER,
"Silver",
"ag", 47, 2);
1370 $register(
"cadmium", Ids::ELEMENT_CADMIUM,
"Cadmium",
"cd", 48, 2);
1371 $register(
"indium", Ids::ELEMENT_INDIUM,
"Indium",
"in", 49, 3);
1372 $register(
"tin", Ids::ELEMENT_TIN,
"Tin",
"sn", 50, 3);
1373 $register(
"antimony", Ids::ELEMENT_ANTIMONY,
"Antimony",
"sb", 51, 4);
1374 $register(
"tellurium", Ids::ELEMENT_TELLURIUM,
"Tellurium",
"te", 52, 4);
1375 $register(
"iodine", Ids::ELEMENT_IODINE,
"Iodine",
"i", 53, 6);
1376 $register(
"xenon", Ids::ELEMENT_XENON,
"Xenon",
"xe", 54, 7);
1377 $register(
"cesium", Ids::ELEMENT_CESIUM,
"Cesium",
"cs", 55, 0);
1378 $register(
"barium", Ids::ELEMENT_BARIUM,
"Barium",
"ba", 56, 1);
1379 $register(
"lanthanum", Ids::ELEMENT_LANTHANUM,
"Lanthanum",
"la", 57, 8);
1380 $register(
"cerium", Ids::ELEMENT_CERIUM,
"Cerium",
"ce", 58, 8);
1381 $register(
"praseodymium", Ids::ELEMENT_PRASEODYMIUM,
"Praseodymium",
"pr", 59, 8);
1382 $register(
"neodymium", Ids::ELEMENT_NEODYMIUM,
"Neodymium",
"nd", 60, 8);
1383 $register(
"promethium", Ids::ELEMENT_PROMETHIUM,
"Promethium",
"pm", 61, 8);
1384 $register(
"samarium", Ids::ELEMENT_SAMARIUM,
"Samarium",
"sm", 62, 8);
1385 $register(
"europium", Ids::ELEMENT_EUROPIUM,
"Europium",
"eu", 63, 8);
1386 $register(
"gadolinium", Ids::ELEMENT_GADOLINIUM,
"Gadolinium",
"gd", 64, 8);
1387 $register(
"terbium", Ids::ELEMENT_TERBIUM,
"Terbium",
"tb", 65, 8);
1388 $register(
"dysprosium", Ids::ELEMENT_DYSPROSIUM,
"Dysprosium",
"dy", 66, 8);
1389 $register(
"holmium", Ids::ELEMENT_HOLMIUM,
"Holmium",
"ho", 67, 8);
1390 $register(
"erbium", Ids::ELEMENT_ERBIUM,
"Erbium",
"er", 68, 8);
1391 $register(
"thulium", Ids::ELEMENT_THULIUM,
"Thulium",
"tm", 69, 8);
1392 $register(
"ytterbium", Ids::ELEMENT_YTTERBIUM,
"Ytterbium",
"yb", 70, 8);
1393 $register(
"lutetium", Ids::ELEMENT_LUTETIUM,
"Lutetium",
"lu", 71, 8);
1394 $register(
"hafnium", Ids::ELEMENT_HAFNIUM,
"Hafnium",
"hf", 72, 2);
1395 $register(
"tantalum", Ids::ELEMENT_TANTALUM,
"Tantalum",
"ta", 73, 2);
1396 $register(
"tungsten", Ids::ELEMENT_TUNGSTEN,
"Tungsten",
"w", 74, 2);
1397 $register(
"rhenium", Ids::ELEMENT_RHENIUM,
"Rhenium",
"re", 75, 2);
1398 $register(
"osmium", Ids::ELEMENT_OSMIUM,
"Osmium",
"os", 76, 2);
1399 $register(
"iridium", Ids::ELEMENT_IRIDIUM,
"Iridium",
"ir", 77, 2);
1400 $register(
"platinum", Ids::ELEMENT_PLATINUM,
"Platinum",
"pt", 78, 2);
1401 $register(
"gold", Ids::ELEMENT_GOLD,
"Gold",
"au", 79, 2);
1402 $register(
"mercury", Ids::ELEMENT_MERCURY,
"Mercury",
"hg", 80, 2);
1403 $register(
"thallium", Ids::ELEMENT_THALLIUM,
"Thallium",
"tl", 81, 3);
1404 $register(
"lead", Ids::ELEMENT_LEAD,
"Lead",
"pb", 82, 3);
1405 $register(
"bismuth", Ids::ELEMENT_BISMUTH,
"Bismuth",
"bi", 83, 3);
1406 $register(
"polonium", Ids::ELEMENT_POLONIUM,
"Polonium",
"po", 84, 4);
1407 $register(
"astatine", Ids::ELEMENT_ASTATINE,
"Astatine",
"at", 85, 6);
1408 $register(
"radon", Ids::ELEMENT_RADON,
"Radon",
"rn", 86, 7);
1409 $register(
"francium", Ids::ELEMENT_FRANCIUM,
"Francium",
"fr", 87, 0);
1410 $register(
"radium", Ids::ELEMENT_RADIUM,
"Radium",
"ra", 88, 1);
1411 $register(
"actinium", Ids::ELEMENT_ACTINIUM,
"Actinium",
"ac", 89, 9);
1412 $register(
"thorium", Ids::ELEMENT_THORIUM,
"Thorium",
"th", 90, 9);
1413 $register(
"protactinium", Ids::ELEMENT_PROTACTINIUM,
"Protactinium",
"pa", 91, 9);
1414 $register(
"uranium", Ids::ELEMENT_URANIUM,
"Uranium",
"u", 92, 9);
1415 $register(
"neptunium", Ids::ELEMENT_NEPTUNIUM,
"Neptunium",
"np", 93, 9);
1416 $register(
"plutonium", Ids::ELEMENT_PLUTONIUM,
"Plutonium",
"pu", 94, 9);
1417 $register(
"americium", Ids::ELEMENT_AMERICIUM,
"Americium",
"am", 95, 9);
1418 $register(
"curium", Ids::ELEMENT_CURIUM,
"Curium",
"cm", 96, 9);
1419 $register(
"berkelium", Ids::ELEMENT_BERKELIUM,
"Berkelium",
"bk", 97, 9);
1420 $register(
"californium", Ids::ELEMENT_CALIFORNIUM,
"Californium",
"cf", 98, 9);
1421 $register(
"einsteinium", Ids::ELEMENT_EINSTEINIUM,
"Einsteinium",
"es", 99, 9);
1422 $register(
"fermium", Ids::ELEMENT_FERMIUM,
"Fermium",
"fm", 100, 9);
1423 $register(
"mendelevium", Ids::ELEMENT_MENDELEVIUM,
"Mendelevium",
"md", 101, 9);
1424 $register(
"nobelium", Ids::ELEMENT_NOBELIUM,
"Nobelium",
"no", 102, 9);
1425 $register(
"lawrencium", Ids::ELEMENT_LAWRENCIUM,
"Lawrencium",
"lr", 103, 9);
1426 $register(
"rutherfordium", Ids::ELEMENT_RUTHERFORDIUM,
"Rutherfordium",
"rf", 104, 2);
1427 $register(
"dubnium", Ids::ELEMENT_DUBNIUM,
"Dubnium",
"db", 105, 2);
1428 $register(
"seaborgium", Ids::ELEMENT_SEABORGIUM,
"Seaborgium",
"sg", 106, 2);
1429 $register(
"bohrium", Ids::ELEMENT_BOHRIUM,
"Bohrium",
"bh", 107, 2);
1430 $register(
"hassium", Ids::ELEMENT_HASSIUM,
"Hassium",
"hs", 108, 2);
1431 $register(
"meitnerium", Ids::ELEMENT_MEITNERIUM,
"Meitnerium",
"mt", 109, 2);
1432 $register(
"darmstadtium", Ids::ELEMENT_DARMSTADTIUM,
"Darmstadtium",
"ds", 110, 2);
1433 $register(
"roentgenium", Ids::ELEMENT_ROENTGENIUM,
"Roentgenium",
"rg", 111, 2);
1434 $register(
"copernicium", Ids::ELEMENT_COPERNICIUM,
"Copernicium",
"cn", 112, 2);
1435 $register(
"nihonium", Ids::ELEMENT_NIHONIUM,
"Nihonium",
"nh", 113, 3);
1436 $register(
"flerovium", Ids::ELEMENT_FLEROVIUM,
"Flerovium",
"fl", 114, 3);
1437 $register(
"moscovium", Ids::ELEMENT_MOSCOVIUM,
"Moscovium",
"mc", 115, 3);
1438 $register(
"livermorium", Ids::ELEMENT_LIVERMORIUM,
"Livermorium",
"lv", 116, 3);
1439 $register(
"tennessine", Ids::ELEMENT_TENNESSINE,
"Tennessine",
"ts", 117, 6);
1440 $register(
"oganesson", Ids::ELEMENT_OGANESSON,
"Oganesson",
"og", 118, 7);
1443 private static function registerOres() : void{
1444 $stoneOreBreakInfo = fn(
ToolTier $toolTier) => new Info(BreakInfo::pickaxe(3.0, $toolTier));
1445 self::register(
"coal_ore",
new CoalOre(
new BID(Ids::COAL_ORE),
"Coal Ore", $stoneOreBreakInfo(ToolTier::WOOD)));
1446 self::register(
"copper_ore",
new CopperOre(
new BID(Ids::COPPER_ORE),
"Copper Ore", $stoneOreBreakInfo(ToolTier::STONE)));
1447 self::register(
"diamond_ore",
new DiamondOre(
new BID(Ids::DIAMOND_ORE),
"Diamond Ore", $stoneOreBreakInfo(ToolTier::IRON)));
1448 self::register(
"emerald_ore",
new EmeraldOre(
new BID(Ids::EMERALD_ORE),
"Emerald Ore", $stoneOreBreakInfo(ToolTier::IRON)));
1449 self::register(
"gold_ore",
new GoldOre(
new BID(Ids::GOLD_ORE),
"Gold Ore", $stoneOreBreakInfo(ToolTier::IRON)));
1450 self::register(
"iron_ore",
new IronOre(
new BID(Ids::IRON_ORE),
"Iron Ore", $stoneOreBreakInfo(ToolTier::STONE)));
1451 self::register(
"lapis_lazuli_ore",
new LapisOre(
new BID(Ids::LAPIS_LAZULI_ORE),
"Lapis Lazuli Ore", $stoneOreBreakInfo(ToolTier::STONE)));
1452 self::register(
"redstone_ore",
new RedstoneOre(
new BID(Ids::REDSTONE_ORE),
"Redstone Ore", $stoneOreBreakInfo(ToolTier::IRON)));
1454 $deepslateOreBreakInfo = fn(ToolTier $toolTier) =>
new Info(BreakInfo::pickaxe(4.5, $toolTier));
1455 self::register(
"deepslate_coal_ore",
new CoalOre(
new BID(Ids::DEEPSLATE_COAL_ORE),
"Deepslate Coal Ore", $deepslateOreBreakInfo(ToolTier::WOOD)));
1456 self::register(
"deepslate_copper_ore",
new CopperOre(
new BID(Ids::DEEPSLATE_COPPER_ORE),
"Deepslate Copper Ore", $deepslateOreBreakInfo(ToolTier::STONE)));
1457 self::register(
"deepslate_diamond_ore",
new DiamondOre(
new BID(Ids::DEEPSLATE_DIAMOND_ORE),
"Deepslate Diamond Ore", $deepslateOreBreakInfo(ToolTier::IRON)));
1458 self::register(
"deepslate_emerald_ore",
new EmeraldOre(
new BID(Ids::DEEPSLATE_EMERALD_ORE),
"Deepslate Emerald Ore", $deepslateOreBreakInfo(ToolTier::IRON)));
1459 self::register(
"deepslate_gold_ore",
new GoldOre(
new BID(Ids::DEEPSLATE_GOLD_ORE),
"Deepslate Gold Ore", $deepslateOreBreakInfo(ToolTier::IRON)));
1460 self::register(
"deepslate_iron_ore",
new IronOre(
new BID(Ids::DEEPSLATE_IRON_ORE),
"Deepslate Iron Ore", $deepslateOreBreakInfo(ToolTier::STONE)));
1461 self::register(
"deepslate_lapis_lazuli_ore",
new LapisOre(
new BID(Ids::DEEPSLATE_LAPIS_LAZULI_ORE),
"Deepslate Lapis Lazuli Ore", $deepslateOreBreakInfo(ToolTier::STONE)));
1462 self::register(
"deepslate_redstone_ore",
new RedstoneOre(
new BID(Ids::DEEPSLATE_REDSTONE_ORE),
"Deepslate Redstone Ore", $deepslateOreBreakInfo(ToolTier::IRON)));
1464 $netherrackOreBreakInfo =
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD));
1465 self::register(
"nether_quartz_ore",
new NetherQuartzOre(
new BID(Ids::NETHER_QUARTZ_ORE),
"Nether Quartz Ore", $netherrackOreBreakInfo));
1466 self::register(
"nether_gold_ore",
new NetherGoldOre(
new BID(Ids::NETHER_GOLD_ORE),
"Nether Gold Ore", $netherrackOreBreakInfo));
1469 private static function registerCraftingTables() : void{
1471 $craftingBlockBreakInfo = new Info(BreakInfo::axe(2.5));
1472 self::register(
"cartography_table",
new CartographyTable(
new BID(Ids::CARTOGRAPHY_TABLE),
"Cartography Table", $craftingBlockBreakInfo));
1473 self::register(
"crafting_table",
new CraftingTable(
new BID(Ids::CRAFTING_TABLE),
"Crafting Table", $craftingBlockBreakInfo));
1474 self::register(
"fletching_table",
new FletchingTable(
new BID(Ids::FLETCHING_TABLE),
"Fletching Table", $craftingBlockBreakInfo));
1475 self::register(
"loom",
new Loom(
new BID(Ids::LOOM),
"Loom", $craftingBlockBreakInfo));
1476 self::register(
"smithing_table",
new SmithingTable(
new BID(Ids::SMITHING_TABLE),
"Smithing Table", $craftingBlockBreakInfo));
1479 private static function registerChorusBlocks() : void{
1480 $chorusBlockBreakInfo = new Info(BreakInfo::axe(0.4));
1481 self::register(
"chorus_plant",
new ChorusPlant(
new BID(Ids::CHORUS_PLANT),
"Chorus Plant", $chorusBlockBreakInfo));
1482 self::register(
"chorus_flower",
new ChorusFlower(
new BID(Ids::CHORUS_FLOWER),
"Chorus Flower", $chorusBlockBreakInfo));
1485 private static function registerBlocksR13() : void{
1486 self::register(
"light", new Light(new BID(Ids::LIGHT),
"Light Block", new Info(BreakInfo::indestructible())));
1487 self::register(
"wither_rose",
new WitherRose(
new BID(Ids::WITHER_ROSE),
"Wither Rose",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
1490 private static function registerBlocksR14() : void{
1491 self::register(
"honeycomb", new Opaque(new BID(Ids::HONEYCOMB),
"Honeycomb Block", new Info(new BreakInfo(0.6))));
1494 private static function registerBlocksR16() : void{
1496 $slabBreakInfo = new Info(BreakInfo::pickaxe(2.0,
ToolTier::WOOD, 30.0));
1498 self::register(
"ancient_debris",
new class(
new BID(Ids::ANCIENT_DEBRIS),
"Ancient Debris",
new Info(BreakInfo::pickaxe(30, ToolTier::DIAMOND, 3600.0))) extends Opaque{
1499 public function isFireProofAsItem() : bool{ return true; }
1501 $netheriteBreakInfo =
new Info(BreakInfo::pickaxe(50, ToolTier::DIAMOND, 3600.0));
1502 self::register(
"netherite",
new class(
new BID(Ids::NETHERITE),
"Netherite Block", $netheriteBreakInfo) extends Opaque{
1503 public function isFireProofAsItem() : bool{ return true; }
1506 $basaltBreakInfo =
new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD, 21.0));
1507 self::register(
"basalt",
new SimplePillar(
new BID(Ids::BASALT),
"Basalt", $basaltBreakInfo));
1508 self::register(
"polished_basalt",
new SimplePillar(
new BID(Ids::POLISHED_BASALT),
"Polished Basalt", $basaltBreakInfo));
1509 self::register(
"smooth_basalt",
new Opaque(
new BID(Ids::SMOOTH_BASALT),
"Smooth Basalt", $basaltBreakInfo));
1511 $blackstoneBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
1512 self::register(
"blackstone",
new Opaque(
new BID(Ids::BLACKSTONE),
"Blackstone", $blackstoneBreakInfo));
1513 self::register(
"blackstone_slab",
new Slab(
new BID(Ids::BLACKSTONE_SLAB),
"Blackstone", $slabBreakInfo));
1514 self::register(
"blackstone_stairs",
new Stair(
new BID(Ids::BLACKSTONE_STAIRS),
"Blackstone Stairs", $blackstoneBreakInfo));
1515 self::register(
"blackstone_wall",
new Wall(
new BID(Ids::BLACKSTONE_WALL),
"Blackstone Wall", $blackstoneBreakInfo));
1517 self::register(
"gilded_blackstone",
new GildedBlackstone(
new BID(Ids::GILDED_BLACKSTONE),
"Gilded Blackstone", $blackstoneBreakInfo));
1520 $prefix = fn(
string $thing) =>
"Polished Blackstone" . ($thing !==
"" ?
" $thing" :
"");
1521 self::register(
"polished_blackstone",
new Opaque(
new BID(Ids::POLISHED_BLACKSTONE), $prefix(
""), $blackstoneBreakInfo));
1522 self::register(
"polished_blackstone_button",
new StoneButton(
new BID(Ids::POLISHED_BLACKSTONE_BUTTON), $prefix(
"Button"),
new Info(BreakInfo::pickaxe(0.5))));
1523 self::register(
"polished_blackstone_pressure_plate",
new StonePressurePlate(
new BID(Ids::POLISHED_BLACKSTONE_PRESSURE_PLATE), $prefix(
"Pressure Plate"),
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD)), 20));
1524 self::register(
"polished_blackstone_slab",
new Slab(
new BID(Ids::POLISHED_BLACKSTONE_SLAB), $prefix(
""), $slabBreakInfo));
1525 self::register(
"polished_blackstone_stairs",
new Stair(
new BID(Ids::POLISHED_BLACKSTONE_STAIRS), $prefix(
"Stairs"), $blackstoneBreakInfo));
1526 self::register(
"polished_blackstone_wall",
new Wall(
new BID(Ids::POLISHED_BLACKSTONE_WALL), $prefix(
"Wall"), $blackstoneBreakInfo));
1527 self::register(
"chiseled_polished_blackstone",
new Opaque(
new BID(Ids::CHISELED_POLISHED_BLACKSTONE),
"Chiseled Polished Blackstone", $blackstoneBreakInfo));
1529 $prefix = fn(
string $thing) =>
"Polished Blackstone Brick" . ($thing !==
"" ?
" $thing" :
"");
1530 self::register(
"polished_blackstone_bricks",
new Opaque(
new BID(Ids::POLISHED_BLACKSTONE_BRICKS),
"Polished Blackstone Bricks", $blackstoneBreakInfo));
1531 self::register(
"polished_blackstone_brick_slab",
new Slab(
new BID(Ids::POLISHED_BLACKSTONE_BRICK_SLAB),
"Polished Blackstone Brick", $slabBreakInfo));
1532 self::register(
"polished_blackstone_brick_stairs",
new Stair(
new BID(Ids::POLISHED_BLACKSTONE_BRICK_STAIRS), $prefix(
"Stairs"), $blackstoneBreakInfo));
1533 self::register(
"polished_blackstone_brick_wall",
new Wall(
new BID(Ids::POLISHED_BLACKSTONE_BRICK_WALL), $prefix(
"Wall"), $blackstoneBreakInfo));
1534 self::register(
"cracked_polished_blackstone_bricks",
new Opaque(
new BID(Ids::CRACKED_POLISHED_BLACKSTONE_BRICKS),
"Cracked Polished Blackstone Bricks", $blackstoneBreakInfo));
1536 self::register(
"soul_torch",
new Torch(
new BID(Ids::SOUL_TORCH),
"Soul Torch",
new Info(BreakInfo::instant())));
1537 self::register(
"soul_fire",
new SoulFire(
new BID(Ids::SOUL_FIRE),
"Soul Fire",
new Info(BreakInfo::instant(), [Tags::FIRE])));
1540 self::register(
"soul_soil",
new Opaque(
new BID(Ids::SOUL_SOIL),
"Soul Soil",
new Info(BreakInfo::shovel(1.0))));
1542 self::register(
"shroomlight",
new class(
new BID(Ids::SHROOMLIGHT),
"Shroomlight",
new Info(
new BreakInfo(1.0, ToolType::HOE))) extends Opaque{
1543 public function getLightLevel() : int{ return 15; }
1546 self::register(
"warped_wart_block",
new Opaque(
new BID(Ids::WARPED_WART_BLOCK),
"Warped Wart Block",
new Info(
new BreakInfo(1.0, ToolType::HOE))));
1547 self::register(
"crying_obsidian",
new class(
new BID(Ids::CRYING_OBSIDIAN),
"Crying Obsidian",
new Info(BreakInfo::pickaxe(35.0 , ToolTier::DIAMOND, 6000.0))) extends Opaque{
1548 public function getLightLevel() : int{ return 10;}
1551 self::register(
"twisting_vines",
new NetherVines(
new BID(Ids::TWISTING_VINES),
"Twisting Vines",
new Info(BreakInfo::instant()), Facing::UP));
1552 self::register(
"weeping_vines",
new NetherVines(
new BID(Ids::WEEPING_VINES),
"Weeping Vines",
new Info(BreakInfo::instant()), Facing::DOWN));
1554 $netherRootsInfo =
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]);
1555 self::register(
"crimson_roots",
new NetherRoots(
new BID(Ids::CRIMSON_ROOTS),
"Crimson Roots", $netherRootsInfo));
1556 self::register(
"warped_roots",
new NetherRoots(
new BID(Ids::WARPED_ROOTS),
"Warped Roots", $netherRootsInfo));
1558 self::register(
"chain",
new Chain(
new BID(Ids::CHAIN),
"Chain",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD))));
1561 private static function registerBlocksR17() : void{
1563 $amethystInfo = new Info(BreakInfo::pickaxe(1.5,
ToolTier::WOOD));
1564 self::register(
"amethyst",
new class(
new BID(Ids::AMETHYST),
"Amethyst", $amethystInfo) extends Opaque{
1567 self::register(
"budding_amethyst",
new BuddingAmethyst(
new BID(Ids::BUDDING_AMETHYST),
"Budding Amethyst", $amethystInfo));
1568 self::register(
"amethyst_cluster",
new AmethystCluster(
new BID(Ids::AMETHYST_CLUSTER),
"Amethyst Cluster", $amethystInfo));
1570 self::register(
"calcite",
new Opaque(
new BID(Ids::CALCITE),
"Calcite",
new Info(BreakInfo::pickaxe(0.75, ToolTier::WOOD))));
1571 self::register(
"tuff",
new Opaque(
new BID(Ids::TUFF),
"Tuff",
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0))));
1573 self::register(
"raw_copper",
new Opaque(
new BID(Ids::RAW_COPPER),
"Raw Copper Block",
new Info(BreakInfo::pickaxe(5, ToolTier::STONE, 30.0))));
1574 self::register(
"raw_gold",
new Opaque(
new BID(Ids::RAW_GOLD),
"Raw Gold Block",
new Info(BreakInfo::pickaxe(5, ToolTier::IRON, 30.0))));
1575 self::register(
"raw_iron",
new Opaque(
new BID(Ids::RAW_IRON),
"Raw Iron Block",
new Info(BreakInfo::pickaxe(5, ToolTier::STONE, 30.0))));
1577 $deepslateBreakInfo =
new Info(BreakInfo::pickaxe(3, ToolTier::WOOD, 18.0));
1578 self::register(
"deepslate",
new class(
new BID(Ids::DEEPSLATE),
"Deepslate", $deepslateBreakInfo) extends SimplePillar{
1579 public function getDropsForCompatibleTool(Item $item) : array{
1580 return [VanillaBlocks::COBBLED_DEEPSLATE()->asItem()];
1583 public function isAffectedBySilkTouch() : bool{
1589 self::register(
"chiseled_deepslate",
new Opaque(
new BID(Ids::CHISELED_DEEPSLATE),
"Chiseled Deepslate",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD, 18.0))));
1591 $deepslateBrickBreakInfo =
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD, 18.0));
1592 self::register(
"deepslate_bricks",
new Opaque(
new BID(Ids::DEEPSLATE_BRICKS),
"Deepslate Bricks", $deepslateBrickBreakInfo));
1593 self::register(
"deepslate_brick_slab",
new Slab(
new BID(Ids::DEEPSLATE_BRICK_SLAB),
"Deepslate Brick", $deepslateBrickBreakInfo));
1594 self::register(
"deepslate_brick_stairs",
new Stair(
new BID(Ids::DEEPSLATE_BRICK_STAIRS),
"Deepslate Brick Stairs", $deepslateBrickBreakInfo));
1595 self::register(
"deepslate_brick_wall",
new Wall(
new BID(Ids::DEEPSLATE_BRICK_WALL),
"Deepslate Brick Wall", $deepslateBrickBreakInfo));
1596 self::register(
"cracked_deepslate_bricks",
new Opaque(
new BID(Ids::CRACKED_DEEPSLATE_BRICKS),
"Cracked Deepslate Bricks", $deepslateBrickBreakInfo));
1598 $deepslateTilesBreakInfo =
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD, 18.0));
1599 self::register(
"deepslate_tiles",
new Opaque(
new BID(Ids::DEEPSLATE_TILES),
"Deepslate Tiles", $deepslateTilesBreakInfo));
1600 self::register(
"deepslate_tile_slab",
new Slab(
new BID(Ids::DEEPSLATE_TILE_SLAB),
"Deepslate Tile", $deepslateTilesBreakInfo));
1601 self::register(
"deepslate_tile_stairs",
new Stair(
new BID(Ids::DEEPSLATE_TILE_STAIRS),
"Deepslate Tile Stairs", $deepslateTilesBreakInfo));
1602 self::register(
"deepslate_tile_wall",
new Wall(
new BID(Ids::DEEPSLATE_TILE_WALL),
"Deepslate Tile Wall", $deepslateTilesBreakInfo));
1603 self::register(
"cracked_deepslate_tiles",
new Opaque(
new BID(Ids::CRACKED_DEEPSLATE_TILES),
"Cracked Deepslate Tiles", $deepslateTilesBreakInfo));
1605 $cobbledDeepslateBreakInfo =
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD, 18.0));
1606 self::register(
"cobbled_deepslate",
new Opaque(
new BID(Ids::COBBLED_DEEPSLATE),
"Cobbled Deepslate", $cobbledDeepslateBreakInfo));
1607 self::register(
"cobbled_deepslate_slab",
new Slab(
new BID(Ids::COBBLED_DEEPSLATE_SLAB),
"Cobbled Deepslate", $cobbledDeepslateBreakInfo));
1608 self::register(
"cobbled_deepslate_stairs",
new Stair(
new BID(Ids::COBBLED_DEEPSLATE_STAIRS),
"Cobbled Deepslate Stairs", $cobbledDeepslateBreakInfo));
1609 self::register(
"cobbled_deepslate_wall",
new Wall(
new BID(Ids::COBBLED_DEEPSLATE_WALL),
"Cobbled Deepslate Wall", $cobbledDeepslateBreakInfo));
1611 $polishedDeepslateBreakInfo =
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD, 18.0));
1612 self::register(
"polished_deepslate",
new Opaque(
new BID(Ids::POLISHED_DEEPSLATE),
"Polished Deepslate", $polishedDeepslateBreakInfo));
1613 self::register(
"polished_deepslate_slab",
new Slab(
new BID(Ids::POLISHED_DEEPSLATE_SLAB),
"Polished Deepslate", $polishedDeepslateBreakInfo));
1614 self::register(
"polished_deepslate_stairs",
new Stair(
new BID(Ids::POLISHED_DEEPSLATE_STAIRS),
"Polished Deepslate Stairs", $polishedDeepslateBreakInfo));
1615 self::register(
"polished_deepslate_wall",
new Wall(
new BID(Ids::POLISHED_DEEPSLATE_WALL),
"Polished Deepslate Wall", $polishedDeepslateBreakInfo));
1617 self::register(
"tinted_glass",
new TintedGlass(
new BID(Ids::TINTED_GLASS),
"Tinted Glass",
new Info(
new BreakInfo(0.3))));
1620 $copperBreakInfo =
new Info(BreakInfo::pickaxe(3.0, ToolTier::STONE, 18.0));
1621 self::register(
"lightning_rod",
new LightningRod(
new BID(Ids::LIGHTNING_ROD),
"Lightning Rod", $copperBreakInfo));
1623 self::register(
"copper",
new Copper(
new BID(Ids::COPPER),
"Copper Block", $copperBreakInfo));
1624 self::register(
"cut_copper",
new Copper(
new BID(Ids::CUT_COPPER),
"Cut Copper Block", $copperBreakInfo));
1625 self::register(
"cut_copper_slab",
new CopperSlab(
new BID(Ids::CUT_COPPER_SLAB),
"Cut Copper Slab", $copperBreakInfo));
1626 self::register(
"cut_copper_stairs",
new CopperStairs(
new BID(Ids::CUT_COPPER_STAIRS),
"Cut Copper Stairs", $copperBreakInfo));
1628 $candleBreakInfo =
new Info(
new BreakInfo(0.1));
1629 self::register(
"candle",
new Candle(
new BID(Ids::CANDLE),
"Candle", $candleBreakInfo));
1630 self::register(
"dyed_candle",
new DyedCandle(
new BID(Ids::DYED_CANDLE),
"Dyed Candle", $candleBreakInfo));
1633 $cakeBreakInfo =
new Info(
new BreakInfo(0.5));
1634 self::register(
"cake_with_candle",
new CakeWithCandle(
new BID(Ids::CAKE_WITH_CANDLE),
"Cake With Candle", $cakeBreakInfo));
1635 self::register(
"cake_with_dyed_candle",
new CakeWithDyedCandle(
new BID(Ids::CAKE_WITH_DYED_CANDLE),
"Cake With Dyed Candle", $cakeBreakInfo));
1637 self::register(
"hanging_roots",
new HangingRoots(
new BID(Ids::HANGING_ROOTS),
"Hanging Roots",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
1639 self::register(
"cave_vines",
new CaveVines(
new BID(Ids::CAVE_VINES),
"Cave Vines",
new Info(BreakInfo::instant())));
1641 self::register(
"small_dripleaf",
new SmallDripleaf(
new BID(Ids::SMALL_DRIPLEAF),
"Small Dripleaf",
new Info(BreakInfo::instant(ToolType::SHEARS, toolHarvestLevel: 1))));
1642 self::register(
"big_dripleaf_head",
new BigDripleafHead(
new BID(Ids::BIG_DRIPLEAF_HEAD),
"Big Dripleaf",
new Info(BreakInfo::instant())));
1643 self::register(
"big_dripleaf_stem",
new BigDripleafStem(
new BID(Ids::BIG_DRIPLEAF_STEM),
"Big Dripleaf Stem",
new Info(BreakInfo::instant())));
1646 private static function registerBlocksR18() : void{
1647 self::register(
"spore_blossom", new SporeBlossom(new BID(Ids::SPORE_BLOSSOM),
"Spore Blossom", new Info(BreakInfo::instant())));
1650 private static function registerMudBlocks() : void{
1651 self::register(
"mud", new Opaque(new BID(Ids::MUD),
"Mud", new Info(BreakInfo::shovel(0.5), [Tags::MUD])));
1652 self::register(
"packed_mud",
new Opaque(
new BID(Ids::PACKED_MUD),
"Packed Mud",
new Info(BreakInfo::pickaxe(1.0,
null, 15.0))));
1654 $mudBricksBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
1656 self::register(
"mud_bricks",
new Opaque(
new BID(Ids::MUD_BRICKS),
"Mud Bricks", $mudBricksBreakInfo));
1657 self::register(
"mud_brick_slab",
new Slab(
new BID(Ids::MUD_BRICK_SLAB),
"Mud Brick", $mudBricksBreakInfo));
1658 self::register(
"mud_brick_stairs",
new Stair(
new BID(Ids::MUD_BRICK_STAIRS),
"Mud Brick Stairs", $mudBricksBreakInfo));
1659 self::register(
"mud_brick_wall",
new Wall(
new BID(Ids::MUD_BRICK_WALL),
"Mud Brick Wall", $mudBricksBreakInfo));
1662 private static function registerCauldronBlocks() : void{
1663 $cauldronBreakInfo = new Info(BreakInfo::pickaxe(2,
ToolTier::WOOD));
1665 self::register(
"cauldron",
new Cauldron(
new BID(Ids::CAULDRON, TileCauldron::class),
"Cauldron", $cauldronBreakInfo));
1666 self::register(
"water_cauldron",
new WaterCauldron(
new BID(Ids::WATER_CAULDRON, TileCauldron::class),
"Water Cauldron", $cauldronBreakInfo));
1667 self::register(
"lava_cauldron",
new LavaCauldron(
new BID(Ids::LAVA_CAULDRON, TileCauldron::class),
"Lava Cauldron", $cauldronBreakInfo));
1668 self::register(
"potion_cauldron",
new PotionCauldron(
new BID(Ids::POTION_CAULDRON, TileCauldron::class),
"Potion Cauldron", $cauldronBreakInfo));
trait CloningRegistryTrait