132 self::register(
"air", fn(BID $id) => new
Air($id,
"Air", new Info(BreakInfo::indestructible(-1.0))));
134 $railBreakInfo =
new Info(
new BreakInfo(0.7));
135 self::register(
"activator_rail", fn(BID $id) =>
new ActivatorRail($id,
"Activator Rail", $railBreakInfo));
136 self::register(
"anvil", fn(BID $id) =>
new Anvil($id,
"Anvil",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 6000.0))));
137 self::register(
"azalea", fn(BID $id) =>
new Azalea($id,
"Azalea",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
138 self::register(
"flowering_azalea", fn(BID $id) =>
new Azalea($id,
"Flowering Azalea",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
139 self::register(
"bamboo", fn(BID $id) =>
new Bamboo($id,
"Bamboo",
new Info(
new class(1.0, ToolType::AXE) extends BreakInfo{
140 public function getBreakTime(
Item $item) : float{
141 if($item->getBlockToolType() === ToolType::SWORD){
144 return parent::getBreakTime($item);
146 }, [Tags::POTTABLE_PLANTS])));
147 self::register(
"bamboo_sapling", fn(BID $id) =>
new BambooSapling($id,
"Bamboo Sapling",
new Info(
new BreakInfo(1.0))));
149 $bannerBreakInfo =
new Info(BreakInfo::axe(1.0));
150 self::register(
"banner", fn(BID $id) =>
new FloorBanner($id,
"Banner", $bannerBreakInfo), TileBanner::class);
151 self::register(
"wall_banner", fn(BID $id) =>
new WallBanner($id,
"Wall Banner", $bannerBreakInfo), TileBanner::class);
152 self::register(
"ominous_banner", fn(BID $id) =>
new OminousFloorBanner($id,
"Ominous Banner", $bannerBreakInfo), TileBanner::class);
153 self::register(
"ominous_wall_banner", fn(BID $id) =>
new OminousWallBanner($id,
"Ominous Wall Banner", $bannerBreakInfo), TileBanner::class);
154 self::register(
"barrel", fn(BID $id) =>
new Barrel($id,
"Barrel",
new Info(BreakInfo::axe(2.5))), TileBarrel::class);
155 self::register(
"barrier", fn(BID $id) =>
new Transparent($id,
"Barrier",
new Info(BreakInfo::indestructible())));
156 self::register(
"beacon", fn(BID $id) =>
new Beacon($id,
"Beacon",
new Info(
new BreakInfo(3.0))), TileBeacon::class);
157 self::register(
"bed", fn(BID $id) =>
new Bed($id,
"Bed Block",
new Info(
new BreakInfo(0.2))), TileBed::class);
158 self::register(
"bedrock", fn(BID $id) =>
new Bedrock($id,
"Bedrock",
new Info(BreakInfo::indestructible(18000000.0))));
160 self::register(
"beetroots", fn(BID $id) =>
new Beetroot($id,
"Beetroot Block",
new Info(BreakInfo::instant())));
161 self::register(
"bell", fn(BID $id) =>
new Bell($id,
"Bell",
new Info(BreakInfo::pickaxe(5.0))), TileBell::class);
162 self::register(
"blue_ice", fn(BID $id) =>
new BlueIce($id,
"Blue Ice",
new Info(BreakInfo::pickaxe(2.8))));
163 self::register(
"bone_block", fn(BID $id) =>
new BoneBlock($id,
"Bone Block",
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD))));
164 self::register(
"bookshelf", fn(BID $id) =>
new Bookshelf($id,
"Bookshelf",
new Info(BreakInfo::axe(1.5))));
165 self::register(
"chiseled_bookshelf", fn(BID $id) =>
new ChiseledBookshelf($id,
"Chiseled Bookshelf",
new Info(BreakInfo::axe(1.5))), TileChiseledBookshelf::class);
166 self::register(
"brewing_stand", fn(BID $id) =>
new BrewingStand($id,
"Brewing Stand",
new Info(BreakInfo::pickaxe(0.5))), TileBrewingStand::class);
168 $bricksBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
169 self::register(
"brick_stairs", fn(BID $id) =>
new Stair($id,
"Brick Stairs", $bricksBreakInfo));
170 self::register(
"bricks", fn(BID $id) =>
new Opaque($id,
"Bricks", $bricksBreakInfo));
172 self::register(
"brown_mushroom", fn(BID $id) =>
new BrownMushroom($id,
"Brown Mushroom",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
173 self::register(
"cactus", fn(BID $id) =>
new Cactus($id,
"Cactus",
new Info(
new BreakInfo(0.4), [Tags::POTTABLE_PLANTS])));
174 self::register(
"cake", fn(BID $id) =>
new Cake($id,
"Cake",
new Info(
new BreakInfo(0.5))));
176 $campfireBreakInfo =
new Info(BreakInfo::axe(2.0));
177 self::register(
"campfire", fn(BID $id) =>
new Campfire($id,
"Campfire", $campfireBreakInfo), TileCampfire::class);
178 self::register(
"soul_campfire", fn(BID $id) =>
new SoulCampfire($id,
"Soul Campfire", $campfireBreakInfo), TileCampfire::class);
180 self::register(
"carrots", fn(BID $id) =>
new Carrot($id,
"Carrot Block",
new Info(BreakInfo::instant())));
182 $chestBreakInfo =
new Info(BreakInfo::axe(2.5));
183 self::register(
"chest", fn(BID $id) =>
new Chest($id,
"Chest", $chestBreakInfo), TileChest::class);
184 self::register(
"clay", fn(BID $id) =>
new Clay($id,
"Clay Block",
new Info(BreakInfo::shovel(0.6))));
185 self::register(
"coal", fn(BID $id) =>
new Coal($id,
"Coal Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 30.0))));
187 $cobblestoneBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
188 $cobblestone = self::register(
"cobblestone", fn(BID $id) =>
new Opaque($id,
"Cobblestone", $cobblestoneBreakInfo));
189 self::register(
"mossy_cobblestone", fn(BID $id) =>
new Opaque($id,
"Mossy Cobblestone", $cobblestoneBreakInfo));
190 self::register(
"cobblestone_stairs", fn(BID $id) =>
new Stair($id,
"Cobblestone Stairs", $cobblestoneBreakInfo));
191 self::register(
"mossy_cobblestone_stairs", fn(BID $id) =>
new Stair($id,
"Mossy Cobblestone Stairs", $cobblestoneBreakInfo));
193 self::register(
"cobweb", fn(BID $id) =>
new Cobweb($id,
"Cobweb",
new Info(
new BreakInfo(4.0, ToolType::SWORD | ToolType::SHEARS, 1))));
194 self::register(
"cocoa_pod", fn(BID $id) =>
new CocoaBlock($id,
"Cocoa Block",
new Info(BreakInfo::axe(0.2,
null, 15.0))));
195 self::register(
"coral_block", fn(BID $id) =>
new CoralBlock($id,
"Coral Block",
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0))));
196 self::register(
"daylight_sensor", fn(BID $id) =>
new DaylightSensor($id,
"Daylight Sensor",
new Info(BreakInfo::axe(0.2))), TileDaylightSensor::class);
197 self::register(
"dead_bush", fn(BID $id) =>
new DeadBush($id,
"Dead Bush",
new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS])));
198 self::register(
"detector_rail", fn(BID $id) =>
new DetectorRail($id,
"Detector Rail", $railBreakInfo));
200 self::register(
"diamond", fn(BID $id) =>
new Opaque($id,
"Diamond Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON, 30.0))));
201 self::register(
"dirt", fn(BID $id) =>
new Dirt($id,
"Dirt",
new Info(BreakInfo::shovel(0.5), [Tags::DIRT])));
202 self::register(
"sunflower", fn(BID $id) =>
new DoublePlant($id,
"Sunflower",
new Info(BreakInfo::instant())));
203 self::register(
"lilac", fn(BID $id) =>
new DoublePlant($id,
"Lilac",
new Info(BreakInfo::instant())));
204 self::register(
"rose_bush", fn(BID $id) =>
new DoublePlant($id,
"Rose Bush",
new Info(BreakInfo::instant())));
205 self::register(
"peony", fn(BID $id) =>
new DoublePlant($id,
"Peony",
new Info(BreakInfo::instant())));
206 self::register(
"pink_petals", fn(BID $id) =>
new PinkPetals($id,
"Pink Petals",
new Info(BreakInfo::instant())));
207 self::register(
"double_tallgrass", fn(BID $id) =>
new DoubleTallGrass($id,
"Double Tallgrass",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
208 self::register(
"large_fern", fn(BID $id) =>
new DoubleTallGrass($id,
"Large Fern",
new Info(BreakInfo::instant(ToolType::SHEARS, 1))));
209 self::register(
"pitcher_plant", fn(BID $id) =>
new DoublePlant($id,
"Pitcher Plant",
new Info(BreakInfo::instant())));
210 self::register(
"pitcher_crop", fn(BID $id) =>
new PitcherCrop($id,
"Pitcher Crop",
new Info(BreakInfo::instant())));
211 self::register(
"double_pitcher_crop", fn(BID $id) =>
new DoublePitcherCrop($id,
"Double Pitcher Crop",
new Info(BreakInfo::instant())));
212 self::register(
"dragon_egg", fn(BID $id) =>
new DragonEgg($id,
"Dragon Egg",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, blastResistance: 45.0))));
213 self::register(
"dried_kelp", fn(BID $id) =>
new DriedKelp($id,
"Dried Kelp Block",
new Info(
new BreakInfo(0.5, ToolType::NONE, 0, 12.5))));
214 self::register(
"emerald", fn(BID $id) =>
new Opaque($id,
"Emerald Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::IRON, 30.0))));
215 self::register(
"enchanting_table", fn(BID $id) =>
new EnchantingTable($id,
"Enchanting Table",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 6000.0))), TileEnchantingTable::class);
216 self::register(
"end_portal_frame", fn(BID $id) =>
new EndPortalFrame($id,
"End Portal Frame",
new Info(BreakInfo::indestructible(18000000.0))));
217 self::register(
"end_rod", fn(BID $id) =>
new EndRod($id,
"End Rod",
new Info(BreakInfo::instant())));
218 self::register(
"end_stone", fn(BID $id) =>
new Opaque($id,
"End Stone",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 45.0))));
220 $endBrickBreakInfo =
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 45.0));
221 self::register(
"end_stone_bricks", fn(BID $id) =>
new Opaque($id,
"End Stone Bricks", $endBrickBreakInfo));
222 self::register(
"end_stone_brick_stairs", fn(BID $id) =>
new Stair($id,
"End Stone Brick Stairs", $endBrickBreakInfo));
224 self::register(
"ender_chest", fn(BID $id) =>
new EnderChest($id,
"Ender Chest",
new Info(BreakInfo::pickaxe(22.5, blastResistance: 3000.0))), TileEnderChest::class);
225 self::register(
"farmland", fn(BID $id) =>
new Farmland($id,
"Farmland",
new Info(BreakInfo::shovel(0.6), [Tags::DIRT])));
226 self::register(
"fire", fn(BID $id) =>
new Fire($id,
"Fire Block",
new Info(BreakInfo::instant(), [Tags::FIRE])));
228 $flowerTypeInfo =
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]);
229 self::register(
"dandelion", fn(BID $id) =>
new Flower($id,
"Dandelion", $flowerTypeInfo));
230 self::register(
"poppy", fn(BID $id) =>
new Flower($id,
"Poppy", $flowerTypeInfo));
231 self::register(
"allium", fn(BID $id) =>
new Flower($id,
"Allium", $flowerTypeInfo));
232 self::register(
"azure_bluet", fn(BID $id) =>
new Flower($id,
"Azure Bluet", $flowerTypeInfo));
233 self::register(
"blue_orchid", fn(BID $id) =>
new Flower($id,
"Blue Orchid", $flowerTypeInfo));
234 self::register(
"cornflower", fn(BID $id) =>
new Flower($id,
"Cornflower", $flowerTypeInfo));
235 self::register(
"lily_of_the_valley", fn(BID $id) =>
new Flower($id,
"Lily of the Valley", $flowerTypeInfo));
236 self::register(
"orange_tulip", fn(BID $id) =>
new Flower($id,
"Orange Tulip", $flowerTypeInfo));
237 self::register(
"oxeye_daisy", fn(BID $id) =>
new Flower($id,
"Oxeye Daisy", $flowerTypeInfo));
238 self::register(
"pink_tulip", fn(BID $id) =>
new Flower($id,
"Pink Tulip", $flowerTypeInfo));
239 self::register(
"red_tulip", fn(BID $id) =>
new Flower($id,
"Red Tulip", $flowerTypeInfo));
240 self::register(
"white_tulip", fn(BID $id) =>
new Flower($id,
"White Tulip", $flowerTypeInfo));
241 self::register(
"torchflower", fn(BID $id) =>
new Flower($id,
"Torchflower", $flowerTypeInfo));
242 self::register(
"torchflower_crop", fn(BID $id) =>
new TorchflowerCrop($id,
"Torchflower Crop",
new Info(BreakInfo::instant())));
243 self::register(
"flower_pot", fn(BID $id) =>
new FlowerPot($id,
"Flower Pot",
new Info(BreakInfo::instant())), TileFlowerPot::class);
244 self::register(
"frosted_ice", fn(BID $id) =>
new FrostedIce($id,
"Frosted Ice",
new Info(BreakInfo::pickaxe(0.5))));
245 self::register(
"furnace", fn(BID $id) =>
new Furnace($id,
"Furnace",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::FURNACE), TileNormalFurnace::class);
246 self::register(
"blast_furnace", fn(BID $id) =>
new Furnace($id,
"Blast Furnace",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::BLAST_FURNACE), TileBlastFurnace::class);
247 self::register(
"smoker", fn(BID $id) =>
new Furnace($id,
"Smoker",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD)), FurnaceType::SMOKER), TileSmoker::class);
249 $glassBreakInfo =
new Info(
new BreakInfo(0.3));
250 self::register(
"glass", fn(BID $id) =>
new Glass($id,
"Glass", $glassBreakInfo));
251 self::register(
"glass_pane", fn(BID $id) =>
new GlassPane($id,
"Glass Pane", $glassBreakInfo));
252 self::register(
"glowing_obsidian", fn(BID $id) =>
new GlowingObsidian($id,
"Glowing Obsidian",
new Info(BreakInfo::pickaxe(35.0, ToolTier::DIAMOND, 6000.0))));
253 self::register(
"glowstone", fn(BID $id) =>
new Glowstone($id,
"Glowstone",
new Info(BreakInfo::pickaxe(0.3))));
254 self::register(
"glow_lichen", fn(BID $id) =>
new GlowLichen($id,
"Glow Lichen",
new Info(BreakInfo::axe(0.2))));
255 self::register(
"gold", fn(BID $id) =>
new Opaque($id,
"Gold Block",
new Info(BreakInfo::pickaxe(3.0, ToolTier::IRON, 30.0))));
257 self::register(
"grass", fn(BID $id) =>
new Grass($id,
"Grass",
new Info(BreakInfo::shovel(0.6), [Tags::DIRT])));
258 self::register(
"grass_path", fn(BID $id) =>
new GrassPath($id,
"Grass Path",
new Info(BreakInfo::shovel(0.65))));
259 self::register(
"gravel", fn(BID $id) =>
new Gravel($id,
"Gravel",
new Info(BreakInfo::shovel(0.6))));
261 self::register(
"hardened_clay", fn(BID $id) =>
new HardenedClay($id,
"Hardened Clay",
new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD, 21.0))));
263 $hardenedGlassBreakInfo =
new Info(
new BreakInfo(10.0));
264 self::register(
"hardened_glass", fn(BID $id) =>
new HardenedGlass($id,
"Hardened Glass", $hardenedGlassBreakInfo));
265 self::register(
"hardened_glass_pane", fn(BID $id) =>
new HardenedGlassPane($id,
"Hardened Glass Pane", $hardenedGlassBreakInfo));
266 self::register(
"hay_bale", fn(BID $id) =>
new HayBale($id,
"Hay Bale",
new Info(
new BreakInfo(0.5))));
267 self::register(
"hopper", fn(BID $id) =>
new Hopper($id,
"Hopper",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 24.0))), TileHopper::class);
268 self::register(
"ice", fn(BID $id) =>
new Ice($id,
"Ice",
new Info(BreakInfo::pickaxe(0.5))));
270 $updateBlockBreakInfo =
new Info(
new BreakInfo(1.0));
271 self::register(
"info_update", fn(BID $id) =>
new Opaque($id,
"update!", $updateBlockBreakInfo));
272 self::register(
"info_update2", fn(BID $id) =>
new Opaque($id,
"ate!upd", $updateBlockBreakInfo));
273 self::register(
"invisible_bedrock", fn(BID $id) =>
new Transparent($id,
"Invisible Bedrock",
new Info(BreakInfo::indestructible(18000000.0))));
275 $ironBreakInfo =
new Info(BreakInfo::pickaxe(5.0, ToolTier::STONE, 30.0));
276 self::register(
"iron", fn(BID $id) =>
new Opaque($id,
"Iron Block", $ironBreakInfo));
277 self::register(
"iron_bars", fn(BID $id) =>
new Thin($id,
"Iron Bars", $ironBreakInfo));
278 self::register(
"copper_bars", fn(BID $id) =>
new CopperBars($id,
"Copper Bars", $ironBreakInfo));
280 self::register(
"iron_door", fn(BID $id) =>
new Door($id,
"Iron Door",
new Info(BreakInfo::pickaxe(5.0))));
281 self::register(
"iron_trapdoor", fn(BID $id) =>
new Trapdoor($id,
"Iron Trapdoor",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD))));
283 $itemFrameInfo =
new Info(
new BreakInfo(0.25));
284 self::register(
"item_frame", fn(BID $id) =>
new ItemFrame($id,
"Item Frame", $itemFrameInfo), TileItemFrame::class);
285 self::register(
"glowing_item_frame", fn(BID $id) =>
new ItemFrame($id,
"Glow Item Frame", $itemFrameInfo), TileGlowingItemFrame::class);
287 self::register(
"jukebox", fn(BID $id) =>
new Jukebox($id,
"Jukebox",
new Info(BreakInfo::axe(2.0, blastResistance: 30.0))), TileJukebox::class);
288 self::register(
"ladder", fn(BID $id) =>
new Ladder($id,
"Ladder",
new Info(BreakInfo::axe(0.4))));
290 $lanternBreakInfo =
new Info(BreakInfo::pickaxe(3.5));
291 self::register(
"lantern", fn(BID $id) =>
new Lantern($id,
"Lantern", $lanternBreakInfo, 15));
292 self::register(
"soul_lantern", fn(BID $id) =>
new Lantern($id,
"Soul Lantern", $lanternBreakInfo, 10));
293 self::register(
"copper_lantern", fn(BID $id) =>
new CopperLantern($id,
"Copper Lantern", $lanternBreakInfo, 15));
295 self::register(
"lapis_lazuli", fn(BID $id) =>
new Opaque($id,
"Lapis Lazuli Block",
new Info(BreakInfo::pickaxe(3.0, ToolTier::STONE))));
296 self::register(
"lava", fn(BID $id) =>
new Lava($id,
"Lava",
new Info(BreakInfo::indestructible(500.0))));
297 self::register(
"lectern", fn(BID $id) =>
new Lectern($id,
"Lectern",
new Info(BreakInfo::axe(2.5))), TileLectern::class);
298 self::register(
"lever", fn(BID $id) =>
new Lever($id,
"Lever",
new Info(
new BreakInfo(0.5))));
299 self::register(
"magma", fn(BID $id) =>
new Magma($id,
"Magma Block",
new Info(BreakInfo::pickaxe(0.5, ToolTier::WOOD))));
300 self::register(
"melon", fn(BID $id) =>
new Melon($id,
"Melon Block",
new Info(BreakInfo::axe(1.0))));
301 self::register(
"melon_stem", fn(BID $id) =>
new MelonStem($id,
"Melon Stem",
new Info(BreakInfo::instant())));
302 self::register(
"monster_spawner", fn(BID $id) =>
new MonsterSpawner($id,
"Monster Spawner",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD))), TileMonsterSpawner::class);
303 self::register(
"mycelium", fn(BID $id) =>
new Mycelium($id,
"Mycelium",
new Info(BreakInfo::shovel(0.6), [Tags::DIRT])));
305 $netherBrickBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
306 self::register(
"nether_bricks", fn(BID $id) =>
new Opaque($id,
"Nether Bricks", $netherBrickBreakInfo));
307 self::register(
"red_nether_bricks", fn(BID $id) =>
new Opaque($id,
"Red Nether Bricks", $netherBrickBreakInfo));
308 self::register(
"nether_brick_fence", fn(BID $id) =>
new Fence($id,
"Nether Brick Fence", $netherBrickBreakInfo));
309 self::register(
"nether_brick_stairs", fn(BID $id) =>
new Stair($id,
"Nether Brick Stairs", $netherBrickBreakInfo));
310 self::register(
"red_nether_brick_stairs", fn(BID $id) =>
new Stair($id,
"Red Nether Brick Stairs", $netherBrickBreakInfo));
311 self::register(
"chiseled_nether_bricks", fn(BID $id) =>
new Opaque($id,
"Chiseled Nether Bricks", $netherBrickBreakInfo));
312 self::register(
"cracked_nether_bricks", fn(BID $id) =>
new Opaque($id,
"Cracked Nether Bricks", $netherBrickBreakInfo));
314 self::register(
"nether_portal", fn(BID $id) =>
new NetherPortal($id,
"Nether Portal",
new Info(BreakInfo::indestructible(0.0))));
315 self::register(
"nether_reactor_core", fn(BID $id) =>
new NetherReactor($id,
"Nether Reactor Core",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD))));
316 self::register(
"nether_wart_block", fn(BID $id) =>
new Opaque($id,
"Nether Wart Block",
new Info(
new BreakInfo(1.0, ToolType::HOE))));
317 self::register(
"nether_wart", fn(BID $id) =>
new NetherWartPlant($id,
"Nether Wart",
new Info(BreakInfo::instant())));
318 self::register(
"netherrack", fn(BID $id) =>
new Netherrack($id,
"Netherrack",
new Info(BreakInfo::pickaxe(0.4, ToolTier::WOOD))));
319 self::register(
"note_block", fn(BID $id) =>
new Note($id,
"Note Block",
new Info(BreakInfo::axe(0.8))), TileNote::class);
320 self::register(
"obsidian", fn(BID $id) =>
new Opaque($id,
"Obsidian",
new Info(BreakInfo::pickaxe(35.0 , ToolTier::DIAMOND, 6000.0))));
321 self::register(
"packed_ice", fn(BID $id) =>
new PackedIce($id,
"Packed Ice",
new Info(BreakInfo::pickaxe(0.5))));
322 self::register(
"podzol", fn(BID $id) =>
new Podzol($id,
"Podzol",
new Info(BreakInfo::shovel(0.5), [Tags::DIRT])));
323 self::register(
"potatoes", fn(BID $id) =>
new Potato($id,
"Potato Block",
new Info(BreakInfo::instant())));
324 self::register(
"powered_rail", fn(BID $id) =>
new PoweredRail($id,
"Powered Rail", $railBreakInfo));
326 $prismarineBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
327 self::register(
"prismarine", fn(BID $id) =>
new Opaque($id,
"Prismarine", $prismarineBreakInfo));
328 self::register(
"dark_prismarine", fn(BID $id) =>
new Opaque($id,
"Dark Prismarine", $prismarineBreakInfo));
329 self::register(
"prismarine_bricks", fn(BID $id) =>
new Opaque($id,
"Prismarine Bricks", $prismarineBreakInfo));
330 self::register(
"prismarine_bricks_stairs", fn(BID $id) =>
new Stair($id,
"Prismarine Bricks Stairs", $prismarineBreakInfo));
331 self::register(
"dark_prismarine_stairs", fn(BID $id) =>
new Stair($id,
"Dark Prismarine Stairs", $prismarineBreakInfo));
332 self::register(
"prismarine_stairs", fn(BID $id) =>
new Stair($id,
"Prismarine Stairs", $prismarineBreakInfo));
334 $pumpkinBreakInfo =
new Info(BreakInfo::axe(1.0));
335 self::register(
"pumpkin", fn(BID $id) =>
new Pumpkin($id,
"Pumpkin", $pumpkinBreakInfo));
336 self::register(
"carved_pumpkin", fn(BID $id) =>
new CarvedPumpkin($id,
"Carved Pumpkin",
new Info(BreakInfo::axe(1.0), enchantmentTags: [EnchantmentTags::MASK])));
337 self::register(
"lit_pumpkin", fn(BID $id) =>
new LitPumpkin($id,
"Jack o'Lantern", $pumpkinBreakInfo));
339 self::register(
"pumpkin_stem", fn(BID $id) =>
new PumpkinStem($id,
"Pumpkin Stem",
new Info(BreakInfo::instant())));
341 $purpurBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
342 self::register(
"purpur", fn(BID $id) =>
new Opaque($id,
"Purpur Block", $purpurBreakInfo));
343 self::register(
"purpur_pillar", fn(BID $id) =>
new SimplePillar($id,
"Purpur Pillar", $purpurBreakInfo));
344 self::register(
"purpur_stairs", fn(BID $id) =>
new Stair($id,
"Purpur Stairs", $purpurBreakInfo));
346 $quartzBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD));
347 $smoothQuartzBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
348 self::register(
"quartz", fn(BID $id) =>
new Opaque($id,
"Quartz Block", $quartzBreakInfo));
349 self::register(
"chiseled_quartz", fn(BID $id) =>
new SimplePillar($id,
"Chiseled Quartz Block", $quartzBreakInfo));
350 self::register(
"quartz_pillar", fn(BID $id) =>
new SimplePillar($id,
"Quartz Pillar", $quartzBreakInfo));
351 self::register(
"smooth_quartz", fn(BID $id) =>
new Opaque($id,
"Smooth Quartz Block", $smoothQuartzBreakInfo));
352 self::register(
"quartz_bricks", fn(BID $id) =>
new Opaque($id,
"Quartz Bricks", $quartzBreakInfo));
354 self::register(
"quartz_stairs", fn(BID $id) =>
new Stair($id,
"Quartz Stairs", $quartzBreakInfo));
355 self::register(
"smooth_quartz_stairs", fn(BID $id) =>
new Stair($id,
"Smooth Quartz Stairs", $smoothQuartzBreakInfo));
357 self::register(
"rail", fn(BID $id) =>
new Rail($id,
"Rail", $railBreakInfo));
358 self::register(
"red_mushroom", fn(BID $id) =>
new RedMushroom($id,
"Red Mushroom",
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS])));
359 self::register(
"redstone", fn(BID $id) =>
new Redstone($id,
"Redstone Block",
new Info(BreakInfo::pickaxe(5.0, ToolTier::WOOD, 30.0))));
360 self::register(
"redstone_comparator", fn(BID $id) =>
new RedstoneComparator($id,
"Redstone Comparator",
new Info(BreakInfo::instant())), TileComparator::class);
361 self::register(
"redstone_lamp", fn(BID $id) =>
new RedstoneLamp($id,
"Redstone Lamp",
new Info(
new BreakInfo(0.3))));
362 self::register(
"redstone_repeater", fn(BID $id) =>
new RedstoneRepeater($id,
"Redstone Repeater",
new Info(BreakInfo::instant())));
363 self::register(
"redstone_torch", fn(BID $id) =>
new RedstoneTorch($id,
"Redstone Torch",
new Info(BreakInfo::instant())));
364 self::register(
"redstone_wire", fn(BID $id) =>
new RedstoneWire($id,
"Redstone",
new Info(BreakInfo::instant())));
365 self::register(
"reserved6", fn(BID $id) =>
new Reserved6($id,
"reserved6",
new Info(BreakInfo::instant())));
367 $sandTypeInfo =
new Info(BreakInfo::shovel(0.5), [Tags::SAND]);
368 self::register(
"sand", fn(BID $id) =>
new Sand($id,
"Sand", $sandTypeInfo));
369 self::register(
"red_sand", fn(BID $id) =>
new Sand($id,
"Red Sand", $sandTypeInfo));
371 self::register(
"sea_lantern", fn(BID $id) =>
new SeaLantern($id,
"Sea Lantern",
new Info(
new BreakInfo(0.3))));
372 self::register(
"sea_pickle", fn(BID $id) =>
new SeaPickle($id,
"Sea Pickle",
new Info(BreakInfo::instant())));
373 self::register(
"mob_head", fn(BID $id) =>
new MobHead($id,
"Mob Head",
new Info(
new BreakInfo(1.0), enchantmentTags: [EnchantmentTags::MASK])), TileMobHead::class);
374 self::register(
"slime", fn(BID $id) =>
new Slime($id,
"Slime Block",
new Info(BreakInfo::instant())));
375 self::register(
"snow", fn(BID $id) =>
new Snow($id,
"Snow Block",
new Info(BreakInfo::shovel(0.2, ToolTier::WOOD))));
376 self::register(
"snow_layer", fn(BID $id) =>
new SnowLayer($id,
"Snow Layer",
new Info(BreakInfo::shovel(0.1, ToolTier::WOOD))));
377 self::register(
"soul_sand", fn(BID $id) =>
new SoulSand($id,
"Soul Sand",
new Info(BreakInfo::shovel(0.5))));
378 self::register(
"sponge", fn(BID $id) =>
new Sponge($id,
"Sponge",
new Info(
new BreakInfo(0.6, ToolType::HOE))));
379 $shulkerBoxBreakInfo =
new Info(BreakInfo::pickaxe(2));
380 self::register(
"shulker_box", fn(BID $id) =>
new ShulkerBox($id,
"Shulker Box", $shulkerBoxBreakInfo), TileShulkerBox::class);
382 $stoneBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
383 $stone = self::register(
385 fn(BID $id) =>
new class($id,
"Stone", $stoneBreakInfo) extends Opaque{
386 public function getDropsForCompatibleTool(Item $item) : array{
387 return [VanillaBlocks::COBBLESTONE()->asItem()];
390 public function isAffectedBySilkTouch() : bool{
395 self::register(
"andesite", fn(BID $id) =>
new Opaque($id,
"Andesite", $stoneBreakInfo));
396 self::register(
"diorite", fn(BID $id) =>
new Opaque($id,
"Diorite", $stoneBreakInfo));
397 self::register(
"granite", fn(BID $id) =>
new Opaque($id,
"Granite", $stoneBreakInfo));
398 self::register(
"polished_andesite", fn(BID $id) =>
new Opaque($id,
"Polished Andesite", $stoneBreakInfo));
399 self::register(
"polished_diorite", fn(BID $id) =>
new Opaque($id,
"Polished Diorite", $stoneBreakInfo));
400 self::register(
"polished_granite", fn(BID $id) =>
new Opaque($id,
"Polished Granite", $stoneBreakInfo));
402 $stoneBrick = self::register(
"stone_bricks", fn(BID $id) =>
new Opaque($id,
"Stone Bricks", $stoneBreakInfo));
403 $mossyStoneBrick = self::register(
"mossy_stone_bricks", fn(BID $id) =>
new Opaque($id,
"Mossy Stone Bricks", $stoneBreakInfo));
404 $crackedStoneBrick = self::register(
"cracked_stone_bricks", fn(BID $id) =>
new Opaque($id,
"Cracked Stone Bricks", $stoneBreakInfo));
405 $chiseledStoneBrick = self::register(
"chiseled_stone_bricks", fn(BID $id) =>
new Opaque($id,
"Chiseled Stone Bricks", $stoneBreakInfo));
407 $infestedStoneBreakInfo =
new Info(BreakInfo::pickaxe(0.75));
408 self::register(
"infested_stone", fn(BID $id) =>
new InfestedStone($id,
"Infested Stone", $infestedStoneBreakInfo, $stone));
409 self::register(
"infested_stone_brick", fn(BID $id) =>
new InfestedStone($id,
"Infested Stone Brick", $infestedStoneBreakInfo, $stoneBrick));
410 self::register(
"infested_cobblestone", fn(BID $id) =>
new InfestedStone($id,
"Infested Cobblestone",
new Info(BreakInfo::pickaxe(1.0, blastResistance: 3.75)), $cobblestone));
411 self::register(
"infested_mossy_stone_brick", fn(BID $id) =>
new InfestedStone($id,
"Infested Mossy Stone Brick", $infestedStoneBreakInfo, $mossyStoneBrick));
412 self::register(
"infested_cracked_stone_brick", fn(BID $id) =>
new InfestedStone($id,
"Infested Cracked Stone Brick", $infestedStoneBreakInfo, $crackedStoneBrick));
413 self::register(
"infested_chiseled_stone_brick", fn(BID $id) =>
new InfestedStone($id,
"Infested Chiseled Stone Brick", $infestedStoneBreakInfo, $chiseledStoneBrick));
415 self::register(
"stone_stairs", fn(BID $id) =>
new Stair($id,
"Stone Stairs", $stoneBreakInfo));
416 self::register(
"smooth_stone", fn(BID $id) =>
new Opaque($id,
"Smooth Stone",
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0))));
417 self::register(
"andesite_stairs", fn(BID $id) =>
new Stair($id,
"Andesite Stairs", $stoneBreakInfo));
418 self::register(
"diorite_stairs", fn(BID $id) =>
new Stair($id,
"Diorite Stairs", $stoneBreakInfo));
419 self::register(
"granite_stairs", fn(BID $id) =>
new Stair($id,
"Granite Stairs", $stoneBreakInfo));
420 self::register(
"polished_andesite_stairs", fn(BID $id) =>
new Stair($id,
"Polished Andesite Stairs", $stoneBreakInfo));
421 self::register(
"polished_diorite_stairs", fn(BID $id) =>
new Stair($id,
"Polished Diorite Stairs", $stoneBreakInfo));
422 self::register(
"polished_granite_stairs", fn(BID $id) =>
new Stair($id,
"Polished Granite Stairs", $stoneBreakInfo));
423 self::register(
"stone_brick_stairs", fn(BID $id) =>
new Stair($id,
"Stone Brick Stairs", $stoneBreakInfo));
424 self::register(
"mossy_stone_brick_stairs", fn(BID $id) =>
new Stair($id,
"Mossy Stone Brick Stairs", $stoneBreakInfo));
425 self::register(
"stone_button", fn(BID $id) =>
new StoneButton($id,
"Stone Button",
new Info(BreakInfo::pickaxe(0.5))));
426 self::register(
"stonecutter", fn(BID $id) =>
new Stonecutter($id,
"Stonecutter",
new Info(BreakInfo::pickaxe(3.5))));
427 self::register(
"stone_pressure_plate", fn(BID $id) =>
new StonePressurePlate($id,
"Stone Pressure Plate",
new Info(BreakInfo::pickaxe(0.5)), deactivationDelayTicks: 20));
429 $stoneSlabBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
431 self::register(
"brick_slab", fn(BID $id) =>
new Slab($id,
"Brick", $stoneSlabBreakInfo));
432 self::register(
"cobblestone_slab", fn(BID $id) =>
new Slab($id,
"Cobblestone", $stoneSlabBreakInfo));
433 self::register(
"fake_wooden_slab", fn(BID $id) =>
new Slab($id,
"Fake Wooden", $stoneSlabBreakInfo));
434 self::register(
"nether_brick_slab", fn(BID $id) =>
new Slab($id,
"Nether Brick", $stoneSlabBreakInfo));
435 self::register(
"quartz_slab", fn(BID $id) =>
new Slab($id,
"Quartz", $stoneSlabBreakInfo));
436 self::register(
"sandstone_slab", fn(BID $id) =>
new Slab($id,
"Sandstone", $stoneSlabBreakInfo));
437 self::register(
"smooth_stone_slab", fn(BID $id) =>
new Slab($id,
"Smooth Stone", $stoneSlabBreakInfo));
438 self::register(
"stone_brick_slab", fn(BID $id) =>
new Slab($id,
"Stone Brick", $stoneSlabBreakInfo));
439 self::register(
"red_nether_brick_slab", fn(BID $id) =>
new Slab($id,
"Red Nether Brick", $stoneSlabBreakInfo));
440 self::register(
"red_sandstone_slab", fn(BID $id) =>
new Slab($id,
"Red Sandstone", $stoneSlabBreakInfo));
441 self::register(
"smooth_sandstone_slab", fn(BID $id) =>
new Slab($id,
"Smooth Sandstone", $stoneSlabBreakInfo));
442 self::register(
"cut_red_sandstone_slab", fn(BID $id) =>
new Slab($id,
"Cut Red Sandstone", $stoneSlabBreakInfo));
443 self::register(
"cut_sandstone_slab", fn(BID $id) =>
new Slab($id,
"Cut Sandstone", $stoneSlabBreakInfo));
444 self::register(
"mossy_cobblestone_slab", fn(BID $id) =>
new Slab($id,
"Mossy Cobblestone", $stoneSlabBreakInfo));
445 self::register(
"purpur_slab", fn(BID $id) =>
new Slab($id,
"Purpur", $stoneSlabBreakInfo));
446 self::register(
"smooth_red_sandstone_slab", fn(BID $id) =>
new Slab($id,
"Smooth Red Sandstone", $stoneSlabBreakInfo));
447 self::register(
"smooth_quartz_slab", fn(BID $id) =>
new Slab($id,
"Smooth Quartz", $stoneSlabBreakInfo));
448 self::register(
"stone_slab", fn(BID $id) =>
new Slab($id,
"Stone", $stoneSlabBreakInfo));
450 self::register(
"end_stone_brick_slab", fn(BID $id) =>
new Slab($id,
"End Stone Brick",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 30.0))));
452 $lightStoneSlabBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
453 self::register(
"dark_prismarine_slab", fn(BID $id) =>
new Slab($id,
"Dark Prismarine", $lightStoneSlabBreakInfo));
454 self::register(
"prismarine_slab", fn(BID $id) =>
new Slab($id,
"Prismarine", $lightStoneSlabBreakInfo));
455 self::register(
"prismarine_bricks_slab", fn(BID $id) =>
new Slab($id,
"Prismarine Bricks", $lightStoneSlabBreakInfo));
456 self::register(
"andesite_slab", fn(BID $id) =>
new Slab($id,
"Andesite", $lightStoneSlabBreakInfo));
457 self::register(
"diorite_slab", fn(BID $id) =>
new Slab($id,
"Diorite", $lightStoneSlabBreakInfo));
458 self::register(
"granite_slab", fn(BID $id) =>
new Slab($id,
"Granite", $lightStoneSlabBreakInfo));
459 self::register(
"polished_andesite_slab", fn(BID $id) =>
new Slab($id,
"Polished Andesite", $lightStoneSlabBreakInfo));
460 self::register(
"polished_diorite_slab", fn(BID $id) =>
new Slab($id,
"Polished Diorite", $lightStoneSlabBreakInfo));
461 self::register(
"polished_granite_slab", fn(BID $id) =>
new Slab($id,
"Polished Granite", $lightStoneSlabBreakInfo));
462 self::register(
"mossy_stone_brick_slab", fn(BID $id) =>
new Slab($id,
"Mossy Stone Brick", $lightStoneSlabBreakInfo));
464 self::register(
"legacy_stonecutter", fn(BID $id) =>
new Opaque($id,
"Legacy Stonecutter",
new Info(BreakInfo::pickaxe(3.5, ToolTier::WOOD))));
465 self::register(
"sugarcane", fn(BID $id) =>
new Sugarcane($id,
"Sugarcane",
new Info(BreakInfo::instant())));
466 self::register(
"sweet_berry_bush", fn(BID $id) =>
new SweetBerryBush($id,
"Sweet Berry Bush",
new Info(BreakInfo::instant())));
467 self::register(
"tnt", fn(BID $id) =>
new TNT($id,
"TNT",
new Info(BreakInfo::instant())));
468 self::register(
"fern", fn(BID $id) =>
new TallGrass($id,
"Fern",
new Info(BreakInfo::instant(ToolType::SHEARS, 1), [Tags::POTTABLE_PLANTS]), fn() => VanillaBlocks::LARGE_FERN()));
469 self::register(
"tall_grass", fn(BID $id) =>
new TallGrass($id,
"Tall Grass",
new Info(BreakInfo::instant(ToolType::SHEARS, 1)), fn() => VanillaBlocks::DOUBLE_TALLGRASS()));
471 self::register(
"blue_torch", fn(BID $id) =>
new Torch($id,
"Blue Torch",
new Info(BreakInfo::instant())));
472 self::register(
"copper_torch", fn(BID $id) =>
new Torch($id,
"Copper Torch",
new Info(BreakInfo::instant())));
473 self::register(
"purple_torch", fn(BID $id) =>
new Torch($id,
"Purple Torch",
new Info(BreakInfo::instant())));
474 self::register(
"red_torch", fn(BID $id) =>
new Torch($id,
"Red Torch",
new Info(BreakInfo::instant())));
475 self::register(
"green_torch", fn(BID $id) =>
new Torch($id,
"Green Torch",
new Info(BreakInfo::instant())));
476 self::register(
"torch", fn(BID $id) =>
new Torch($id,
"Torch",
new Info(BreakInfo::instant())));
478 self::register(
"trapped_chest", fn(BID $id) =>
new TrappedChest($id,
"Trapped Chest", $chestBreakInfo), TileChest::class);
479 self::register(
"tripwire", fn(BID $id) =>
new Tripwire($id,
"Tripwire",
new Info(BreakInfo::instant())));
480 self::register(
"tripwire_hook", fn(BID $id) =>
new TripwireHook($id,
"Tripwire Hook",
new Info(BreakInfo::instant())));
481 self::register(
"underwater_torch", fn(BID $id) =>
new UnderwaterTorch($id,
"Underwater Torch",
new Info(BreakInfo::instant())));
482 self::register(
"vines", fn(BID $id) =>
new Vine($id,
"Vines",
new Info(BreakInfo::axe(0.2))));
483 self::register(
"water", fn(BID $id) =>
new Water($id,
"Water",
new Info(BreakInfo::indestructible(500.0))));
484 self::register(
"lily_pad", fn(BID $id) =>
new WaterLily($id,
"Lily Pad",
new Info(BreakInfo::instant())));
486 $weightedPressurePlateBreakInfo =
new Info(BreakInfo::pickaxe(0.5));
487 self::register(
"weighted_pressure_plate_heavy", fn(BID $id) =>
new WeightedPressurePlate(
489 "Weighted Pressure Plate Heavy",
490 $weightedPressurePlateBreakInfo,
491 deactivationDelayTicks: 10,
492 signalStrengthFactor: 0.1
494 self::register(
"weighted_pressure_plate_light", fn(BID $id) =>
new WeightedPressurePlate(
496 "Weighted Pressure Plate Light",
497 $weightedPressurePlateBreakInfo,
498 deactivationDelayTicks: 10,
499 signalStrengthFactor: 1.0
501 self::register(
"wheat", fn(BID $id) =>
new Wheat($id,
"Wheat Block",
new Info(BreakInfo::instant())));
503 $leavesBreakInfo =
new Info(
new class(0.2, ToolType::HOE) extends BreakInfo{
504 public function getBreakTime(Item $item) : float{
505 if($item->getBlockToolType() === ToolType::SHEARS){
508 return parent::getBreakTime($item);
511 $saplingTypeInfo =
new Info(BreakInfo::instant(), [Tags::POTTABLE_PLANTS]);
513 foreach(SaplingType::cases() as $saplingType){
514 $name = $saplingType->getDisplayName();
515 self::register(strtolower($saplingType->name) .
"_sapling", fn(BID $id) =>
new Sapling($id, $name .
" Sapling", $saplingTypeInfo, $saplingType));
517 foreach(LeavesType::cases() as $leavesType){
518 $name = $leavesType->getDisplayName();
519 self::register(strtolower($leavesType->name) .
"_leaves", fn(BID $id) =>
new Leaves($id, $name .
" Leaves", $leavesBreakInfo, $leavesType));
522 $sandstoneBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD));
523 $smoothSandstoneBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
524 self::register(
"red_sandstone_stairs", fn(BID $id) =>
new Stair($id,
"Red Sandstone Stairs", $sandstoneBreakInfo));
525 self::register(
"smooth_red_sandstone_stairs", fn(BID $id) =>
new Stair($id,
"Smooth Red Sandstone Stairs", $smoothSandstoneBreakInfo));
526 self::register(
"red_sandstone", fn(BID $id) =>
new Opaque($id,
"Red Sandstone", $sandstoneBreakInfo));
527 self::register(
"chiseled_red_sandstone", fn(BID $id) =>
new Opaque($id,
"Chiseled Red Sandstone", $sandstoneBreakInfo));
528 self::register(
"cut_red_sandstone", fn(BID $id) =>
new Opaque($id,
"Cut Red Sandstone", $sandstoneBreakInfo));
529 self::register(
"smooth_red_sandstone", fn(BID $id) =>
new Opaque($id,
"Smooth Red Sandstone", $smoothSandstoneBreakInfo));
531 self::register(
"sandstone_stairs", fn(BID $id) =>
new Stair($id,
"Sandstone Stairs", $sandstoneBreakInfo));
532 self::register(
"smooth_sandstone_stairs", fn(BID $id) =>
new Stair($id,
"Smooth Sandstone Stairs", $smoothSandstoneBreakInfo));
533 self::register(
"sandstone", fn(BID $id) =>
new Opaque($id,
"Sandstone", $sandstoneBreakInfo));
534 self::register(
"chiseled_sandstone", fn(BID $id) =>
new Opaque($id,
"Chiseled Sandstone", $sandstoneBreakInfo));
535 self::register(
"cut_sandstone", fn(BID $id) =>
new Opaque($id,
"Cut Sandstone", $sandstoneBreakInfo));
536 self::register(
"smooth_sandstone", fn(BID $id) =>
new Opaque($id,
"Smooth Sandstone", $smoothSandstoneBreakInfo));
538 self::register(
"glazed_terracotta", fn(BID $id) =>
new GlazedTerracotta($id,
"Glazed Terracotta",
new Info(BreakInfo::pickaxe(1.4, ToolTier::WOOD))));
539 self::register(
"dyed_shulker_box", fn(BID $id) =>
new DyedShulkerBox($id,
"Dyed Shulker Box", $shulkerBoxBreakInfo), TileShulkerBox::class);
540 self::register(
"stained_glass", fn(BID $id) =>
new StainedGlass($id,
"Stained Glass", $glassBreakInfo));
541 self::register(
"stained_glass_pane", fn(BID $id) =>
new StainedGlassPane($id,
"Stained Glass Pane", $glassBreakInfo));
542 self::register(
"stained_clay", fn(BID $id) =>
new StainedHardenedClay($id,
"Stained Clay",
new Info(BreakInfo::pickaxe(1.25, ToolTier::WOOD, 6.25))));
543 self::register(
"stained_hardened_glass", fn(BID $id) =>
new StainedHardenedGlass($id,
"Stained Hardened Glass", $hardenedGlassBreakInfo));
544 self::register(
"stained_hardened_glass_pane", fn(BID $id) =>
new StainedHardenedGlassPane($id,
"Stained Hardened Glass Pane", $hardenedGlassBreakInfo));
545 self::register(
"carpet", fn(BID $id) =>
new Carpet($id,
"Carpet",
new Info(
new BreakInfo(0.1))));
546 self::register(
"concrete", fn(BID $id) =>
new Concrete($id,
"Concrete",
new Info(BreakInfo::pickaxe(1.8, ToolTier::WOOD))));
547 self::register(
"concrete_powder", fn(BID $id) =>
new ConcretePowder($id,
"Concrete Powder",
new Info(BreakInfo::shovel(0.5))));
548 self::register(
"wool", fn(BID $id) =>
new Wool($id,
"Wool",
new Info(
new class(0.8, ToolType::SHEARS) extends BreakInfo{
549 public function getBreakTime(Item $item) : float{
550 $time = parent::getBreakTime($item);
551 if($item->getBlockToolType() === ToolType::SHEARS){
559 self::register(
"end_stone_brick_wall", fn(BID $id) =>
new Wall($id,
"End Stone Brick Wall",
new Info(BreakInfo::pickaxe(3.0, ToolTier::WOOD, 45.0))));
561 $brickWallBreakInfo =
new Info(BreakInfo::pickaxe(2.0, ToolTier::WOOD, 30.0));
562 self::register(
"cobblestone_wall", fn(BID $id) =>
new Wall($id,
"Cobblestone Wall", $brickWallBreakInfo));
563 self::register(
"brick_wall", fn(BID $id) =>
new Wall($id,
"Brick Wall", $brickWallBreakInfo));
564 self::register(
"mossy_cobblestone_wall", fn(BID $id) =>
new Wall($id,
"Mossy Cobblestone Wall", $brickWallBreakInfo));
565 self::register(
"nether_brick_wall", fn(BID $id) =>
new Wall($id,
"Nether Brick Wall", $brickWallBreakInfo));
566 self::register(
"red_nether_brick_wall", fn(BID $id) =>
new Wall($id,
"Red Nether Brick Wall", $brickWallBreakInfo));
568 $stoneWallBreakInfo =
new Info(BreakInfo::pickaxe(1.5, ToolTier::WOOD, 30.0));
569 self::register(
"stone_brick_wall", fn(BID $id) =>
new Wall($id,
"Stone Brick Wall", $stoneWallBreakInfo));
570 self::register(
"mossy_stone_brick_wall", fn(BID $id) =>
new Wall($id,
"Mossy Stone Brick Wall", $stoneWallBreakInfo));
571 self::register(
"granite_wall", fn(BID $id) =>
new Wall($id,
"Granite Wall", $stoneWallBreakInfo));
572 self::register(
"diorite_wall", fn(BID $id) =>
new Wall($id,
"Diorite Wall", $stoneWallBreakInfo));
573 self::register(
"andesite_wall", fn(BID $id) =>
new Wall($id,
"Andesite Wall", $stoneWallBreakInfo));
574 self::register(
"prismarine_wall", fn(BID $id) =>
new Wall($id,
"Prismarine Wall", $stoneWallBreakInfo));
576 $sandstoneWallBreakInfo =
new Info(BreakInfo::pickaxe(0.8, ToolTier::WOOD, 4.0));
577 self::register(
"red_sandstone_wall", fn(BID $id) =>
new Wall($id,
"Red Sandstone Wall", $sandstoneWallBreakInfo));
578 self::register(
"sandstone_wall", fn(BID $id) =>
new Wall($id,
"Sandstone Wall", $sandstoneWallBreakInfo));
580 self::registerElements();
582 $chemistryTableBreakInfo =
new Info(BreakInfo::pickaxe(2.5, ToolTier::WOOD));
583 self::register(
"compound_creator", fn(BID $id) =>
new ChemistryTable($id,
"Compound Creator", $chemistryTableBreakInfo));
584 self::register(
"element_constructor", fn(BID $id) =>
new ChemistryTable($id,
"Element Constructor", $chemistryTableBreakInfo));
585 self::register(
"lab_table", fn(BID $id) =>
new ChemistryTable($id,
"Lab Table", $chemistryTableBreakInfo));
586 self::register(
"material_reducer", fn(BID $id) =>
new ChemistryTable($id,
"Material Reducer", $chemistryTableBreakInfo));
588 self::register(
"chemical_heat", fn(BID $id) =>
new ChemicalHeat($id,
"Heat Block", $chemistryTableBreakInfo));
590 self::registerMushroomBlocks();
592 self::register(
"coral", fn(BID $id) =>
new Coral(
595 new Info(BreakInfo::instant()),
597 self::register(
"coral_fan", fn(BID $id) =>
new FloorCoralFan(
600 new Info(BreakInfo::instant()),
602 self::register(
"wall_coral_fan", fn(BID $id) =>
new WallCoralFan(
605 new Info(BreakInfo::instant()),
608 self::register(
"mangrove_roots", fn(BID $id) =>
new MangroveRoots($id,
"Mangrove Roots",
new Info(BreakInfo::axe(0.7))));
609 self::register(
"muddy_mangrove_roots", fn(BID $id) =>
new SimplePillar($id,
"Muddy Mangrove Roots",
new Info(BreakInfo::shovel(0.7), [Tags::MUD])));
610 self::register(
"froglight", fn(BID $id) =>
new Froglight($id,
"Froglight",
new Info(
new BreakInfo(0.3))));
611 self::register(
"sculk", fn(BID $id) =>
new Sculk($id,
"Sculk",
new Info(
new BreakInfo(0.2, ToolType::HOE))));
612 self::register(
"reinforced_deepslate", fn(BID $id) =>
new class($id,
"Reinforced Deepslate",
new Info(
new BreakInfo(55.0, ToolType::NONE, 0, 6000.0))) extends Opaque{
613 public function getDropsForCompatibleTool(Item $item) : array{
617 self::register(
"cactus_flower", fn(BID $id) =>
new CactusFlower($id,
"Cactus Flower",
new Info(BreakInfo::instant())));
619 self::registerBlocksR13();
620 self::registerBlocksR14();
621 self::registerBlocksR16();
622 self::registerBlocksR17();
623 self::registerBlocksR18();
624 self::registerMudBlocks();
625 self::registerResinBlocks();
626 self::registerTuffBlocks();
628 self::registerCraftingTables();
629 self::registerChorusBlocks();
630 self::registerOres();
631 self::registerWoodenBlocks();
632 self::registerCauldronBlocks();