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