From aa8e6116447f70925c6cc242f3438548bb0ebb9a Mon Sep 17 00:00:00 2001 From: Tnze Date: Wed, 9 Mar 2022 16:12:47 +0800 Subject: [PATCH] support block state & nbt improvement --- examples/genmaps/genmaps.go | 2 +- level/block/acacia_button.go | 11 - level/block/acacia_door.go | 13 - level/block/acacia_fence.go | 13 - level/block/acacia_fence_gate.go | 12 - level/block/acacia_leaves.go | 10 - level/block/acacia_log.go | 9 - level/block/acacia_planks.go | 8 - level/block/acacia_pressure_plate.go | 9 - level/block/acacia_sapling.go | 9 - level/block/acacia_sign.go | 10 - level/block/acacia_slab.go | 10 - level/block/acacia_stairs.go | 12 - level/block/acacia_trapdoor.go | 13 - level/block/acacia_wall_sign.go | 10 - level/block/acacia_wood.go | 9 - level/block/activator_rail.go | 11 - level/block/air.go | 8 - level/block/allium.go | 8 - level/block/amethyst_block.go | 8 - level/block/amethyst_cluster.go | 10 - level/block/ancient_debris.go | 8 - level/block/andesite.go | 8 - level/block/andesite_slab.go | 10 - level/block/andesite_stairs.go | 12 - level/block/andesite_wall.go | 14 - level/block/anvil.go | 9 - level/block/attached_melon_stem.go | 9 - level/block/attached_pumpkin_stem.go | 9 - level/block/azalea.go | 8 - level/block/azalea_leaves.go | 10 - level/block/azure_bluet.go | 8 - level/block/bamboo.go | 11 - level/block/bamboo_sapling.go | 8 - level/block/barrel.go | 10 - level/block/barrier.go | 8 - level/block/basalt.go | 9 - level/block/beacon.go | 8 - level/block/bedrock.go | 8 - level/block/bee_nest.go | 10 - level/block/beehive.go | 10 - level/block/beetroots.go | 9 - level/block/bell.go | 11 - level/block/big_dripleaf.go | 11 - level/block/big_dripleaf_stem.go | 10 - level/block/birch_button.go | 11 - level/block/birch_door.go | 13 - level/block/birch_fence.go | 13 - level/block/birch_fence_gate.go | 12 - level/block/birch_leaves.go | 10 - level/block/birch_log.go | 9 - level/block/birch_planks.go | 8 - level/block/birch_pressure_plate.go | 9 - level/block/birch_sapling.go | 9 - level/block/birch_sign.go | 10 - level/block/birch_slab.go | 10 - level/block/birch_stairs.go | 12 - level/block/birch_trapdoor.go | 13 - level/block/birch_wall_sign.go | 10 - level/block/birch_wood.go | 9 - level/block/black_banner.go | 9 - level/block/black_bed.go | 11 - level/block/black_candle.go | 11 - level/block/black_candle_cake.go | 9 - level/block/black_carpet.go | 8 - level/block/black_concrete.go | 8 - level/block/black_concrete_powder.go | 8 - level/block/black_glazed_terracotta.go | 9 - level/block/black_shulker_box.go | 9 - level/block/black_stained_glass.go | 8 - level/block/black_stained_glass_pane.go | 13 - level/block/black_terracotta.go | 8 - level/block/black_wall_banner.go | 9 - level/block/black_wool.go | 8 - level/block/blackstone.go | 8 - level/block/blackstone_slab.go | 10 - level/block/blackstone_stairs.go | 12 - level/block/blackstone_wall.go | 14 - level/block/blast_furnace.go | 10 - level/block/block.go | 62 +- level/block/block_states.nbt | Bin 0 -> 82577 bytes level/block/block_states_test.go | 40 - level/block/blocks.go | 6358 +++++++++++++++++ level/block/blue_banner.go | 9 - level/block/blue_bed.go | 11 - level/block/blue_candle.go | 11 - level/block/blue_candle_cake.go | 9 - level/block/blue_carpet.go | 8 - level/block/blue_concrete.go | 8 - level/block/blue_concrete_powder.go | 8 - level/block/blue_glazed_terracotta.go | 9 - level/block/blue_ice.go | 8 - level/block/blue_orchid.go | 8 - level/block/blue_shulker_box.go | 9 - level/block/blue_stained_glass.go | 8 - level/block/blue_stained_glass_pane.go | 13 - level/block/blue_terracotta.go | 8 - level/block/blue_wall_banner.go | 9 - level/block/blue_wool.go | 8 - level/block/bone_block.go | 9 - level/block/bookshelf.go | 8 - level/block/brain_coral.go | 9 - level/block/brain_coral_block.go | 8 - level/block/brain_coral_fan.go | 9 - level/block/brain_coral_wall_fan.go | 10 - level/block/brewing_stand.go | 11 - level/block/brick_slab.go | 10 - level/block/brick_stairs.go | 12 - level/block/brick_wall.go | 14 - level/block/bricks.go | 8 - level/block/brown_banner.go | 9 - level/block/brown_bed.go | 11 - level/block/brown_candle.go | 11 - level/block/brown_candle_cake.go | 9 - level/block/brown_carpet.go | 8 - level/block/brown_concrete.go | 8 - level/block/brown_concrete_powder.go | 8 - level/block/brown_glazed_terracotta.go | 9 - level/block/brown_mushroom.go | 8 - level/block/brown_mushroom_block.go | 14 - level/block/brown_shulker_box.go | 9 - level/block/brown_stained_glass.go | 8 - level/block/brown_stained_glass_pane.go | 13 - level/block/brown_terracotta.go | 8 - level/block/brown_wall_banner.go | 9 - level/block/brown_wool.go | 8 - level/block/bubble_column.go | 9 - level/block/bubble_coral.go | 9 - level/block/bubble_coral_block.go | 8 - level/block/bubble_coral_fan.go | 9 - level/block/bubble_coral_wall_fan.go | 10 - level/block/budding_amethyst.go | 8 - level/block/cactus.go | 9 - level/block/cake.go | 9 - level/block/calcite.go | 8 - level/block/campfire.go | 12 - level/block/candle.go | 11 - level/block/candle_cake.go | 9 - level/block/carrots.go | 9 - level/block/cartography_table.go | 8 - level/block/carved_pumpkin.go | 9 - level/block/cauldron.go | 8 - level/block/cave_air.go | 8 - level/block/cave_vines.go | 10 - level/block/cave_vines_plant.go | 9 - level/block/chain.go | 10 - level/block/chain_command_block.go | 10 - level/block/chest.go | 11 - level/block/chipped_anvil.go | 9 - level/block/chiseled_deepslate.go | 8 - level/block/chiseled_nether_bricks.go | 8 - level/block/chiseled_polished_blackstone.go | 8 - level/block/chiseled_quartz_block.go | 8 - level/block/chiseled_red_sandstone.go | 8 - level/block/chiseled_sandstone.go | 8 - level/block/chiseled_stone_bricks.go | 8 - level/block/chorus_flower.go | 9 - level/block/chorus_plant.go | 14 - level/block/clay.go | 8 - level/block/coal_block.go | 8 - level/block/coal_ore.go | 8 - level/block/coarse_dirt.go | 8 - level/block/cobbled_deepslate.go | 8 - level/block/cobbled_deepslate_slab.go | 10 - level/block/cobbled_deepslate_stairs.go | 12 - level/block/cobbled_deepslate_wall.go | 14 - level/block/cobblestone.go | 8 - level/block/cobblestone_slab.go | 10 - level/block/cobblestone_stairs.go | 12 - level/block/cobblestone_wall.go | 14 - level/block/cobweb.go | 8 - level/block/cocoa.go | 10 - level/block/command_block.go | 10 - level/block/comparator.go | 11 - level/block/composter.go | 9 - level/block/conduit.go | 9 - level/block/copper_block.go | 8 - level/block/copper_ore.go | 8 - level/block/cornflower.go | 8 - level/block/cracked_deepslate_bricks.go | 8 - level/block/cracked_deepslate_tiles.go | 8 - level/block/cracked_nether_bricks.go | 8 - .../cracked_polished_blackstone_bricks.go | 8 - level/block/cracked_stone_bricks.go | 8 - level/block/crafting_table.go | 8 - level/block/creeper_head.go | 9 - level/block/creeper_wall_head.go | 9 - level/block/crimson_button.go | 11 - level/block/crimson_door.go | 13 - level/block/crimson_fence.go | 13 - level/block/crimson_fence_gate.go | 12 - level/block/crimson_fungus.go | 8 - level/block/crimson_hyphae.go | 9 - level/block/crimson_nylium.go | 8 - level/block/crimson_planks.go | 8 - level/block/crimson_pressure_plate.go | 9 - level/block/crimson_roots.go | 8 - level/block/crimson_sign.go | 10 - level/block/crimson_slab.go | 10 - level/block/crimson_stairs.go | 12 - level/block/crimson_stem.go | 9 - level/block/crimson_trapdoor.go | 13 - level/block/crimson_wall_sign.go | 10 - level/block/crying_obsidian.go | 8 - level/block/cut_copper.go | 8 - level/block/cut_copper_slab.go | 10 - level/block/cut_copper_stairs.go | 12 - level/block/cut_red_sandstone.go | 8 - level/block/cut_red_sandstone_slab.go | 10 - level/block/cut_sandstone.go | 8 - level/block/cut_sandstone_slab.go | 10 - level/block/cyan_banner.go | 9 - level/block/cyan_bed.go | 11 - level/block/cyan_candle.go | 11 - level/block/cyan_candle_cake.go | 9 - level/block/cyan_carpet.go | 8 - level/block/cyan_concrete.go | 8 - level/block/cyan_concrete_powder.go | 8 - level/block/cyan_glazed_terracotta.go | 9 - level/block/cyan_shulker_box.go | 9 - level/block/cyan_stained_glass.go | 8 - level/block/cyan_stained_glass_pane.go | 13 - level/block/cyan_terracotta.go | 8 - level/block/cyan_wall_banner.go | 9 - level/block/cyan_wool.go | 8 - level/block/damaged_anvil.go | 9 - level/block/dandelion.go | 8 - level/block/dark_oak_button.go | 11 - level/block/dark_oak_door.go | 13 - level/block/dark_oak_fence.go | 13 - level/block/dark_oak_fence_gate.go | 12 - level/block/dark_oak_leaves.go | 10 - level/block/dark_oak_log.go | 9 - level/block/dark_oak_planks.go | 8 - level/block/dark_oak_pressure_plate.go | 9 - level/block/dark_oak_sapling.go | 9 - level/block/dark_oak_sign.go | 10 - level/block/dark_oak_slab.go | 10 - level/block/dark_oak_stairs.go | 12 - level/block/dark_oak_trapdoor.go | 13 - level/block/dark_oak_wall_sign.go | 10 - level/block/dark_oak_wood.go | 9 - level/block/dark_prismarine.go | 8 - level/block/dark_prismarine_slab.go | 10 - level/block/dark_prismarine_stairs.go | 12 - level/block/daylight_detector.go | 10 - level/block/dead_brain_coral.go | 9 - level/block/dead_brain_coral_block.go | 8 - level/block/dead_brain_coral_fan.go | 9 - level/block/dead_brain_coral_wall_fan.go | 10 - level/block/dead_bubble_coral.go | 9 - level/block/dead_bubble_coral_block.go | 8 - level/block/dead_bubble_coral_fan.go | 9 - level/block/dead_bubble_coral_wall_fan.go | 10 - level/block/dead_bush.go | 8 - level/block/dead_fire_coral.go | 9 - level/block/dead_fire_coral_block.go | 8 - level/block/dead_fire_coral_fan.go | 9 - level/block/dead_fire_coral_wall_fan.go | 10 - level/block/dead_horn_coral.go | 9 - level/block/dead_horn_coral_block.go | 8 - level/block/dead_horn_coral_fan.go | 9 - level/block/dead_horn_coral_wall_fan.go | 10 - level/block/dead_tube_coral.go | 9 - level/block/dead_tube_coral_block.go | 8 - level/block/dead_tube_coral_fan.go | 9 - level/block/dead_tube_coral_wall_fan.go | 10 - level/block/deepslate.go | 9 - level/block/deepslate_brick_slab.go | 10 - level/block/deepslate_brick_stairs.go | 12 - level/block/deepslate_brick_wall.go | 14 - level/block/deepslate_bricks.go | 8 - level/block/deepslate_coal_ore.go | 8 - level/block/deepslate_copper_ore.go | 8 - level/block/deepslate_diamond_ore.go | 8 - level/block/deepslate_emerald_ore.go | 8 - level/block/deepslate_gold_ore.go | 8 - level/block/deepslate_iron_ore.go | 8 - level/block/deepslate_lapis_ore.go | 8 - level/block/deepslate_redstone_ore.go | 9 - level/block/deepslate_tile_slab.go | 10 - level/block/deepslate_tile_stairs.go | 12 - level/block/deepslate_tile_wall.go | 14 - level/block/deepslate_tiles.go | 8 - level/block/detector_rail.go | 11 - level/block/diamond_block.go | 8 - level/block/diamond_ore.go | 8 - level/block/diorite.go | 8 - level/block/diorite_slab.go | 10 - level/block/diorite_stairs.go | 12 - level/block/diorite_wall.go | 14 - level/block/dirt.go | 8 - level/block/dirt_path.go | 8 - level/block/dispenser.go | 10 - level/block/dragon_egg.go | 8 - level/block/dragon_head.go | 9 - level/block/dragon_wall_head.go | 9 - level/block/dried_kelp_block.go | 8 - level/block/dripstone_block.go | 8 - level/block/dropper.go | 10 - level/block/emerald_block.go | 8 - level/block/emerald_ore.go | 8 - level/block/enchanting_table.go | 8 - level/block/end_gateway.go | 8 - level/block/end_portal.go | 8 - level/block/end_portal_frame.go | 10 - level/block/end_rod.go | 9 - level/block/end_stone.go | 8 - level/block/end_stone_brick_slab.go | 10 - level/block/end_stone_brick_stairs.go | 12 - level/block/end_stone_brick_wall.go | 14 - level/block/end_stone_bricks.go | 8 - level/block/ender_chest.go | 10 - level/block/exposed_copper.go | 8 - level/block/exposed_cut_copper.go | 8 - level/block/exposed_cut_copper_slab.go | 10 - level/block/exposed_cut_copper_stairs.go | 12 - level/block/farmland.go | 9 - level/block/fern.go | 8 - level/block/fire.go | 14 - level/block/fire_coral.go | 9 - level/block/fire_coral_block.go | 8 - level/block/fire_coral_fan.go | 9 - level/block/fire_coral_wall_fan.go | 10 - level/block/fletching_table.go | 8 - level/block/flower_pot.go | 8 - level/block/flowering_azalea.go | 8 - level/block/flowering_azalea_leaves.go | 10 - level/block/frosted_ice.go | 9 - level/block/furnace.go | 10 - level/block/generator/blocks.go.tmpl | 12 + level/block/generator/main.go | 48 +- level/block/gilded_blackstone.go | 8 - level/block/glass.go | 8 - level/block/glass_pane.go | 13 - level/block/glow_lichen.go | 15 - level/block/glowstone.go | 8 - level/block/gold_block.go | 8 - level/block/gold_ore.go | 8 - level/block/granite.go | 8 - level/block/granite_slab.go | 10 - level/block/granite_stairs.go | 12 - level/block/granite_wall.go | 14 - level/block/grass.go | 8 - level/block/grass_block.go | 9 - level/block/gravel.go | 8 - level/block/gray_banner.go | 9 - level/block/gray_bed.go | 11 - level/block/gray_candle.go | 11 - level/block/gray_candle_cake.go | 9 - level/block/gray_carpet.go | 8 - level/block/gray_concrete.go | 8 - level/block/gray_concrete_powder.go | 8 - level/block/gray_glazed_terracotta.go | 9 - level/block/gray_shulker_box.go | 9 - level/block/gray_stained_glass.go | 8 - level/block/gray_stained_glass_pane.go | 13 - level/block/gray_terracotta.go | 8 - level/block/gray_wall_banner.go | 9 - level/block/gray_wool.go | 8 - level/block/green_banner.go | 9 - level/block/green_bed.go | 11 - level/block/green_candle.go | 11 - level/block/green_candle_cake.go | 9 - level/block/green_carpet.go | 8 - level/block/green_concrete.go | 8 - level/block/green_concrete_powder.go | 8 - level/block/green_glazed_terracotta.go | 9 - level/block/green_shulker_box.go | 9 - level/block/green_stained_glass.go | 8 - level/block/green_stained_glass_pane.go | 13 - level/block/green_terracotta.go | 8 - level/block/green_wall_banner.go | 9 - level/block/green_wool.go | 8 - level/block/grindstone.go | 10 - level/block/hanging_roots.go | 9 - level/block/hay_block.go | 9 - level/block/heavy_weighted_pressure_plate.go | 9 - level/block/honey_block.go | 8 - level/block/honeycomb_block.go | 8 - level/block/hopper.go | 10 - level/block/horn_coral.go | 9 - level/block/horn_coral_block.go | 8 - level/block/horn_coral_fan.go | 9 - level/block/horn_coral_wall_fan.go | 10 - level/block/ice.go | 8 - level/block/infested_chiseled_stone_bricks.go | 8 - level/block/infested_cobblestone.go | 8 - level/block/infested_cracked_stone_bricks.go | 8 - level/block/infested_deepslate.go | 9 - level/block/infested_mossy_stone_bricks.go | 8 - level/block/infested_stone.go | 8 - level/block/infested_stone_bricks.go | 8 - level/block/iron_bars.go | 13 - level/block/iron_block.go | 8 - level/block/iron_door.go | 13 - level/block/iron_ore.go | 8 - level/block/iron_trapdoor.go | 13 - level/block/jack_o_lantern.go | 9 - level/block/jigsaw.go | 9 - level/block/jukebox.go | 9 - level/block/jungle_button.go | 11 - level/block/jungle_door.go | 13 - level/block/jungle_fence.go | 13 - level/block/jungle_fence_gate.go | 12 - level/block/jungle_leaves.go | 10 - level/block/jungle_log.go | 9 - level/block/jungle_planks.go | 8 - level/block/jungle_pressure_plate.go | 9 - level/block/jungle_sapling.go | 9 - level/block/jungle_sign.go | 10 - level/block/jungle_slab.go | 10 - level/block/jungle_stairs.go | 12 - level/block/jungle_trapdoor.go | 13 - level/block/jungle_wall_sign.go | 10 - level/block/jungle_wood.go | 9 - level/block/kelp.go | 9 - level/block/kelp_plant.go | 8 - level/block/ladder.go | 10 - level/block/lantern.go | 10 - level/block/lapis_block.go | 8 - level/block/lapis_ore.go | 8 - level/block/large_amethyst_bud.go | 10 - level/block/large_fern.go | 9 - level/block/lava.go | 9 - level/block/lava_cauldron.go | 8 - level/block/lectern.go | 11 - level/block/lever.go | 11 - level/block/light.go | 10 - level/block/light_blue_banner.go | 9 - level/block/light_blue_bed.go | 11 - level/block/light_blue_candle.go | 11 - level/block/light_blue_candle_cake.go | 9 - level/block/light_blue_carpet.go | 8 - level/block/light_blue_concrete.go | 8 - level/block/light_blue_concrete_powder.go | 8 - level/block/light_blue_glazed_terracotta.go | 9 - level/block/light_blue_shulker_box.go | 9 - level/block/light_blue_stained_glass.go | 8 - level/block/light_blue_stained_glass_pane.go | 13 - level/block/light_blue_terracotta.go | 8 - level/block/light_blue_wall_banner.go | 9 - level/block/light_blue_wool.go | 8 - level/block/light_gray_banner.go | 9 - level/block/light_gray_bed.go | 11 - level/block/light_gray_candle.go | 11 - level/block/light_gray_candle_cake.go | 9 - level/block/light_gray_carpet.go | 8 - level/block/light_gray_concrete.go | 8 - level/block/light_gray_concrete_powder.go | 8 - level/block/light_gray_glazed_terracotta.go | 9 - level/block/light_gray_shulker_box.go | 9 - level/block/light_gray_stained_glass.go | 8 - level/block/light_gray_stained_glass_pane.go | 13 - level/block/light_gray_terracotta.go | 8 - level/block/light_gray_wall_banner.go | 9 - level/block/light_gray_wool.go | 8 - level/block/light_weighted_pressure_plate.go | 9 - level/block/lightning_rod.go | 11 - level/block/lilac.go | 9 - level/block/lily_of_the_valley.go | 8 - level/block/lily_pad.go | 8 - level/block/lime_banner.go | 9 - level/block/lime_bed.go | 11 - level/block/lime_candle.go | 11 - level/block/lime_candle_cake.go | 9 - level/block/lime_carpet.go | 8 - level/block/lime_concrete.go | 8 - level/block/lime_concrete_powder.go | 8 - level/block/lime_glazed_terracotta.go | 9 - level/block/lime_shulker_box.go | 9 - level/block/lime_stained_glass.go | 8 - level/block/lime_stained_glass_pane.go | 13 - level/block/lime_terracotta.go | 8 - level/block/lime_wall_banner.go | 9 - level/block/lime_wool.go | 8 - level/block/lodestone.go | 8 - level/block/loom.go | 9 - level/block/magenta_banner.go | 9 - level/block/magenta_bed.go | 11 - level/block/magenta_candle.go | 11 - level/block/magenta_candle_cake.go | 9 - level/block/magenta_carpet.go | 8 - level/block/magenta_concrete.go | 8 - level/block/magenta_concrete_powder.go | 8 - level/block/magenta_glazed_terracotta.go | 9 - level/block/magenta_shulker_box.go | 9 - level/block/magenta_stained_glass.go | 8 - level/block/magenta_stained_glass_pane.go | 13 - level/block/magenta_terracotta.go | 8 - level/block/magenta_wall_banner.go | 9 - level/block/magenta_wool.go | 8 - level/block/magma_block.go | 8 - level/block/medium_amethyst_bud.go | 10 - level/block/melon.go | 8 - level/block/melon_stem.go | 9 - level/block/moss_block.go | 8 - level/block/moss_carpet.go | 8 - level/block/mossy_cobblestone.go | 8 - level/block/mossy_cobblestone_slab.go | 10 - level/block/mossy_cobblestone_stairs.go | 12 - level/block/mossy_cobblestone_wall.go | 14 - level/block/mossy_stone_brick_slab.go | 10 - level/block/mossy_stone_brick_stairs.go | 12 - level/block/mossy_stone_brick_wall.go | 14 - level/block/mossy_stone_bricks.go | 8 - level/block/moving_piston.go | 10 - level/block/mushroom_stem.go | 14 - level/block/mycelium.go | 9 - level/block/nether_brick_fence.go | 13 - level/block/nether_brick_slab.go | 10 - level/block/nether_brick_stairs.go | 12 - level/block/nether_brick_wall.go | 14 - level/block/nether_bricks.go | 8 - level/block/nether_gold_ore.go | 8 - level/block/nether_portal.go | 9 - level/block/nether_quartz_ore.go | 8 - level/block/nether_sprouts.go | 8 - level/block/nether_wart.go | 9 - level/block/nether_wart_block.go | 8 - level/block/netherite_block.go | 8 - level/block/netherrack.go | 8 - level/block/note_block.go | 11 - level/block/oak_button.go | 11 - level/block/oak_door.go | 13 - level/block/oak_fence.go | 13 - level/block/oak_fence_gate.go | 12 - level/block/oak_leaves.go | 10 - level/block/oak_log.go | 9 - level/block/oak_planks.go | 8 - level/block/oak_pressure_plate.go | 9 - level/block/oak_sapling.go | 9 - level/block/oak_sign.go | 10 - level/block/oak_slab.go | 10 - level/block/oak_stairs.go | 12 - level/block/oak_trapdoor.go | 13 - level/block/oak_wall_sign.go | 10 - level/block/oak_wood.go | 9 - level/block/observer.go | 10 - level/block/obsidian.go | 8 - level/block/orange_banner.go | 9 - level/block/orange_bed.go | 11 - level/block/orange_candle.go | 11 - level/block/orange_candle_cake.go | 9 - level/block/orange_carpet.go | 8 - level/block/orange_concrete.go | 8 - level/block/orange_concrete_powder.go | 8 - level/block/orange_glazed_terracotta.go | 9 - level/block/orange_shulker_box.go | 9 - level/block/orange_stained_glass.go | 8 - level/block/orange_stained_glass_pane.go | 13 - level/block/orange_terracotta.go | 8 - level/block/orange_tulip.go | 8 - level/block/orange_wall_banner.go | 9 - level/block/orange_wool.go | 8 - level/block/oxeye_daisy.go | 8 - level/block/oxidized_copper.go | 8 - level/block/oxidized_cut_copper.go | 8 - level/block/oxidized_cut_copper_slab.go | 10 - level/block/oxidized_cut_copper_stairs.go | 12 - level/block/packed_ice.go | 8 - level/block/peony.go | 9 - level/block/petrified_oak_slab.go | 10 - level/block/pink_banner.go | 9 - level/block/pink_bed.go | 11 - level/block/pink_candle.go | 11 - level/block/pink_candle_cake.go | 9 - level/block/pink_carpet.go | 8 - level/block/pink_concrete.go | 8 - level/block/pink_concrete_powder.go | 8 - level/block/pink_glazed_terracotta.go | 9 - level/block/pink_shulker_box.go | 9 - level/block/pink_stained_glass.go | 8 - level/block/pink_stained_glass_pane.go | 13 - level/block/pink_terracotta.go | 8 - level/block/pink_tulip.go | 8 - level/block/pink_wall_banner.go | 9 - level/block/pink_wool.go | 8 - level/block/piston.go | 10 - level/block/piston_head.go | 11 - level/block/player_head.go | 9 - level/block/player_wall_head.go | 9 - level/block/podzol.go | 9 - level/block/pointed_dripstone.go | 11 - level/block/polished_andesite.go | 8 - level/block/polished_andesite_slab.go | 10 - level/block/polished_andesite_stairs.go | 12 - level/block/polished_basalt.go | 9 - level/block/polished_blackstone.go | 8 - level/block/polished_blackstone_brick_slab.go | 10 - .../block/polished_blackstone_brick_stairs.go | 12 - level/block/polished_blackstone_brick_wall.go | 14 - level/block/polished_blackstone_bricks.go | 8 - level/block/polished_blackstone_button.go | 11 - .../polished_blackstone_pressure_plate.go | 9 - level/block/polished_blackstone_slab.go | 10 - level/block/polished_blackstone_stairs.go | 12 - level/block/polished_blackstone_wall.go | 14 - level/block/polished_deepslate.go | 8 - level/block/polished_deepslate_slab.go | 10 - level/block/polished_deepslate_stairs.go | 12 - level/block/polished_deepslate_wall.go | 14 - level/block/polished_diorite.go | 8 - level/block/polished_diorite_slab.go | 10 - level/block/polished_diorite_stairs.go | 12 - level/block/polished_granite.go | 8 - level/block/polished_granite_slab.go | 10 - level/block/polished_granite_stairs.go | 12 - level/block/poppy.go | 8 - level/block/potatoes.go | 9 - level/block/potted_acacia_sapling.go | 8 - level/block/potted_allium.go | 8 - level/block/potted_azalea_bush.go | 8 - level/block/potted_azure_bluet.go | 8 - level/block/potted_bamboo.go | 8 - level/block/potted_birch_sapling.go | 8 - level/block/potted_blue_orchid.go | 8 - level/block/potted_brown_mushroom.go | 8 - level/block/potted_cactus.go | 8 - level/block/potted_cornflower.go | 8 - level/block/potted_crimson_fungus.go | 8 - level/block/potted_crimson_roots.go | 8 - level/block/potted_dandelion.go | 8 - level/block/potted_dark_oak_sapling.go | 8 - level/block/potted_dead_bush.go | 8 - level/block/potted_fern.go | 8 - level/block/potted_flowering_azalea_bush.go | 8 - level/block/potted_jungle_sapling.go | 8 - level/block/potted_lily_of_the_valley.go | 8 - level/block/potted_oak_sapling.go | 8 - level/block/potted_orange_tulip.go | 8 - level/block/potted_oxeye_daisy.go | 8 - level/block/potted_pink_tulip.go | 8 - level/block/potted_poppy.go | 8 - level/block/potted_red_mushroom.go | 8 - level/block/potted_red_tulip.go | 8 - level/block/potted_spruce_sapling.go | 8 - level/block/potted_warped_fungus.go | 8 - level/block/potted_warped_roots.go | 8 - level/block/potted_white_tulip.go | 8 - level/block/potted_wither_rose.go | 8 - level/block/powder_snow.go | 8 - level/block/powder_snow_cauldron.go | 9 - level/block/powered_rail.go | 11 - level/block/prismarine.go | 8 - level/block/prismarine_brick_slab.go | 10 - level/block/prismarine_brick_stairs.go | 12 - level/block/prismarine_bricks.go | 8 - level/block/prismarine_slab.go | 10 - level/block/prismarine_stairs.go | 12 - level/block/prismarine_wall.go | 14 - level/block/properties.go | 38 + level/block/pumpkin.go | 8 - level/block/pumpkin_stem.go | 9 - level/block/purple_banner.go | 9 - level/block/purple_bed.go | 11 - level/block/purple_candle.go | 11 - level/block/purple_candle_cake.go | 9 - level/block/purple_carpet.go | 8 - level/block/purple_concrete.go | 8 - level/block/purple_concrete_powder.go | 8 - level/block/purple_glazed_terracotta.go | 9 - level/block/purple_shulker_box.go | 9 - level/block/purple_stained_glass.go | 8 - level/block/purple_stained_glass_pane.go | 13 - level/block/purple_terracotta.go | 8 - level/block/purple_wall_banner.go | 9 - level/block/purple_wool.go | 8 - level/block/purpur_block.go | 8 - level/block/purpur_pillar.go | 9 - level/block/purpur_slab.go | 10 - level/block/purpur_stairs.go | 12 - level/block/quartz_block.go | 8 - level/block/quartz_bricks.go | 8 - level/block/quartz_pillar.go | 9 - level/block/quartz_slab.go | 10 - level/block/quartz_stairs.go | 12 - level/block/rail.go | 10 - level/block/raw_copper_block.go | 8 - level/block/raw_gold_block.go | 8 - level/block/raw_iron_block.go | 8 - level/block/red_banner.go | 9 - level/block/red_bed.go | 11 - level/block/red_candle.go | 11 - level/block/red_candle_cake.go | 9 - level/block/red_carpet.go | 8 - level/block/red_concrete.go | 8 - level/block/red_concrete_powder.go | 8 - level/block/red_glazed_terracotta.go | 9 - level/block/red_mushroom.go | 8 - level/block/red_mushroom_block.go | 14 - level/block/red_nether_brick_slab.go | 10 - level/block/red_nether_brick_stairs.go | 12 - level/block/red_nether_brick_wall.go | 14 - level/block/red_nether_bricks.go | 8 - level/block/red_sand.go | 8 - level/block/red_sandstone.go | 8 - level/block/red_sandstone_slab.go | 10 - level/block/red_sandstone_stairs.go | 12 - level/block/red_sandstone_wall.go | 14 - level/block/red_shulker_box.go | 9 - level/block/red_stained_glass.go | 8 - level/block/red_stained_glass_pane.go | 13 - level/block/red_terracotta.go | 8 - level/block/red_tulip.go | 8 - level/block/red_wall_banner.go | 9 - level/block/red_wool.go | 8 - level/block/redstone_block.go | 8 - level/block/redstone_lamp.go | 9 - level/block/redstone_ore.go | 9 - level/block/redstone_torch.go | 9 - level/block/redstone_wall_torch.go | 10 - level/block/redstone_wire.go | 13 - level/block/repeater.go | 12 - level/block/repeating_command_block.go | 10 - level/block/respawn_anchor.go | 9 - level/block/rooted_dirt.go | 8 - level/block/rose_bush.go | 9 - level/block/sand.go | 8 - level/block/sandstone.go | 8 - level/block/sandstone_slab.go | 10 - level/block/sandstone_stairs.go | 12 - level/block/sandstone_wall.go | 14 - level/block/scaffolding.go | 11 - level/block/sculk_sensor.go | 11 - level/block/sea_lantern.go | 8 - level/block/sea_pickle.go | 10 - level/block/seagrass.go | 8 - level/block/shroomlight.go | 8 - level/block/shulker_box.go | 9 - level/block/skeleton_skull.go | 9 - level/block/skeleton_wall_skull.go | 9 - level/block/slime_block.go | 8 - level/block/small_amethyst_bud.go | 10 - level/block/small_dripleaf.go | 11 - level/block/smithing_table.go | 8 - level/block/smoker.go | 10 - level/block/smooth_basalt.go | 8 - level/block/smooth_quartz.go | 8 - level/block/smooth_quartz_slab.go | 10 - level/block/smooth_quartz_stairs.go | 12 - level/block/smooth_red_sandstone.go | 8 - level/block/smooth_red_sandstone_slab.go | 10 - level/block/smooth_red_sandstone_stairs.go | 12 - level/block/smooth_sandstone.go | 8 - level/block/smooth_sandstone_slab.go | 10 - level/block/smooth_sandstone_stairs.go | 12 - level/block/smooth_stone.go | 8 - level/block/smooth_stone_slab.go | 10 - level/block/snow.go | 9 - level/block/snow_block.go | 8 - level/block/soul_campfire.go | 12 - level/block/soul_fire.go | 8 - level/block/soul_lantern.go | 10 - level/block/soul_sand.go | 8 - level/block/soul_soil.go | 8 - level/block/soul_torch.go | 8 - level/block/soul_wall_torch.go | 9 - level/block/spawner.go | 8 - level/block/sponge.go | 8 - level/block/spore_blossom.go | 8 - level/block/spruce_button.go | 11 - level/block/spruce_door.go | 13 - level/block/spruce_fence.go | 13 - level/block/spruce_fence_gate.go | 12 - level/block/spruce_leaves.go | 10 - level/block/spruce_log.go | 9 - level/block/spruce_planks.go | 8 - level/block/spruce_pressure_plate.go | 9 - level/block/spruce_sapling.go | 9 - level/block/spruce_sign.go | 10 - level/block/spruce_slab.go | 10 - level/block/spruce_stairs.go | 12 - level/block/spruce_trapdoor.go | 13 - level/block/spruce_wall_sign.go | 10 - level/block/spruce_wood.go | 9 - level/block/sticky_piston.go | 10 - level/block/stone.go | 8 - level/block/stone_brick_slab.go | 10 - level/block/stone_brick_stairs.go | 12 - level/block/stone_brick_wall.go | 14 - level/block/stone_bricks.go | 8 - level/block/stone_button.go | 11 - level/block/stone_pressure_plate.go | 9 - level/block/stone_slab.go | 10 - level/block/stone_stairs.go | 12 - level/block/stonecutter.go | 9 - level/block/stripped_acacia_log.go | 9 - level/block/stripped_acacia_wood.go | 9 - level/block/stripped_birch_log.go | 9 - level/block/stripped_birch_wood.go | 9 - level/block/stripped_crimson_hyphae.go | 9 - level/block/stripped_crimson_stem.go | 9 - level/block/stripped_dark_oak_log.go | 9 - level/block/stripped_dark_oak_wood.go | 9 - level/block/stripped_jungle_log.go | 9 - level/block/stripped_jungle_wood.go | 9 - level/block/stripped_oak_log.go | 9 - level/block/stripped_oak_wood.go | 9 - level/block/stripped_spruce_log.go | 9 - level/block/stripped_spruce_wood.go | 9 - level/block/stripped_warped_hyphae.go | 9 - level/block/stripped_warped_stem.go | 9 - level/block/structure_block.go | 9 - level/block/structure_void.go | 8 - level/block/sugar_cane.go | 9 - level/block/sunflower.go | 9 - level/block/sweet_berry_bush.go | 9 - level/block/tall_grass.go | 9 - level/block/tall_seagrass.go | 9 - level/block/target.go | 9 - level/block/terracotta.go | 8 - level/block/testdata/block_states.nbt | Bin 2365168 -> 0 bytes level/block/testdata/blocks.nbt | Bin 0 -> 69619 bytes level/block/tinted_glass.go | 8 - level/block/tnt.go | 9 - level/block/torch.go | 8 - level/block/trapped_chest.go | 11 - level/block/tripwire.go | 15 - level/block/tripwire_hook.go | 11 - level/block/tube_coral.go | 9 - level/block/tube_coral_block.go | 8 - level/block/tube_coral_fan.go | 9 - level/block/tube_coral_wall_fan.go | 10 - level/block/tuff.go | 8 - level/block/turtle_egg.go | 10 - level/block/twisting_vines.go | 9 - level/block/twisting_vines_plant.go | 8 - level/block/vine.go | 13 - level/block/void_air.go | 8 - level/block/wall_torch.go | 9 - level/block/warped_button.go | 11 - level/block/warped_door.go | 13 - level/block/warped_fence.go | 13 - level/block/warped_fence_gate.go | 12 - level/block/warped_fungus.go | 8 - level/block/warped_hyphae.go | 9 - level/block/warped_nylium.go | 8 - level/block/warped_planks.go | 8 - level/block/warped_pressure_plate.go | 9 - level/block/warped_roots.go | 8 - level/block/warped_sign.go | 10 - level/block/warped_slab.go | 10 - level/block/warped_stairs.go | 12 - level/block/warped_stem.go | 9 - level/block/warped_trapdoor.go | 13 - level/block/warped_wall_sign.go | 10 - level/block/warped_wart_block.go | 8 - level/block/water.go | 9 - level/block/water_cauldron.go | 9 - level/block/waxed_copper_block.go | 8 - level/block/waxed_cut_copper.go | 8 - level/block/waxed_cut_copper_slab.go | 10 - level/block/waxed_cut_copper_stairs.go | 12 - level/block/waxed_exposed_copper.go | 8 - level/block/waxed_exposed_cut_copper.go | 8 - level/block/waxed_exposed_cut_copper_slab.go | 10 - .../block/waxed_exposed_cut_copper_stairs.go | 12 - level/block/waxed_oxidized_copper.go | 8 - level/block/waxed_oxidized_cut_copper.go | 8 - level/block/waxed_oxidized_cut_copper_slab.go | 10 - .../block/waxed_oxidized_cut_copper_stairs.go | 12 - level/block/waxed_weathered_copper.go | 8 - level/block/waxed_weathered_cut_copper.go | 8 - .../block/waxed_weathered_cut_copper_slab.go | 10 - .../waxed_weathered_cut_copper_stairs.go | 12 - level/block/weathered_copper.go | 8 - level/block/weathered_cut_copper.go | 8 - level/block/weathered_cut_copper_slab.go | 10 - level/block/weathered_cut_copper_stairs.go | 12 - level/block/weeping_vines.go | 9 - level/block/weeping_vines_plant.go | 8 - level/block/wet_sponge.go | 8 - level/block/wheat.go | 9 - level/block/white_banner.go | 9 - level/block/white_bed.go | 11 - level/block/white_candle.go | 11 - level/block/white_candle_cake.go | 9 - level/block/white_carpet.go | 8 - level/block/white_concrete.go | 8 - level/block/white_concrete_powder.go | 8 - level/block/white_glazed_terracotta.go | 9 - level/block/white_shulker_box.go | 9 - level/block/white_stained_glass.go | 8 - level/block/white_stained_glass_pane.go | 13 - level/block/white_terracotta.go | 8 - level/block/white_tulip.go | 8 - level/block/white_wall_banner.go | 9 - level/block/white_wool.go | 8 - level/block/wither_rose.go | 8 - level/block/wither_skeleton_skull.go | 9 - level/block/wither_skeleton_wall_skull.go | 9 - level/block/yellow_banner.go | 9 - level/block/yellow_bed.go | 11 - level/block/yellow_candle.go | 11 - level/block/yellow_candle_cake.go | 9 - level/block/yellow_carpet.go | 8 - level/block/yellow_concrete.go | 8 - level/block/yellow_concrete_powder.go | 8 - level/block/yellow_glazed_terracotta.go | 9 - level/block/yellow_shulker_box.go | 9 - level/block/yellow_stained_glass.go | 8 - level/block/yellow_stained_glass_pane.go | 13 - level/block/yellow_terracotta.go | 8 - level/block/yellow_wall_banner.go | 9 - level/block/yellow_wool.go | 8 - level/block/zombie_head.go | 9 - level/block/zombie_wall_head.go | 9 - nbt/decode.go | 59 +- nbt/decode_test.go | 34 +- nbt/encode.go | 8 +- nbt/interface.go | 8 +- nbt/rawmsg.go | 6 +- nbt/snbt.go | 4 +- nbt/snbt_decode_test.go | 2 +- 915 files changed, 6566 insertions(+), 8605 deletions(-) delete mode 100644 level/block/acacia_button.go delete mode 100644 level/block/acacia_door.go delete mode 100644 level/block/acacia_fence.go delete mode 100644 level/block/acacia_fence_gate.go delete mode 100644 level/block/acacia_leaves.go delete mode 100644 level/block/acacia_log.go delete mode 100644 level/block/acacia_planks.go delete mode 100644 level/block/acacia_pressure_plate.go delete mode 100644 level/block/acacia_sapling.go delete mode 100644 level/block/acacia_sign.go delete mode 100644 level/block/acacia_slab.go delete mode 100644 level/block/acacia_stairs.go delete mode 100644 level/block/acacia_trapdoor.go delete mode 100644 level/block/acacia_wall_sign.go delete mode 100644 level/block/acacia_wood.go delete mode 100644 level/block/activator_rail.go delete mode 100644 level/block/air.go delete mode 100644 level/block/allium.go delete mode 100644 level/block/amethyst_block.go delete mode 100644 level/block/amethyst_cluster.go delete mode 100644 level/block/ancient_debris.go delete mode 100644 level/block/andesite.go delete mode 100644 level/block/andesite_slab.go delete mode 100644 level/block/andesite_stairs.go delete mode 100644 level/block/andesite_wall.go delete mode 100644 level/block/anvil.go delete mode 100644 level/block/attached_melon_stem.go delete mode 100644 level/block/attached_pumpkin_stem.go delete mode 100644 level/block/azalea.go delete mode 100644 level/block/azalea_leaves.go delete mode 100644 level/block/azure_bluet.go delete mode 100644 level/block/bamboo.go delete mode 100644 level/block/bamboo_sapling.go delete mode 100644 level/block/barrel.go delete mode 100644 level/block/barrier.go delete mode 100644 level/block/basalt.go delete mode 100644 level/block/beacon.go delete mode 100644 level/block/bedrock.go delete mode 100644 level/block/bee_nest.go delete mode 100644 level/block/beehive.go delete mode 100644 level/block/beetroots.go delete mode 100644 level/block/bell.go delete mode 100644 level/block/big_dripleaf.go delete mode 100644 level/block/big_dripleaf_stem.go delete mode 100644 level/block/birch_button.go delete mode 100644 level/block/birch_door.go delete mode 100644 level/block/birch_fence.go delete mode 100644 level/block/birch_fence_gate.go delete mode 100644 level/block/birch_leaves.go delete mode 100644 level/block/birch_log.go delete mode 100644 level/block/birch_planks.go delete mode 100644 level/block/birch_pressure_plate.go delete mode 100644 level/block/birch_sapling.go delete mode 100644 level/block/birch_sign.go delete mode 100644 level/block/birch_slab.go delete mode 100644 level/block/birch_stairs.go delete mode 100644 level/block/birch_trapdoor.go delete mode 100644 level/block/birch_wall_sign.go delete mode 100644 level/block/birch_wood.go delete mode 100644 level/block/black_banner.go delete mode 100644 level/block/black_bed.go delete mode 100644 level/block/black_candle.go delete mode 100644 level/block/black_candle_cake.go delete mode 100644 level/block/black_carpet.go delete mode 100644 level/block/black_concrete.go delete mode 100644 level/block/black_concrete_powder.go delete mode 100644 level/block/black_glazed_terracotta.go delete mode 100644 level/block/black_shulker_box.go delete mode 100644 level/block/black_stained_glass.go delete mode 100644 level/block/black_stained_glass_pane.go delete mode 100644 level/block/black_terracotta.go delete mode 100644 level/block/black_wall_banner.go delete mode 100644 level/block/black_wool.go delete mode 100644 level/block/blackstone.go delete mode 100644 level/block/blackstone_slab.go delete mode 100644 level/block/blackstone_stairs.go delete mode 100644 level/block/blackstone_wall.go delete mode 100644 level/block/blast_furnace.go create mode 100644 level/block/block_states.nbt delete mode 100644 level/block/block_states_test.go create mode 100644 level/block/blocks.go delete mode 100644 level/block/blue_banner.go delete mode 100644 level/block/blue_bed.go delete mode 100644 level/block/blue_candle.go delete mode 100644 level/block/blue_candle_cake.go delete mode 100644 level/block/blue_carpet.go delete mode 100644 level/block/blue_concrete.go delete mode 100644 level/block/blue_concrete_powder.go delete mode 100644 level/block/blue_glazed_terracotta.go delete mode 100644 level/block/blue_ice.go delete mode 100644 level/block/blue_orchid.go delete mode 100644 level/block/blue_shulker_box.go delete mode 100644 level/block/blue_stained_glass.go delete mode 100644 level/block/blue_stained_glass_pane.go delete mode 100644 level/block/blue_terracotta.go delete mode 100644 level/block/blue_wall_banner.go delete mode 100644 level/block/blue_wool.go delete mode 100644 level/block/bone_block.go delete mode 100644 level/block/bookshelf.go delete mode 100644 level/block/brain_coral.go delete mode 100644 level/block/brain_coral_block.go delete mode 100644 level/block/brain_coral_fan.go delete mode 100644 level/block/brain_coral_wall_fan.go delete mode 100644 level/block/brewing_stand.go delete mode 100644 level/block/brick_slab.go delete mode 100644 level/block/brick_stairs.go delete mode 100644 level/block/brick_wall.go delete mode 100644 level/block/bricks.go delete mode 100644 level/block/brown_banner.go delete mode 100644 level/block/brown_bed.go delete mode 100644 level/block/brown_candle.go delete mode 100644 level/block/brown_candle_cake.go delete mode 100644 level/block/brown_carpet.go delete mode 100644 level/block/brown_concrete.go delete mode 100644 level/block/brown_concrete_powder.go delete mode 100644 level/block/brown_glazed_terracotta.go delete mode 100644 level/block/brown_mushroom.go delete mode 100644 level/block/brown_mushroom_block.go delete mode 100644 level/block/brown_shulker_box.go delete mode 100644 level/block/brown_stained_glass.go delete mode 100644 level/block/brown_stained_glass_pane.go delete mode 100644 level/block/brown_terracotta.go delete mode 100644 level/block/brown_wall_banner.go delete mode 100644 level/block/brown_wool.go delete mode 100644 level/block/bubble_column.go delete mode 100644 level/block/bubble_coral.go delete mode 100644 level/block/bubble_coral_block.go delete mode 100644 level/block/bubble_coral_fan.go delete mode 100644 level/block/bubble_coral_wall_fan.go delete mode 100644 level/block/budding_amethyst.go delete mode 100644 level/block/cactus.go delete mode 100644 level/block/cake.go delete mode 100644 level/block/calcite.go delete mode 100644 level/block/campfire.go delete mode 100644 level/block/candle.go delete mode 100644 level/block/candle_cake.go delete mode 100644 level/block/carrots.go delete mode 100644 level/block/cartography_table.go delete mode 100644 level/block/carved_pumpkin.go delete mode 100644 level/block/cauldron.go delete mode 100644 level/block/cave_air.go delete mode 100644 level/block/cave_vines.go delete mode 100644 level/block/cave_vines_plant.go delete mode 100644 level/block/chain.go delete mode 100644 level/block/chain_command_block.go delete mode 100644 level/block/chest.go delete mode 100644 level/block/chipped_anvil.go delete mode 100644 level/block/chiseled_deepslate.go delete mode 100644 level/block/chiseled_nether_bricks.go delete mode 100644 level/block/chiseled_polished_blackstone.go delete mode 100644 level/block/chiseled_quartz_block.go delete mode 100644 level/block/chiseled_red_sandstone.go delete mode 100644 level/block/chiseled_sandstone.go delete mode 100644 level/block/chiseled_stone_bricks.go delete mode 100644 level/block/chorus_flower.go delete mode 100644 level/block/chorus_plant.go delete mode 100644 level/block/clay.go delete mode 100644 level/block/coal_block.go delete mode 100644 level/block/coal_ore.go delete mode 100644 level/block/coarse_dirt.go delete mode 100644 level/block/cobbled_deepslate.go delete mode 100644 level/block/cobbled_deepslate_slab.go delete mode 100644 level/block/cobbled_deepslate_stairs.go delete mode 100644 level/block/cobbled_deepslate_wall.go delete mode 100644 level/block/cobblestone.go delete mode 100644 level/block/cobblestone_slab.go delete mode 100644 level/block/cobblestone_stairs.go delete mode 100644 level/block/cobblestone_wall.go delete mode 100644 level/block/cobweb.go delete mode 100644 level/block/cocoa.go delete mode 100644 level/block/command_block.go delete mode 100644 level/block/comparator.go delete mode 100644 level/block/composter.go delete mode 100644 level/block/conduit.go delete mode 100644 level/block/copper_block.go delete mode 100644 level/block/copper_ore.go delete mode 100644 level/block/cornflower.go delete mode 100644 level/block/cracked_deepslate_bricks.go delete mode 100644 level/block/cracked_deepslate_tiles.go delete mode 100644 level/block/cracked_nether_bricks.go delete mode 100644 level/block/cracked_polished_blackstone_bricks.go delete mode 100644 level/block/cracked_stone_bricks.go delete mode 100644 level/block/crafting_table.go delete mode 100644 level/block/creeper_head.go delete mode 100644 level/block/creeper_wall_head.go delete mode 100644 level/block/crimson_button.go delete mode 100644 level/block/crimson_door.go delete mode 100644 level/block/crimson_fence.go delete mode 100644 level/block/crimson_fence_gate.go delete mode 100644 level/block/crimson_fungus.go delete mode 100644 level/block/crimson_hyphae.go delete mode 100644 level/block/crimson_nylium.go delete mode 100644 level/block/crimson_planks.go delete mode 100644 level/block/crimson_pressure_plate.go delete mode 100644 level/block/crimson_roots.go delete mode 100644 level/block/crimson_sign.go delete mode 100644 level/block/crimson_slab.go delete mode 100644 level/block/crimson_stairs.go delete mode 100644 level/block/crimson_stem.go delete mode 100644 level/block/crimson_trapdoor.go delete mode 100644 level/block/crimson_wall_sign.go delete mode 100644 level/block/crying_obsidian.go delete mode 100644 level/block/cut_copper.go delete mode 100644 level/block/cut_copper_slab.go delete mode 100644 level/block/cut_copper_stairs.go delete mode 100644 level/block/cut_red_sandstone.go delete mode 100644 level/block/cut_red_sandstone_slab.go delete mode 100644 level/block/cut_sandstone.go delete mode 100644 level/block/cut_sandstone_slab.go delete mode 100644 level/block/cyan_banner.go delete mode 100644 level/block/cyan_bed.go delete mode 100644 level/block/cyan_candle.go delete mode 100644 level/block/cyan_candle_cake.go delete mode 100644 level/block/cyan_carpet.go delete mode 100644 level/block/cyan_concrete.go delete mode 100644 level/block/cyan_concrete_powder.go delete mode 100644 level/block/cyan_glazed_terracotta.go delete mode 100644 level/block/cyan_shulker_box.go delete mode 100644 level/block/cyan_stained_glass.go delete mode 100644 level/block/cyan_stained_glass_pane.go delete mode 100644 level/block/cyan_terracotta.go delete mode 100644 level/block/cyan_wall_banner.go delete mode 100644 level/block/cyan_wool.go delete mode 100644 level/block/damaged_anvil.go delete mode 100644 level/block/dandelion.go delete mode 100644 level/block/dark_oak_button.go delete mode 100644 level/block/dark_oak_door.go delete mode 100644 level/block/dark_oak_fence.go delete mode 100644 level/block/dark_oak_fence_gate.go delete mode 100644 level/block/dark_oak_leaves.go delete mode 100644 level/block/dark_oak_log.go delete mode 100644 level/block/dark_oak_planks.go delete mode 100644 level/block/dark_oak_pressure_plate.go delete mode 100644 level/block/dark_oak_sapling.go delete mode 100644 level/block/dark_oak_sign.go delete mode 100644 level/block/dark_oak_slab.go delete mode 100644 level/block/dark_oak_stairs.go delete mode 100644 level/block/dark_oak_trapdoor.go delete mode 100644 level/block/dark_oak_wall_sign.go delete mode 100644 level/block/dark_oak_wood.go delete mode 100644 level/block/dark_prismarine.go delete mode 100644 level/block/dark_prismarine_slab.go delete mode 100644 level/block/dark_prismarine_stairs.go delete mode 100644 level/block/daylight_detector.go delete mode 100644 level/block/dead_brain_coral.go delete mode 100644 level/block/dead_brain_coral_block.go delete mode 100644 level/block/dead_brain_coral_fan.go delete mode 100644 level/block/dead_brain_coral_wall_fan.go delete mode 100644 level/block/dead_bubble_coral.go delete mode 100644 level/block/dead_bubble_coral_block.go delete mode 100644 level/block/dead_bubble_coral_fan.go delete mode 100644 level/block/dead_bubble_coral_wall_fan.go delete mode 100644 level/block/dead_bush.go delete mode 100644 level/block/dead_fire_coral.go delete mode 100644 level/block/dead_fire_coral_block.go delete mode 100644 level/block/dead_fire_coral_fan.go delete mode 100644 level/block/dead_fire_coral_wall_fan.go delete mode 100644 level/block/dead_horn_coral.go delete mode 100644 level/block/dead_horn_coral_block.go delete mode 100644 level/block/dead_horn_coral_fan.go delete mode 100644 level/block/dead_horn_coral_wall_fan.go delete mode 100644 level/block/dead_tube_coral.go delete mode 100644 level/block/dead_tube_coral_block.go delete mode 100644 level/block/dead_tube_coral_fan.go delete mode 100644 level/block/dead_tube_coral_wall_fan.go delete mode 100644 level/block/deepslate.go delete mode 100644 level/block/deepslate_brick_slab.go delete mode 100644 level/block/deepslate_brick_stairs.go delete mode 100644 level/block/deepslate_brick_wall.go delete mode 100644 level/block/deepslate_bricks.go delete mode 100644 level/block/deepslate_coal_ore.go delete mode 100644 level/block/deepslate_copper_ore.go delete mode 100644 level/block/deepslate_diamond_ore.go delete mode 100644 level/block/deepslate_emerald_ore.go delete mode 100644 level/block/deepslate_gold_ore.go delete mode 100644 level/block/deepslate_iron_ore.go delete mode 100644 level/block/deepslate_lapis_ore.go delete mode 100644 level/block/deepslate_redstone_ore.go delete mode 100644 level/block/deepslate_tile_slab.go delete mode 100644 level/block/deepslate_tile_stairs.go delete mode 100644 level/block/deepslate_tile_wall.go delete mode 100644 level/block/deepslate_tiles.go delete mode 100644 level/block/detector_rail.go delete mode 100644 level/block/diamond_block.go delete mode 100644 level/block/diamond_ore.go delete mode 100644 level/block/diorite.go delete mode 100644 level/block/diorite_slab.go delete mode 100644 level/block/diorite_stairs.go delete mode 100644 level/block/diorite_wall.go delete mode 100644 level/block/dirt.go delete mode 100644 level/block/dirt_path.go delete mode 100644 level/block/dispenser.go delete mode 100644 level/block/dragon_egg.go delete mode 100644 level/block/dragon_head.go delete mode 100644 level/block/dragon_wall_head.go delete mode 100644 level/block/dried_kelp_block.go delete mode 100644 level/block/dripstone_block.go delete mode 100644 level/block/dropper.go delete mode 100644 level/block/emerald_block.go delete mode 100644 level/block/emerald_ore.go delete mode 100644 level/block/enchanting_table.go delete mode 100644 level/block/end_gateway.go delete mode 100644 level/block/end_portal.go delete mode 100644 level/block/end_portal_frame.go delete mode 100644 level/block/end_rod.go delete mode 100644 level/block/end_stone.go delete mode 100644 level/block/end_stone_brick_slab.go delete mode 100644 level/block/end_stone_brick_stairs.go delete mode 100644 level/block/end_stone_brick_wall.go delete mode 100644 level/block/end_stone_bricks.go delete mode 100644 level/block/ender_chest.go delete mode 100644 level/block/exposed_copper.go delete mode 100644 level/block/exposed_cut_copper.go delete mode 100644 level/block/exposed_cut_copper_slab.go delete mode 100644 level/block/exposed_cut_copper_stairs.go delete mode 100644 level/block/farmland.go delete mode 100644 level/block/fern.go delete mode 100644 level/block/fire.go delete mode 100644 level/block/fire_coral.go delete mode 100644 level/block/fire_coral_block.go delete mode 100644 level/block/fire_coral_fan.go delete mode 100644 level/block/fire_coral_wall_fan.go delete mode 100644 level/block/fletching_table.go delete mode 100644 level/block/flower_pot.go delete mode 100644 level/block/flowering_azalea.go delete mode 100644 level/block/flowering_azalea_leaves.go delete mode 100644 level/block/frosted_ice.go delete mode 100644 level/block/furnace.go create mode 100644 level/block/generator/blocks.go.tmpl delete mode 100644 level/block/gilded_blackstone.go delete mode 100644 level/block/glass.go delete mode 100644 level/block/glass_pane.go delete mode 100644 level/block/glow_lichen.go delete mode 100644 level/block/glowstone.go delete mode 100644 level/block/gold_block.go delete mode 100644 level/block/gold_ore.go delete mode 100644 level/block/granite.go delete mode 100644 level/block/granite_slab.go delete mode 100644 level/block/granite_stairs.go delete mode 100644 level/block/granite_wall.go delete mode 100644 level/block/grass.go delete mode 100644 level/block/grass_block.go delete mode 100644 level/block/gravel.go delete mode 100644 level/block/gray_banner.go delete mode 100644 level/block/gray_bed.go delete mode 100644 level/block/gray_candle.go delete mode 100644 level/block/gray_candle_cake.go delete mode 100644 level/block/gray_carpet.go delete mode 100644 level/block/gray_concrete.go delete mode 100644 level/block/gray_concrete_powder.go delete mode 100644 level/block/gray_glazed_terracotta.go delete mode 100644 level/block/gray_shulker_box.go delete mode 100644 level/block/gray_stained_glass.go delete mode 100644 level/block/gray_stained_glass_pane.go delete mode 100644 level/block/gray_terracotta.go delete mode 100644 level/block/gray_wall_banner.go delete mode 100644 level/block/gray_wool.go delete mode 100644 level/block/green_banner.go delete mode 100644 level/block/green_bed.go delete mode 100644 level/block/green_candle.go delete mode 100644 level/block/green_candle_cake.go delete mode 100644 level/block/green_carpet.go delete mode 100644 level/block/green_concrete.go delete mode 100644 level/block/green_concrete_powder.go delete mode 100644 level/block/green_glazed_terracotta.go delete mode 100644 level/block/green_shulker_box.go delete mode 100644 level/block/green_stained_glass.go delete mode 100644 level/block/green_stained_glass_pane.go delete mode 100644 level/block/green_terracotta.go delete mode 100644 level/block/green_wall_banner.go delete mode 100644 level/block/green_wool.go delete mode 100644 level/block/grindstone.go delete mode 100644 level/block/hanging_roots.go delete mode 100644 level/block/hay_block.go delete mode 100644 level/block/heavy_weighted_pressure_plate.go delete mode 100644 level/block/honey_block.go delete mode 100644 level/block/honeycomb_block.go delete mode 100644 level/block/hopper.go delete mode 100644 level/block/horn_coral.go delete mode 100644 level/block/horn_coral_block.go delete mode 100644 level/block/horn_coral_fan.go delete mode 100644 level/block/horn_coral_wall_fan.go delete mode 100644 level/block/ice.go delete mode 100644 level/block/infested_chiseled_stone_bricks.go delete mode 100644 level/block/infested_cobblestone.go delete mode 100644 level/block/infested_cracked_stone_bricks.go delete mode 100644 level/block/infested_deepslate.go delete mode 100644 level/block/infested_mossy_stone_bricks.go delete mode 100644 level/block/infested_stone.go delete mode 100644 level/block/infested_stone_bricks.go delete mode 100644 level/block/iron_bars.go delete mode 100644 level/block/iron_block.go delete mode 100644 level/block/iron_door.go delete mode 100644 level/block/iron_ore.go delete mode 100644 level/block/iron_trapdoor.go delete mode 100644 level/block/jack_o_lantern.go delete mode 100644 level/block/jigsaw.go delete mode 100644 level/block/jukebox.go delete mode 100644 level/block/jungle_button.go delete mode 100644 level/block/jungle_door.go delete mode 100644 level/block/jungle_fence.go delete mode 100644 level/block/jungle_fence_gate.go delete mode 100644 level/block/jungle_leaves.go delete mode 100644 level/block/jungle_log.go delete mode 100644 level/block/jungle_planks.go delete mode 100644 level/block/jungle_pressure_plate.go delete mode 100644 level/block/jungle_sapling.go delete mode 100644 level/block/jungle_sign.go delete mode 100644 level/block/jungle_slab.go delete mode 100644 level/block/jungle_stairs.go delete mode 100644 level/block/jungle_trapdoor.go delete mode 100644 level/block/jungle_wall_sign.go delete mode 100644 level/block/jungle_wood.go delete mode 100644 level/block/kelp.go delete mode 100644 level/block/kelp_plant.go delete mode 100644 level/block/ladder.go delete mode 100644 level/block/lantern.go delete mode 100644 level/block/lapis_block.go delete mode 100644 level/block/lapis_ore.go delete mode 100644 level/block/large_amethyst_bud.go delete mode 100644 level/block/large_fern.go delete mode 100644 level/block/lava.go delete mode 100644 level/block/lava_cauldron.go delete mode 100644 level/block/lectern.go delete mode 100644 level/block/lever.go delete mode 100644 level/block/light.go delete mode 100644 level/block/light_blue_banner.go delete mode 100644 level/block/light_blue_bed.go delete mode 100644 level/block/light_blue_candle.go delete mode 100644 level/block/light_blue_candle_cake.go delete mode 100644 level/block/light_blue_carpet.go delete mode 100644 level/block/light_blue_concrete.go delete mode 100644 level/block/light_blue_concrete_powder.go delete mode 100644 level/block/light_blue_glazed_terracotta.go delete mode 100644 level/block/light_blue_shulker_box.go delete mode 100644 level/block/light_blue_stained_glass.go delete mode 100644 level/block/light_blue_stained_glass_pane.go delete mode 100644 level/block/light_blue_terracotta.go delete mode 100644 level/block/light_blue_wall_banner.go delete mode 100644 level/block/light_blue_wool.go delete mode 100644 level/block/light_gray_banner.go delete mode 100644 level/block/light_gray_bed.go delete mode 100644 level/block/light_gray_candle.go delete mode 100644 level/block/light_gray_candle_cake.go delete mode 100644 level/block/light_gray_carpet.go delete mode 100644 level/block/light_gray_concrete.go delete mode 100644 level/block/light_gray_concrete_powder.go delete mode 100644 level/block/light_gray_glazed_terracotta.go delete mode 100644 level/block/light_gray_shulker_box.go delete mode 100644 level/block/light_gray_stained_glass.go delete mode 100644 level/block/light_gray_stained_glass_pane.go delete mode 100644 level/block/light_gray_terracotta.go delete mode 100644 level/block/light_gray_wall_banner.go delete mode 100644 level/block/light_gray_wool.go delete mode 100644 level/block/light_weighted_pressure_plate.go delete mode 100644 level/block/lightning_rod.go delete mode 100644 level/block/lilac.go delete mode 100644 level/block/lily_of_the_valley.go delete mode 100644 level/block/lily_pad.go delete mode 100644 level/block/lime_banner.go delete mode 100644 level/block/lime_bed.go delete mode 100644 level/block/lime_candle.go delete mode 100644 level/block/lime_candle_cake.go delete mode 100644 level/block/lime_carpet.go delete mode 100644 level/block/lime_concrete.go delete mode 100644 level/block/lime_concrete_powder.go delete mode 100644 level/block/lime_glazed_terracotta.go delete mode 100644 level/block/lime_shulker_box.go delete mode 100644 level/block/lime_stained_glass.go delete mode 100644 level/block/lime_stained_glass_pane.go delete mode 100644 level/block/lime_terracotta.go delete mode 100644 level/block/lime_wall_banner.go delete mode 100644 level/block/lime_wool.go delete mode 100644 level/block/lodestone.go delete mode 100644 level/block/loom.go delete mode 100644 level/block/magenta_banner.go delete mode 100644 level/block/magenta_bed.go delete mode 100644 level/block/magenta_candle.go delete mode 100644 level/block/magenta_candle_cake.go delete mode 100644 level/block/magenta_carpet.go delete mode 100644 level/block/magenta_concrete.go delete mode 100644 level/block/magenta_concrete_powder.go delete mode 100644 level/block/magenta_glazed_terracotta.go delete mode 100644 level/block/magenta_shulker_box.go delete mode 100644 level/block/magenta_stained_glass.go delete mode 100644 level/block/magenta_stained_glass_pane.go delete mode 100644 level/block/magenta_terracotta.go delete mode 100644 level/block/magenta_wall_banner.go delete mode 100644 level/block/magenta_wool.go delete mode 100644 level/block/magma_block.go delete mode 100644 level/block/medium_amethyst_bud.go delete mode 100644 level/block/melon.go delete mode 100644 level/block/melon_stem.go delete mode 100644 level/block/moss_block.go delete mode 100644 level/block/moss_carpet.go delete mode 100644 level/block/mossy_cobblestone.go delete mode 100644 level/block/mossy_cobblestone_slab.go delete mode 100644 level/block/mossy_cobblestone_stairs.go delete mode 100644 level/block/mossy_cobblestone_wall.go delete mode 100644 level/block/mossy_stone_brick_slab.go delete mode 100644 level/block/mossy_stone_brick_stairs.go delete mode 100644 level/block/mossy_stone_brick_wall.go delete mode 100644 level/block/mossy_stone_bricks.go delete mode 100644 level/block/moving_piston.go delete mode 100644 level/block/mushroom_stem.go delete mode 100644 level/block/mycelium.go delete mode 100644 level/block/nether_brick_fence.go delete mode 100644 level/block/nether_brick_slab.go delete mode 100644 level/block/nether_brick_stairs.go delete mode 100644 level/block/nether_brick_wall.go delete mode 100644 level/block/nether_bricks.go delete mode 100644 level/block/nether_gold_ore.go delete mode 100644 level/block/nether_portal.go delete mode 100644 level/block/nether_quartz_ore.go delete mode 100644 level/block/nether_sprouts.go delete mode 100644 level/block/nether_wart.go delete mode 100644 level/block/nether_wart_block.go delete mode 100644 level/block/netherite_block.go delete mode 100644 level/block/netherrack.go delete mode 100644 level/block/note_block.go delete mode 100644 level/block/oak_button.go delete mode 100644 level/block/oak_door.go delete mode 100644 level/block/oak_fence.go delete mode 100644 level/block/oak_fence_gate.go delete mode 100644 level/block/oak_leaves.go delete mode 100644 level/block/oak_log.go delete mode 100644 level/block/oak_planks.go delete mode 100644 level/block/oak_pressure_plate.go delete mode 100644 level/block/oak_sapling.go delete mode 100644 level/block/oak_sign.go delete mode 100644 level/block/oak_slab.go delete mode 100644 level/block/oak_stairs.go delete mode 100644 level/block/oak_trapdoor.go delete mode 100644 level/block/oak_wall_sign.go delete mode 100644 level/block/oak_wood.go delete mode 100644 level/block/observer.go delete mode 100644 level/block/obsidian.go delete mode 100644 level/block/orange_banner.go delete mode 100644 level/block/orange_bed.go delete mode 100644 level/block/orange_candle.go delete mode 100644 level/block/orange_candle_cake.go delete mode 100644 level/block/orange_carpet.go delete mode 100644 level/block/orange_concrete.go delete mode 100644 level/block/orange_concrete_powder.go delete mode 100644 level/block/orange_glazed_terracotta.go delete mode 100644 level/block/orange_shulker_box.go delete mode 100644 level/block/orange_stained_glass.go delete mode 100644 level/block/orange_stained_glass_pane.go delete mode 100644 level/block/orange_terracotta.go delete mode 100644 level/block/orange_tulip.go delete mode 100644 level/block/orange_wall_banner.go delete mode 100644 level/block/orange_wool.go delete mode 100644 level/block/oxeye_daisy.go delete mode 100644 level/block/oxidized_copper.go delete mode 100644 level/block/oxidized_cut_copper.go delete mode 100644 level/block/oxidized_cut_copper_slab.go delete mode 100644 level/block/oxidized_cut_copper_stairs.go delete mode 100644 level/block/packed_ice.go delete mode 100644 level/block/peony.go delete mode 100644 level/block/petrified_oak_slab.go delete mode 100644 level/block/pink_banner.go delete mode 100644 level/block/pink_bed.go delete mode 100644 level/block/pink_candle.go delete mode 100644 level/block/pink_candle_cake.go delete mode 100644 level/block/pink_carpet.go delete mode 100644 level/block/pink_concrete.go delete mode 100644 level/block/pink_concrete_powder.go delete mode 100644 level/block/pink_glazed_terracotta.go delete mode 100644 level/block/pink_shulker_box.go delete mode 100644 level/block/pink_stained_glass.go delete mode 100644 level/block/pink_stained_glass_pane.go delete mode 100644 level/block/pink_terracotta.go delete mode 100644 level/block/pink_tulip.go delete mode 100644 level/block/pink_wall_banner.go delete mode 100644 level/block/pink_wool.go delete mode 100644 level/block/piston.go delete mode 100644 level/block/piston_head.go delete mode 100644 level/block/player_head.go delete mode 100644 level/block/player_wall_head.go delete mode 100644 level/block/podzol.go delete mode 100644 level/block/pointed_dripstone.go delete mode 100644 level/block/polished_andesite.go delete mode 100644 level/block/polished_andesite_slab.go delete mode 100644 level/block/polished_andesite_stairs.go delete mode 100644 level/block/polished_basalt.go delete mode 100644 level/block/polished_blackstone.go delete mode 100644 level/block/polished_blackstone_brick_slab.go delete mode 100644 level/block/polished_blackstone_brick_stairs.go delete mode 100644 level/block/polished_blackstone_brick_wall.go delete mode 100644 level/block/polished_blackstone_bricks.go delete mode 100644 level/block/polished_blackstone_button.go delete mode 100644 level/block/polished_blackstone_pressure_plate.go delete mode 100644 level/block/polished_blackstone_slab.go delete mode 100644 level/block/polished_blackstone_stairs.go delete mode 100644 level/block/polished_blackstone_wall.go delete mode 100644 level/block/polished_deepslate.go delete mode 100644 level/block/polished_deepslate_slab.go delete mode 100644 level/block/polished_deepslate_stairs.go delete mode 100644 level/block/polished_deepslate_wall.go delete mode 100644 level/block/polished_diorite.go delete mode 100644 level/block/polished_diorite_slab.go delete mode 100644 level/block/polished_diorite_stairs.go delete mode 100644 level/block/polished_granite.go delete mode 100644 level/block/polished_granite_slab.go delete mode 100644 level/block/polished_granite_stairs.go delete mode 100644 level/block/poppy.go delete mode 100644 level/block/potatoes.go delete mode 100644 level/block/potted_acacia_sapling.go delete mode 100644 level/block/potted_allium.go delete mode 100644 level/block/potted_azalea_bush.go delete mode 100644 level/block/potted_azure_bluet.go delete mode 100644 level/block/potted_bamboo.go delete mode 100644 level/block/potted_birch_sapling.go delete mode 100644 level/block/potted_blue_orchid.go delete mode 100644 level/block/potted_brown_mushroom.go delete mode 100644 level/block/potted_cactus.go delete mode 100644 level/block/potted_cornflower.go delete mode 100644 level/block/potted_crimson_fungus.go delete mode 100644 level/block/potted_crimson_roots.go delete mode 100644 level/block/potted_dandelion.go delete mode 100644 level/block/potted_dark_oak_sapling.go delete mode 100644 level/block/potted_dead_bush.go delete mode 100644 level/block/potted_fern.go delete mode 100644 level/block/potted_flowering_azalea_bush.go delete mode 100644 level/block/potted_jungle_sapling.go delete mode 100644 level/block/potted_lily_of_the_valley.go delete mode 100644 level/block/potted_oak_sapling.go delete mode 100644 level/block/potted_orange_tulip.go delete mode 100644 level/block/potted_oxeye_daisy.go delete mode 100644 level/block/potted_pink_tulip.go delete mode 100644 level/block/potted_poppy.go delete mode 100644 level/block/potted_red_mushroom.go delete mode 100644 level/block/potted_red_tulip.go delete mode 100644 level/block/potted_spruce_sapling.go delete mode 100644 level/block/potted_warped_fungus.go delete mode 100644 level/block/potted_warped_roots.go delete mode 100644 level/block/potted_white_tulip.go delete mode 100644 level/block/potted_wither_rose.go delete mode 100644 level/block/powder_snow.go delete mode 100644 level/block/powder_snow_cauldron.go delete mode 100644 level/block/powered_rail.go delete mode 100644 level/block/prismarine.go delete mode 100644 level/block/prismarine_brick_slab.go delete mode 100644 level/block/prismarine_brick_stairs.go delete mode 100644 level/block/prismarine_bricks.go delete mode 100644 level/block/prismarine_slab.go delete mode 100644 level/block/prismarine_stairs.go delete mode 100644 level/block/prismarine_wall.go create mode 100644 level/block/properties.go delete mode 100644 level/block/pumpkin.go delete mode 100644 level/block/pumpkin_stem.go delete mode 100644 level/block/purple_banner.go delete mode 100644 level/block/purple_bed.go delete mode 100644 level/block/purple_candle.go delete mode 100644 level/block/purple_candle_cake.go delete mode 100644 level/block/purple_carpet.go delete mode 100644 level/block/purple_concrete.go delete mode 100644 level/block/purple_concrete_powder.go delete mode 100644 level/block/purple_glazed_terracotta.go delete mode 100644 level/block/purple_shulker_box.go delete mode 100644 level/block/purple_stained_glass.go delete mode 100644 level/block/purple_stained_glass_pane.go delete mode 100644 level/block/purple_terracotta.go delete mode 100644 level/block/purple_wall_banner.go delete mode 100644 level/block/purple_wool.go delete mode 100644 level/block/purpur_block.go delete mode 100644 level/block/purpur_pillar.go delete mode 100644 level/block/purpur_slab.go delete mode 100644 level/block/purpur_stairs.go delete mode 100644 level/block/quartz_block.go delete mode 100644 level/block/quartz_bricks.go delete mode 100644 level/block/quartz_pillar.go delete mode 100644 level/block/quartz_slab.go delete mode 100644 level/block/quartz_stairs.go delete mode 100644 level/block/rail.go delete mode 100644 level/block/raw_copper_block.go delete mode 100644 level/block/raw_gold_block.go delete mode 100644 level/block/raw_iron_block.go delete mode 100644 level/block/red_banner.go delete mode 100644 level/block/red_bed.go delete mode 100644 level/block/red_candle.go delete mode 100644 level/block/red_candle_cake.go delete mode 100644 level/block/red_carpet.go delete mode 100644 level/block/red_concrete.go delete mode 100644 level/block/red_concrete_powder.go delete mode 100644 level/block/red_glazed_terracotta.go delete mode 100644 level/block/red_mushroom.go delete mode 100644 level/block/red_mushroom_block.go delete mode 100644 level/block/red_nether_brick_slab.go delete mode 100644 level/block/red_nether_brick_stairs.go delete mode 100644 level/block/red_nether_brick_wall.go delete mode 100644 level/block/red_nether_bricks.go delete mode 100644 level/block/red_sand.go delete mode 100644 level/block/red_sandstone.go delete mode 100644 level/block/red_sandstone_slab.go delete mode 100644 level/block/red_sandstone_stairs.go delete mode 100644 level/block/red_sandstone_wall.go delete mode 100644 level/block/red_shulker_box.go delete mode 100644 level/block/red_stained_glass.go delete mode 100644 level/block/red_stained_glass_pane.go delete mode 100644 level/block/red_terracotta.go delete mode 100644 level/block/red_tulip.go delete mode 100644 level/block/red_wall_banner.go delete mode 100644 level/block/red_wool.go delete mode 100644 level/block/redstone_block.go delete mode 100644 level/block/redstone_lamp.go delete mode 100644 level/block/redstone_ore.go delete mode 100644 level/block/redstone_torch.go delete mode 100644 level/block/redstone_wall_torch.go delete mode 100644 level/block/redstone_wire.go delete mode 100644 level/block/repeater.go delete mode 100644 level/block/repeating_command_block.go delete mode 100644 level/block/respawn_anchor.go delete mode 100644 level/block/rooted_dirt.go delete mode 100644 level/block/rose_bush.go delete mode 100644 level/block/sand.go delete mode 100644 level/block/sandstone.go delete mode 100644 level/block/sandstone_slab.go delete mode 100644 level/block/sandstone_stairs.go delete mode 100644 level/block/sandstone_wall.go delete mode 100644 level/block/scaffolding.go delete mode 100644 level/block/sculk_sensor.go delete mode 100644 level/block/sea_lantern.go delete mode 100644 level/block/sea_pickle.go delete mode 100644 level/block/seagrass.go delete mode 100644 level/block/shroomlight.go delete mode 100644 level/block/shulker_box.go delete mode 100644 level/block/skeleton_skull.go delete mode 100644 level/block/skeleton_wall_skull.go delete mode 100644 level/block/slime_block.go delete mode 100644 level/block/small_amethyst_bud.go delete mode 100644 level/block/small_dripleaf.go delete mode 100644 level/block/smithing_table.go delete mode 100644 level/block/smoker.go delete mode 100644 level/block/smooth_basalt.go delete mode 100644 level/block/smooth_quartz.go delete mode 100644 level/block/smooth_quartz_slab.go delete mode 100644 level/block/smooth_quartz_stairs.go delete mode 100644 level/block/smooth_red_sandstone.go delete mode 100644 level/block/smooth_red_sandstone_slab.go delete mode 100644 level/block/smooth_red_sandstone_stairs.go delete mode 100644 level/block/smooth_sandstone.go delete mode 100644 level/block/smooth_sandstone_slab.go delete mode 100644 level/block/smooth_sandstone_stairs.go delete mode 100644 level/block/smooth_stone.go delete mode 100644 level/block/smooth_stone_slab.go delete mode 100644 level/block/snow.go delete mode 100644 level/block/snow_block.go delete mode 100644 level/block/soul_campfire.go delete mode 100644 level/block/soul_fire.go delete mode 100644 level/block/soul_lantern.go delete mode 100644 level/block/soul_sand.go delete mode 100644 level/block/soul_soil.go delete mode 100644 level/block/soul_torch.go delete mode 100644 level/block/soul_wall_torch.go delete mode 100644 level/block/spawner.go delete mode 100644 level/block/sponge.go delete mode 100644 level/block/spore_blossom.go delete mode 100644 level/block/spruce_button.go delete mode 100644 level/block/spruce_door.go delete mode 100644 level/block/spruce_fence.go delete mode 100644 level/block/spruce_fence_gate.go delete mode 100644 level/block/spruce_leaves.go delete mode 100644 level/block/spruce_log.go delete mode 100644 level/block/spruce_planks.go delete mode 100644 level/block/spruce_pressure_plate.go delete mode 100644 level/block/spruce_sapling.go delete mode 100644 level/block/spruce_sign.go delete mode 100644 level/block/spruce_slab.go delete mode 100644 level/block/spruce_stairs.go delete mode 100644 level/block/spruce_trapdoor.go delete mode 100644 level/block/spruce_wall_sign.go delete mode 100644 level/block/spruce_wood.go delete mode 100644 level/block/sticky_piston.go delete mode 100644 level/block/stone.go delete mode 100644 level/block/stone_brick_slab.go delete mode 100644 level/block/stone_brick_stairs.go delete mode 100644 level/block/stone_brick_wall.go delete mode 100644 level/block/stone_bricks.go delete mode 100644 level/block/stone_button.go delete mode 100644 level/block/stone_pressure_plate.go delete mode 100644 level/block/stone_slab.go delete mode 100644 level/block/stone_stairs.go delete mode 100644 level/block/stonecutter.go delete mode 100644 level/block/stripped_acacia_log.go delete mode 100644 level/block/stripped_acacia_wood.go delete mode 100644 level/block/stripped_birch_log.go delete mode 100644 level/block/stripped_birch_wood.go delete mode 100644 level/block/stripped_crimson_hyphae.go delete mode 100644 level/block/stripped_crimson_stem.go delete mode 100644 level/block/stripped_dark_oak_log.go delete mode 100644 level/block/stripped_dark_oak_wood.go delete mode 100644 level/block/stripped_jungle_log.go delete mode 100644 level/block/stripped_jungle_wood.go delete mode 100644 level/block/stripped_oak_log.go delete mode 100644 level/block/stripped_oak_wood.go delete mode 100644 level/block/stripped_spruce_log.go delete mode 100644 level/block/stripped_spruce_wood.go delete mode 100644 level/block/stripped_warped_hyphae.go delete mode 100644 level/block/stripped_warped_stem.go delete mode 100644 level/block/structure_block.go delete mode 100644 level/block/structure_void.go delete mode 100644 level/block/sugar_cane.go delete mode 100644 level/block/sunflower.go delete mode 100644 level/block/sweet_berry_bush.go delete mode 100644 level/block/tall_grass.go delete mode 100644 level/block/tall_seagrass.go delete mode 100644 level/block/target.go delete mode 100644 level/block/terracotta.go delete mode 100644 level/block/testdata/block_states.nbt create mode 100644 level/block/testdata/blocks.nbt delete mode 100644 level/block/tinted_glass.go delete mode 100644 level/block/tnt.go delete mode 100644 level/block/torch.go delete mode 100644 level/block/trapped_chest.go delete mode 100644 level/block/tripwire.go delete mode 100644 level/block/tripwire_hook.go delete mode 100644 level/block/tube_coral.go delete mode 100644 level/block/tube_coral_block.go delete mode 100644 level/block/tube_coral_fan.go delete mode 100644 level/block/tube_coral_wall_fan.go delete mode 100644 level/block/tuff.go delete mode 100644 level/block/turtle_egg.go delete mode 100644 level/block/twisting_vines.go delete mode 100644 level/block/twisting_vines_plant.go delete mode 100644 level/block/vine.go delete mode 100644 level/block/void_air.go delete mode 100644 level/block/wall_torch.go delete mode 100644 level/block/warped_button.go delete mode 100644 level/block/warped_door.go delete mode 100644 level/block/warped_fence.go delete mode 100644 level/block/warped_fence_gate.go delete mode 100644 level/block/warped_fungus.go delete mode 100644 level/block/warped_hyphae.go delete mode 100644 level/block/warped_nylium.go delete mode 100644 level/block/warped_planks.go delete mode 100644 level/block/warped_pressure_plate.go delete mode 100644 level/block/warped_roots.go delete mode 100644 level/block/warped_sign.go delete mode 100644 level/block/warped_slab.go delete mode 100644 level/block/warped_stairs.go delete mode 100644 level/block/warped_stem.go delete mode 100644 level/block/warped_trapdoor.go delete mode 100644 level/block/warped_wall_sign.go delete mode 100644 level/block/warped_wart_block.go delete mode 100644 level/block/water.go delete mode 100644 level/block/water_cauldron.go delete mode 100644 level/block/waxed_copper_block.go delete mode 100644 level/block/waxed_cut_copper.go delete mode 100644 level/block/waxed_cut_copper_slab.go delete mode 100644 level/block/waxed_cut_copper_stairs.go delete mode 100644 level/block/waxed_exposed_copper.go delete mode 100644 level/block/waxed_exposed_cut_copper.go delete mode 100644 level/block/waxed_exposed_cut_copper_slab.go delete mode 100644 level/block/waxed_exposed_cut_copper_stairs.go delete mode 100644 level/block/waxed_oxidized_copper.go delete mode 100644 level/block/waxed_oxidized_cut_copper.go delete mode 100644 level/block/waxed_oxidized_cut_copper_slab.go delete mode 100644 level/block/waxed_oxidized_cut_copper_stairs.go delete mode 100644 level/block/waxed_weathered_copper.go delete mode 100644 level/block/waxed_weathered_cut_copper.go delete mode 100644 level/block/waxed_weathered_cut_copper_slab.go delete mode 100644 level/block/waxed_weathered_cut_copper_stairs.go delete mode 100644 level/block/weathered_copper.go delete mode 100644 level/block/weathered_cut_copper.go delete mode 100644 level/block/weathered_cut_copper_slab.go delete mode 100644 level/block/weathered_cut_copper_stairs.go delete mode 100644 level/block/weeping_vines.go delete mode 100644 level/block/weeping_vines_plant.go delete mode 100644 level/block/wet_sponge.go delete mode 100644 level/block/wheat.go delete mode 100644 level/block/white_banner.go delete mode 100644 level/block/white_bed.go delete mode 100644 level/block/white_candle.go delete mode 100644 level/block/white_candle_cake.go delete mode 100644 level/block/white_carpet.go delete mode 100644 level/block/white_concrete.go delete mode 100644 level/block/white_concrete_powder.go delete mode 100644 level/block/white_glazed_terracotta.go delete mode 100644 level/block/white_shulker_box.go delete mode 100644 level/block/white_stained_glass.go delete mode 100644 level/block/white_stained_glass_pane.go delete mode 100644 level/block/white_terracotta.go delete mode 100644 level/block/white_tulip.go delete mode 100644 level/block/white_wall_banner.go delete mode 100644 level/block/white_wool.go delete mode 100644 level/block/wither_rose.go delete mode 100644 level/block/wither_skeleton_skull.go delete mode 100644 level/block/wither_skeleton_wall_skull.go delete mode 100644 level/block/yellow_banner.go delete mode 100644 level/block/yellow_bed.go delete mode 100644 level/block/yellow_candle.go delete mode 100644 level/block/yellow_candle_cake.go delete mode 100644 level/block/yellow_carpet.go delete mode 100644 level/block/yellow_concrete.go delete mode 100644 level/block/yellow_concrete_powder.go delete mode 100644 level/block/yellow_glazed_terracotta.go delete mode 100644 level/block/yellow_shulker_box.go delete mode 100644 level/block/yellow_stained_glass.go delete mode 100644 level/block/yellow_stained_glass_pane.go delete mode 100644 level/block/yellow_terracotta.go delete mode 100644 level/block/yellow_wall_banner.go delete mode 100644 level/block/yellow_wool.go delete mode 100644 level/block/zombie_head.go delete mode 100644 level/block/zombie_wall_head.go diff --git a/examples/genmaps/genmaps.go b/examples/genmaps/genmaps.go index b964d12..c1039a5 100644 --- a/examples/genmaps/genmaps.go +++ b/examples/genmaps/genmaps.go @@ -101,7 +101,7 @@ func main() { var column save.Chunk for task := range c { if err := column.Load(task.data); err != nil { - log.Printf("Decode column (%d.%d) error: %v", task.pos[0], task.pos[1], err) + log.Printf("UnmarshalNBT column (%d.%d) error: %v", task.pos[0], task.pos[1], err) } //pos := [2]int{int(column.Level.PosX), int(column.Level.PosZ)} //if pos != task.pos { diff --git a/level/block/acacia_button.go b/level/block/acacia_button.go deleted file mode 100644 index f6c0fbf..0000000 --- a/level/block/acacia_button.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type AcaciaButton struct { - Face string - Facing string - Powered string -} - -func (AcaciaButton) ID() string { - return "minecraft:acacia_button" -} diff --git a/level/block/acacia_door.go b/level/block/acacia_door.go deleted file mode 100644 index 3f001ae..0000000 --- a/level/block/acacia_door.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type AcaciaDoor struct { - Facing string - Half string - Hinge string - Open string - Powered string -} - -func (AcaciaDoor) ID() string { - return "minecraft:acacia_door" -} diff --git a/level/block/acacia_fence.go b/level/block/acacia_fence.go deleted file mode 100644 index ce66ea6..0000000 --- a/level/block/acacia_fence.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type AcaciaFence struct { - East string - North string - South string - Waterlogged string - West string -} - -func (AcaciaFence) ID() string { - return "minecraft:acacia_fence" -} diff --git a/level/block/acacia_fence_gate.go b/level/block/acacia_fence_gate.go deleted file mode 100644 index e589e0a..0000000 --- a/level/block/acacia_fence_gate.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type AcaciaFenceGate struct { - Facing string - In_wall string - Open string - Powered string -} - -func (AcaciaFenceGate) ID() string { - return "minecraft:acacia_fence_gate" -} diff --git a/level/block/acacia_leaves.go b/level/block/acacia_leaves.go deleted file mode 100644 index 7387673..0000000 --- a/level/block/acacia_leaves.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AcaciaLeaves struct { - Distance string - Persistent string -} - -func (AcaciaLeaves) ID() string { - return "minecraft:acacia_leaves" -} diff --git a/level/block/acacia_log.go b/level/block/acacia_log.go deleted file mode 100644 index 3e33091..0000000 --- a/level/block/acacia_log.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AcaciaLog struct { - Axis string -} - -func (AcaciaLog) ID() string { - return "minecraft:acacia_log" -} diff --git a/level/block/acacia_planks.go b/level/block/acacia_planks.go deleted file mode 100644 index 1a98f8f..0000000 --- a/level/block/acacia_planks.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type AcaciaPlanks struct { -} - -func (AcaciaPlanks) ID() string { - return "minecraft:acacia_planks" -} diff --git a/level/block/acacia_pressure_plate.go b/level/block/acacia_pressure_plate.go deleted file mode 100644 index 4868342..0000000 --- a/level/block/acacia_pressure_plate.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AcaciaPressurePlate struct { - Powered string -} - -func (AcaciaPressurePlate) ID() string { - return "minecraft:acacia_pressure_plate" -} diff --git a/level/block/acacia_sapling.go b/level/block/acacia_sapling.go deleted file mode 100644 index d45f88c..0000000 --- a/level/block/acacia_sapling.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AcaciaSapling struct { - Stage string -} - -func (AcaciaSapling) ID() string { - return "minecraft:acacia_sapling" -} diff --git a/level/block/acacia_sign.go b/level/block/acacia_sign.go deleted file mode 100644 index 9c0ccb7..0000000 --- a/level/block/acacia_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AcaciaSign struct { - Rotation string - Waterlogged string -} - -func (AcaciaSign) ID() string { - return "minecraft:acacia_sign" -} diff --git a/level/block/acacia_slab.go b/level/block/acacia_slab.go deleted file mode 100644 index 8eaa992..0000000 --- a/level/block/acacia_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AcaciaSlab struct { - Type string - Waterlogged string -} - -func (AcaciaSlab) ID() string { - return "minecraft:acacia_slab" -} diff --git a/level/block/acacia_stairs.go b/level/block/acacia_stairs.go deleted file mode 100644 index 0f6bbfe..0000000 --- a/level/block/acacia_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type AcaciaStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (AcaciaStairs) ID() string { - return "minecraft:acacia_stairs" -} diff --git a/level/block/acacia_trapdoor.go b/level/block/acacia_trapdoor.go deleted file mode 100644 index 82f1ed6..0000000 --- a/level/block/acacia_trapdoor.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type AcaciaTrapdoor struct { - Facing string - Half string - Open string - Powered string - Waterlogged string -} - -func (AcaciaTrapdoor) ID() string { - return "minecraft:acacia_trapdoor" -} diff --git a/level/block/acacia_wall_sign.go b/level/block/acacia_wall_sign.go deleted file mode 100644 index c35a131..0000000 --- a/level/block/acacia_wall_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AcaciaWallSign struct { - Facing string - Waterlogged string -} - -func (AcaciaWallSign) ID() string { - return "minecraft:acacia_wall_sign" -} diff --git a/level/block/acacia_wood.go b/level/block/acacia_wood.go deleted file mode 100644 index e8bd2fa..0000000 --- a/level/block/acacia_wood.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AcaciaWood struct { - Axis string -} - -func (AcaciaWood) ID() string { - return "minecraft:acacia_wood" -} diff --git a/level/block/activator_rail.go b/level/block/activator_rail.go deleted file mode 100644 index 4c1bbb6..0000000 --- a/level/block/activator_rail.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type ActivatorRail struct { - Powered string - Shape string - Waterlogged string -} - -func (ActivatorRail) ID() string { - return "minecraft:activator_rail" -} diff --git a/level/block/air.go b/level/block/air.go deleted file mode 100644 index 50ea2dc..0000000 --- a/level/block/air.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Air struct { -} - -func (Air) ID() string { - return "minecraft:air" -} diff --git a/level/block/allium.go b/level/block/allium.go deleted file mode 100644 index d7ae313..0000000 --- a/level/block/allium.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Allium struct { -} - -func (Allium) ID() string { - return "minecraft:allium" -} diff --git a/level/block/amethyst_block.go b/level/block/amethyst_block.go deleted file mode 100644 index d909594..0000000 --- a/level/block/amethyst_block.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type AmethystBlock struct { -} - -func (AmethystBlock) ID() string { - return "minecraft:amethyst_block" -} diff --git a/level/block/amethyst_cluster.go b/level/block/amethyst_cluster.go deleted file mode 100644 index dadc1a5..0000000 --- a/level/block/amethyst_cluster.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AmethystCluster struct { - Facing string - Waterlogged string -} - -func (AmethystCluster) ID() string { - return "minecraft:amethyst_cluster" -} diff --git a/level/block/ancient_debris.go b/level/block/ancient_debris.go deleted file mode 100644 index 6d463b7..0000000 --- a/level/block/ancient_debris.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type AncientDebris struct { -} - -func (AncientDebris) ID() string { - return "minecraft:ancient_debris" -} diff --git a/level/block/andesite.go b/level/block/andesite.go deleted file mode 100644 index 5fccd53..0000000 --- a/level/block/andesite.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Andesite struct { -} - -func (Andesite) ID() string { - return "minecraft:andesite" -} diff --git a/level/block/andesite_slab.go b/level/block/andesite_slab.go deleted file mode 100644 index 233e432..0000000 --- a/level/block/andesite_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AndesiteSlab struct { - Type string - Waterlogged string -} - -func (AndesiteSlab) ID() string { - return "minecraft:andesite_slab" -} diff --git a/level/block/andesite_stairs.go b/level/block/andesite_stairs.go deleted file mode 100644 index 6310478..0000000 --- a/level/block/andesite_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type AndesiteStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (AndesiteStairs) ID() string { - return "minecraft:andesite_stairs" -} diff --git a/level/block/andesite_wall.go b/level/block/andesite_wall.go deleted file mode 100644 index 48dd2d9..0000000 --- a/level/block/andesite_wall.go +++ /dev/null @@ -1,14 +0,0 @@ -package block - -type AndesiteWall struct { - East string - North string - South string - Up string - Waterlogged string - West string -} - -func (AndesiteWall) ID() string { - return "minecraft:andesite_wall" -} diff --git a/level/block/anvil.go b/level/block/anvil.go deleted file mode 100644 index d45f28b..0000000 --- a/level/block/anvil.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Anvil struct { - Facing string -} - -func (Anvil) ID() string { - return "minecraft:anvil" -} diff --git a/level/block/attached_melon_stem.go b/level/block/attached_melon_stem.go deleted file mode 100644 index 1acfbd9..0000000 --- a/level/block/attached_melon_stem.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AttachedMelonStem struct { - Facing string -} - -func (AttachedMelonStem) ID() string { - return "minecraft:attached_melon_stem" -} diff --git a/level/block/attached_pumpkin_stem.go b/level/block/attached_pumpkin_stem.go deleted file mode 100644 index 460369d..0000000 --- a/level/block/attached_pumpkin_stem.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type AttachedPumpkinStem struct { - Facing string -} - -func (AttachedPumpkinStem) ID() string { - return "minecraft:attached_pumpkin_stem" -} diff --git a/level/block/azalea.go b/level/block/azalea.go deleted file mode 100644 index 8b8005b..0000000 --- a/level/block/azalea.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Azalea struct { -} - -func (Azalea) ID() string { - return "minecraft:azalea" -} diff --git a/level/block/azalea_leaves.go b/level/block/azalea_leaves.go deleted file mode 100644 index 7aac872..0000000 --- a/level/block/azalea_leaves.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type AzaleaLeaves struct { - Distance string - Persistent string -} - -func (AzaleaLeaves) ID() string { - return "minecraft:azalea_leaves" -} diff --git a/level/block/azure_bluet.go b/level/block/azure_bluet.go deleted file mode 100644 index 4b4fd3e..0000000 --- a/level/block/azure_bluet.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type AzureBluet struct { -} - -func (AzureBluet) ID() string { - return "minecraft:azure_bluet" -} diff --git a/level/block/bamboo.go b/level/block/bamboo.go deleted file mode 100644 index f89c582..0000000 --- a/level/block/bamboo.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type Bamboo struct { - Age string - Leaves string - Stage string -} - -func (Bamboo) ID() string { - return "minecraft:bamboo" -} diff --git a/level/block/bamboo_sapling.go b/level/block/bamboo_sapling.go deleted file mode 100644 index d129cc5..0000000 --- a/level/block/bamboo_sapling.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BambooSapling struct { -} - -func (BambooSapling) ID() string { - return "minecraft:bamboo_sapling" -} diff --git a/level/block/barrel.go b/level/block/barrel.go deleted file mode 100644 index d1cae61..0000000 --- a/level/block/barrel.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type Barrel struct { - Facing string - Open string -} - -func (Barrel) ID() string { - return "minecraft:barrel" -} diff --git a/level/block/barrier.go b/level/block/barrier.go deleted file mode 100644 index bee75c2..0000000 --- a/level/block/barrier.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Barrier struct { -} - -func (Barrier) ID() string { - return "minecraft:barrier" -} diff --git a/level/block/basalt.go b/level/block/basalt.go deleted file mode 100644 index 7b90109..0000000 --- a/level/block/basalt.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Basalt struct { - Axis string -} - -func (Basalt) ID() string { - return "minecraft:basalt" -} diff --git a/level/block/beacon.go b/level/block/beacon.go deleted file mode 100644 index 3f2af56..0000000 --- a/level/block/beacon.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Beacon struct { -} - -func (Beacon) ID() string { - return "minecraft:beacon" -} diff --git a/level/block/bedrock.go b/level/block/bedrock.go deleted file mode 100644 index c39f29d..0000000 --- a/level/block/bedrock.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Bedrock struct { -} - -func (Bedrock) ID() string { - return "minecraft:bedrock" -} diff --git a/level/block/bee_nest.go b/level/block/bee_nest.go deleted file mode 100644 index 746da66..0000000 --- a/level/block/bee_nest.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BeeNest struct { - Facing string - Honey_level string -} - -func (BeeNest) ID() string { - return "minecraft:bee_nest" -} diff --git a/level/block/beehive.go b/level/block/beehive.go deleted file mode 100644 index 39a8a79..0000000 --- a/level/block/beehive.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type Beehive struct { - Facing string - Honey_level string -} - -func (Beehive) ID() string { - return "minecraft:beehive" -} diff --git a/level/block/beetroots.go b/level/block/beetroots.go deleted file mode 100644 index a53875c..0000000 --- a/level/block/beetroots.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Beetroots struct { - Age string -} - -func (Beetroots) ID() string { - return "minecraft:beetroots" -} diff --git a/level/block/bell.go b/level/block/bell.go deleted file mode 100644 index 64a3478..0000000 --- a/level/block/bell.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type Bell struct { - Attachment string - Facing string - Powered string -} - -func (Bell) ID() string { - return "minecraft:bell" -} diff --git a/level/block/big_dripleaf.go b/level/block/big_dripleaf.go deleted file mode 100644 index efef598..0000000 --- a/level/block/big_dripleaf.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type BigDripleaf struct { - Facing string - Tilt string - Waterlogged string -} - -func (BigDripleaf) ID() string { - return "minecraft:big_dripleaf" -} diff --git a/level/block/big_dripleaf_stem.go b/level/block/big_dripleaf_stem.go deleted file mode 100644 index f55e4fb..0000000 --- a/level/block/big_dripleaf_stem.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BigDripleafStem struct { - Facing string - Waterlogged string -} - -func (BigDripleafStem) ID() string { - return "minecraft:big_dripleaf_stem" -} diff --git a/level/block/birch_button.go b/level/block/birch_button.go deleted file mode 100644 index cdfb364..0000000 --- a/level/block/birch_button.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type BirchButton struct { - Face string - Facing string - Powered string -} - -func (BirchButton) ID() string { - return "minecraft:birch_button" -} diff --git a/level/block/birch_door.go b/level/block/birch_door.go deleted file mode 100644 index d9480f0..0000000 --- a/level/block/birch_door.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type BirchDoor struct { - Facing string - Half string - Hinge string - Open string - Powered string -} - -func (BirchDoor) ID() string { - return "minecraft:birch_door" -} diff --git a/level/block/birch_fence.go b/level/block/birch_fence.go deleted file mode 100644 index 91988e3..0000000 --- a/level/block/birch_fence.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type BirchFence struct { - East string - North string - South string - Waterlogged string - West string -} - -func (BirchFence) ID() string { - return "minecraft:birch_fence" -} diff --git a/level/block/birch_fence_gate.go b/level/block/birch_fence_gate.go deleted file mode 100644 index 588ff67..0000000 --- a/level/block/birch_fence_gate.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type BirchFenceGate struct { - Facing string - In_wall string - Open string - Powered string -} - -func (BirchFenceGate) ID() string { - return "minecraft:birch_fence_gate" -} diff --git a/level/block/birch_leaves.go b/level/block/birch_leaves.go deleted file mode 100644 index 64e5f61..0000000 --- a/level/block/birch_leaves.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BirchLeaves struct { - Distance string - Persistent string -} - -func (BirchLeaves) ID() string { - return "minecraft:birch_leaves" -} diff --git a/level/block/birch_log.go b/level/block/birch_log.go deleted file mode 100644 index 98efc5d..0000000 --- a/level/block/birch_log.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BirchLog struct { - Axis string -} - -func (BirchLog) ID() string { - return "minecraft:birch_log" -} diff --git a/level/block/birch_planks.go b/level/block/birch_planks.go deleted file mode 100644 index 0f43274..0000000 --- a/level/block/birch_planks.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BirchPlanks struct { -} - -func (BirchPlanks) ID() string { - return "minecraft:birch_planks" -} diff --git a/level/block/birch_pressure_plate.go b/level/block/birch_pressure_plate.go deleted file mode 100644 index 1a58b33..0000000 --- a/level/block/birch_pressure_plate.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BirchPressurePlate struct { - Powered string -} - -func (BirchPressurePlate) ID() string { - return "minecraft:birch_pressure_plate" -} diff --git a/level/block/birch_sapling.go b/level/block/birch_sapling.go deleted file mode 100644 index 297ba9a..0000000 --- a/level/block/birch_sapling.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BirchSapling struct { - Stage string -} - -func (BirchSapling) ID() string { - return "minecraft:birch_sapling" -} diff --git a/level/block/birch_sign.go b/level/block/birch_sign.go deleted file mode 100644 index 7a8be7b..0000000 --- a/level/block/birch_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BirchSign struct { - Rotation string - Waterlogged string -} - -func (BirchSign) ID() string { - return "minecraft:birch_sign" -} diff --git a/level/block/birch_slab.go b/level/block/birch_slab.go deleted file mode 100644 index 61acb28..0000000 --- a/level/block/birch_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BirchSlab struct { - Type string - Waterlogged string -} - -func (BirchSlab) ID() string { - return "minecraft:birch_slab" -} diff --git a/level/block/birch_stairs.go b/level/block/birch_stairs.go deleted file mode 100644 index 4e151fa..0000000 --- a/level/block/birch_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type BirchStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (BirchStairs) ID() string { - return "minecraft:birch_stairs" -} diff --git a/level/block/birch_trapdoor.go b/level/block/birch_trapdoor.go deleted file mode 100644 index f08df2c..0000000 --- a/level/block/birch_trapdoor.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type BirchTrapdoor struct { - Facing string - Half string - Open string - Powered string - Waterlogged string -} - -func (BirchTrapdoor) ID() string { - return "minecraft:birch_trapdoor" -} diff --git a/level/block/birch_wall_sign.go b/level/block/birch_wall_sign.go deleted file mode 100644 index 98b1873..0000000 --- a/level/block/birch_wall_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BirchWallSign struct { - Facing string - Waterlogged string -} - -func (BirchWallSign) ID() string { - return "minecraft:birch_wall_sign" -} diff --git a/level/block/birch_wood.go b/level/block/birch_wood.go deleted file mode 100644 index fceb7d5..0000000 --- a/level/block/birch_wood.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BirchWood struct { - Axis string -} - -func (BirchWood) ID() string { - return "minecraft:birch_wood" -} diff --git a/level/block/black_banner.go b/level/block/black_banner.go deleted file mode 100644 index 32f880b..0000000 --- a/level/block/black_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BlackBanner struct { - Rotation string -} - -func (BlackBanner) ID() string { - return "minecraft:black_banner" -} diff --git a/level/block/black_bed.go b/level/block/black_bed.go deleted file mode 100644 index 03d589f..0000000 --- a/level/block/black_bed.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type BlackBed struct { - Facing string - Occupied string - Part string -} - -func (BlackBed) ID() string { - return "minecraft:black_bed" -} diff --git a/level/block/black_candle.go b/level/block/black_candle.go deleted file mode 100644 index e5f3fa7..0000000 --- a/level/block/black_candle.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type BlackCandle struct { - Candles string - Lit string - Waterlogged string -} - -func (BlackCandle) ID() string { - return "minecraft:black_candle" -} diff --git a/level/block/black_candle_cake.go b/level/block/black_candle_cake.go deleted file mode 100644 index 86c781a..0000000 --- a/level/block/black_candle_cake.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BlackCandleCake struct { - Lit string -} - -func (BlackCandleCake) ID() string { - return "minecraft:black_candle_cake" -} diff --git a/level/block/black_carpet.go b/level/block/black_carpet.go deleted file mode 100644 index e9ac59d..0000000 --- a/level/block/black_carpet.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackCarpet struct { -} - -func (BlackCarpet) ID() string { - return "minecraft:black_carpet" -} diff --git a/level/block/black_concrete.go b/level/block/black_concrete.go deleted file mode 100644 index 86a3f5d..0000000 --- a/level/block/black_concrete.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackConcrete struct { -} - -func (BlackConcrete) ID() string { - return "minecraft:black_concrete" -} diff --git a/level/block/black_concrete_powder.go b/level/block/black_concrete_powder.go deleted file mode 100644 index f24ab6e..0000000 --- a/level/block/black_concrete_powder.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackConcretePowder struct { -} - -func (BlackConcretePowder) ID() string { - return "minecraft:black_concrete_powder" -} diff --git a/level/block/black_glazed_terracotta.go b/level/block/black_glazed_terracotta.go deleted file mode 100644 index 0e6b240..0000000 --- a/level/block/black_glazed_terracotta.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BlackGlazedTerracotta struct { - Facing string -} - -func (BlackGlazedTerracotta) ID() string { - return "minecraft:black_glazed_terracotta" -} diff --git a/level/block/black_shulker_box.go b/level/block/black_shulker_box.go deleted file mode 100644 index 8923942..0000000 --- a/level/block/black_shulker_box.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BlackShulkerBox struct { - Facing string -} - -func (BlackShulkerBox) ID() string { - return "minecraft:black_shulker_box" -} diff --git a/level/block/black_stained_glass.go b/level/block/black_stained_glass.go deleted file mode 100644 index a539399..0000000 --- a/level/block/black_stained_glass.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackStainedGlass struct { -} - -func (BlackStainedGlass) ID() string { - return "minecraft:black_stained_glass" -} diff --git a/level/block/black_stained_glass_pane.go b/level/block/black_stained_glass_pane.go deleted file mode 100644 index c116586..0000000 --- a/level/block/black_stained_glass_pane.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type BlackStainedGlassPane struct { - East string - North string - South string - Waterlogged string - West string -} - -func (BlackStainedGlassPane) ID() string { - return "minecraft:black_stained_glass_pane" -} diff --git a/level/block/black_terracotta.go b/level/block/black_terracotta.go deleted file mode 100644 index 2a1b731..0000000 --- a/level/block/black_terracotta.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackTerracotta struct { -} - -func (BlackTerracotta) ID() string { - return "minecraft:black_terracotta" -} diff --git a/level/block/black_wall_banner.go b/level/block/black_wall_banner.go deleted file mode 100644 index 35de5ab..0000000 --- a/level/block/black_wall_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type BlackWallBanner struct { - Facing string -} - -func (BlackWallBanner) ID() string { - return "minecraft:black_wall_banner" -} diff --git a/level/block/black_wool.go b/level/block/black_wool.go deleted file mode 100644 index 511265d..0000000 --- a/level/block/black_wool.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type BlackWool struct { -} - -func (BlackWool) ID() string { - return "minecraft:black_wool" -} diff --git a/level/block/blackstone.go b/level/block/blackstone.go deleted file mode 100644 index 6161828..0000000 --- a/level/block/blackstone.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Blackstone struct { -} - -func (Blackstone) ID() string { - return "minecraft:blackstone" -} diff --git a/level/block/blackstone_slab.go b/level/block/blackstone_slab.go deleted file mode 100644 index c0a6ffd..0000000 --- a/level/block/blackstone_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BlackstoneSlab struct { - Type string - Waterlogged string -} - -func (BlackstoneSlab) ID() string { - return "minecraft:blackstone_slab" -} diff --git a/level/block/blackstone_stairs.go b/level/block/blackstone_stairs.go deleted file mode 100644 index b559be8..0000000 --- a/level/block/blackstone_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type BlackstoneStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (BlackstoneStairs) ID() string { - return "minecraft:blackstone_stairs" -} diff --git a/level/block/blackstone_wall.go b/level/block/blackstone_wall.go deleted file mode 100644 index 5ca4006..0000000 --- a/level/block/blackstone_wall.go +++ /dev/null @@ -1,14 +0,0 @@ -package block - -type BlackstoneWall struct { - East string - North string - South string - Up string - Waterlogged string - West string -} - -func (BlackstoneWall) ID() string { - return "minecraft:blackstone_wall" -} diff --git a/level/block/blast_furnace.go b/level/block/blast_furnace.go deleted file mode 100644 index edd2041..0000000 --- a/level/block/blast_furnace.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type BlastFurnace struct { - Facing string - Lit string -} - -func (BlastFurnace) ID() string { - return "minecraft:blast_furnace" -} diff --git a/level/block/block.go b/level/block/block.go index 3c795f3..c10593f 100644 --- a/level/block/block.go +++ b/level/block/block.go @@ -1,28 +1,62 @@ package block +import ( + "bytes" + "compress/zlib" + _ "embed" + "fmt" + + "github.com/Tnze/go-mc/nbt" +) + type Block interface { ID() string } +// This file stores all possible block states into a TAG_List with zlib compressed. +//go:embed block_states.nbt +var blockStates []byte + var toStateID = make(map[Block]int) var fromStateID []Block -var fromID = make(map[string]Block) func init() { - //regState := func(s Block) { - // if _, ok := toStateID[s]; ok { - // panic(fmt.Errorf("state %#v already exist", s)) - // } - // toStateID[s] = len(fromStateID) - // fromStateID = append(fromStateID, s) - //} - //regBlock := func(b Block) { - // fromID[b.ID()] = b - // b.forEachState(regState) - //} - //regBlock(Air{}) + regState := func(s Block) { + if _, ok := toStateID[s]; ok { + panic(fmt.Errorf("state %#v already exist", s)) + } + toStateID[s] = len(fromStateID) + fromStateID = append(fromStateID, s) + } + var states []struct { + Name string + Properties nbt.RawMessage + } + // decompress + z, err := zlib.NewReader(bytes.NewReader(blockStates)) + if err != nil { + panic(err) + } + // decode all states + if _, err = nbt.NewDecoder(z).Decode(&states); err != nil { + panic(err) + } + for _, state := range states { + block := fromID[state.Name] + if state.Properties.Type != nbt.TagEnd { + err := state.Properties.Unmarshal(&block) + if err != nil { + panic(err) + } + } + regState(block) + } } -func NewFromStateID(stateID int) Block { +func FromStateID(stateID int) Block { return fromStateID[stateID] } + +func ToStateID(b Block) int { + return toStateID[b] +} diff --git a/level/block/block_states.nbt b/level/block/block_states.nbt new file mode 100644 index 0000000000000000000000000000000000000000..b47edb99199155ba27a3aa99502ae8b75a1ef0a2 GIT binary patch literal 82577 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

KnFZD6}aWX&<&` zB(f

LIpfC^Qqz&i~4bHU3kWPM5Sgfu@D(-tl@@0(2{hgiVW0m}IN``uftr-f< zM9=N7#H}8GpT2+W7Jau?BX(N0>LhN$9njO#bwhE}?g5_`uR4pHb_evdblqUww0poa z@fo`%qn`J@91orrp0F1uLEr5q2Q7OvZimvRSmCOu9SE=l%ohWUaD=ys?IxSjv94Fa$@U-xR)i^14Ku=58UB*c{ z9y~2PVJ}X~9nhKdoShX;x;MHh9d9(;+@*LtzA4|qZEXDx1k42BO~=-c$2a9WIFGI0 zfdEUu+~$hkdgHmR>xrC}tolt)XkKoXZa8*Ywr(>{y7Ay?;i|tl>4sycW$U)$q#F;; zgv%|3_Uqg@v8jhWoop2Z*-FWb{aNS&dbi=XJvJMZf%{?d`Fl z^i6RYU0JK9$h=v*hUTP2-FlMl8Jdx1jq$gkF|O{BZRm@Zu#Bv%T}xoQD_SCR%A#^D zfd%El$n=BOe-es(T(54otKDgR*h#y8zxv(gc=NO0O&)ZR);dvdtX1$KYIT0uwGw1AN}n5Vf`T4MXT?&tNW`2MXS&4dsyA?Pp8$?LeaDL z`_*>rR_dYX+2?cUGx+9yebviPtL>+o?_Qpt*M})?Gz7<&-KTTe&rgbt((s%0-wn?Z zWWhp?_y?g~x0`b!vd}UYaioaiVSilT-n|^3vd{_^a>R({^LoGgmW7tNh$BT6KdrXg z+w-^_k6CafE0dVp)!}SJpER2tx{NnVgqdFX;jllgPMiJi=4byr^=C9SgFD`>cDw5q zjn;l_So>4M+Fv!S{dL3Ie`#3zuMKPetzqrIH>~}S`nB&qHZ<0|j}4vm?qfr1z5CeE zTkk$LG}pV2E!`E89i5rSJxswES1b<6u2>wBU9mVMyJB%jcE#c_%N2{mFjp)N(_FDQ zjC1+oc%Exkhk>qH-O^<7NY`Muv{^jV<=D}=S$W}6FxEAzL&|GbhrzB{9a3JiI*fMB z>M+|itHW^DtPay%vpS4-#p-yztCoiWuUg*JZt;j$p*J;LJmeMV(Uf1kGQYfZE*SL6 z03rF60m8Uf1_%YH3=oFCGC-L7$^c>XD+7e-uM7|jpe{h{0ksi=4b(#Du z(_XVWOnS}gmL`iQyav0a&Em-}$Bw2ty1;(9#9uJe#Y;o7i%y8+_c!JBmw^W_lyrt^Y<}FpHHfw2OYBSfWQ=7TAzM&FRn~7WBQi-X} z!qunt@?Lk{)aET!lbp9yo!Y#mYKrrgs#BY{RGr$qrRvn?EmfyBZ>c)9SxXaBo4Hn< z+RU}}4V9SMOx*gGN=$7QZZx%5FP!rNgj`n!2nnwY5azftKuCRMfH2dQ0m5Wg1_<+A z86Zq~Wq>g2bphguuZ_^!i}8EewH#WzF@9IOmP2zthWEFl&HLrXw7PS7-qPR%#i$|c z#Y@BV7cUKYE?ycYzIbVv_2Q*r%8QqV`7T`=Pj>m*Fw^C0>l-R@F3;-Yc!JA0H}q7P z+UQc*c)w`D+*T|OiLO{2X18K-nBI!TA=ed)!vt3>4l`V_I81TH;xNbMi{nYISsiA% zW_3%G#q(T)-O^_9{=6JJ+M!2gQu-XD5n#wQ8y}*Q!&TxmHbd=2~@%GuNt9oViw=;>@+`6lbngr#NqIVv2JYt5cl2xS_QY zQ=E(3&|HZr&O?r-IQq2K>*p8?X1H`^NOS4RFu$cMLxM|JhS@D$878-MWtiL2m0@a2 zSB9A_Tp3Sn@zOA_#Y?N(D4x|~)apix=d=(tn$q|@efd0b!JL+_4Jj^P8)mh9ZAfzY z+Ay!>Ys18ruMIO>zBWv4`PwkI#cSiqtymmpw_;r#XW^W6F{Pa*g(D%6DF-(Or6fqi>kO$3pNzYgCFFn&t3JQYyOqjKLC87eizu`u5f6YfQ?MQXPlqr9KQxO?4QNov7!= zPh^y5rYZ){N?iz+k*W|P8-E$5=W-`|c`hm<@J!SMV0owrkj}#8_Qa+vI6NcuVOURWjZYC`ZVR7GHUFeA`c{YAIqyjJ_T+C3ak`(5~w;OHcL|Fk)- zx96kuBO|=~my$@axIWut9{o46E?MmMFyy~WlJhd0HeEymW4MmMFyea6-fhiBqv z_iOwLljDA^A8=Z*?l1k2d8Jvd(a>qp31e|l4aZK));+~VH5xiCI$Z5cFYWAE=e?#;U4rse9k(hZnb znI#&GoR*yM6A#U3=(K3vN<1`!k<*eB9^#=H4b4Q$or0r-xk8(w!EVBROv(m>o5InS zVk<|Zo6^C~Vk-xOo5IodVk<|Zll0TK^X(h2TZZY^DgP*Z0%gDY-1IZ_rJ)$9asE5; zYK_LJi68tf)j5^^lKt-+qcLi%l+pJZ9iI;`_v@x=RzzdeWC<$biNxKVe`72oS@enkI`dg zjhgPiUv`h@AA>(`S9kIkvh{m?ug$z78lxr)TM~2(scvA2)bd9X{W-?w+dRF?zDV zRS`u7MTx6Ia+0DZRS^Zr9w8Y?R_N&Tarrz+(-4;jW5i^M%fpG(iTakuq_ zawd3`!;K5fpQ0&U&9MF}Vj%7_|mP#9L^HQfe*tD}mPit1N~{Guo^@A`g50PQaH#Q%_VxW7K3LRKyc$6xFW?$O($FRKybm^8(VB zbwyuB9$$T*ZtjS;p5xW|tMBuQ-Z~m%3@867NOW8IcmO+r$amR)vDsa|BaXhs>le@a zuj}&)dOUrt`EGwWJ)M>8pVzzL$q6#rGmZD)d|L0$cj7#rza%Uhk2329IJSn4H?Z+k z*aMMr=vKrlK>CB8)l16Tl1c!15{IKZBN7E&V-Lu&HIo`I-(%o8i)cVOiwqBu(W@GE zMuGjAzM1r1PqNvA!OF1Tb}srSS4x zTfbc4(I2J`jTIsQErF1XnhJX$j*3zx9KH)xAHwK$?Qk1E_~l^_JW)U{Pvo-)o~&PY zKmzb8;1wSIfo6~^9qBA03?89i!z1n1-!zeKj|x<7ae!Q2 z)h<@o0gvJ*n={6{Xb1Nu7!O>&t8~&IrrC@2b*SH{CsjUcHy^z}IDXz2`~t8GpeP_0 zC=%KQP*$)%A|bdH@d}XsKwZi;^0BWgWdb}%zXh2gSBBQp#9*BhCR>Uhn`oq+xy{kw7c@l@C+Xmwbk^Z1->;XA5i+Q{K zexr!S6O+i`5b2Z!><&l(sU~HB7xmy4g#)5Xc$HE50}UZlI6T>w)43Up_re`YDB-U3 zf$?MkV>m=QO?^E82_QLxvBC}oyuzbDOdW~_M3;~RO&O&>s0xQCp)+W`wD_Cwb?wu) zj)Gqyc7haTK;=kAIM6XSCI4vYFMrlgK5ef2u(xcqq7g_s4H1c zW8+^bQzBkf6Avki$q+GlwN>`PBn-!5UP00yrrBh8zmkNIC2}~pbv~{j=?|*P zKA3VuWGU0H4nU{N_i#i@A||OJ6R)gchSU0oh^ED zfwAV$-DOjCGtM2CLt$-3I>!#DheO7@%ck()(>1}c@uENGV7CY#OUtl%x#`iYpG9A? z8-4i?{^fKlu1K|;-h5n9;8ww;P#x#-NzKIka61bYnVufPTY5s8PjzR>yvFos{`B0p z#ujd8!6MZb^5wbd9M!700JyVc(x^5U(Q+ST4%}HX1EYtMIdEnlX&0$7L&Ij%-StNUU*!8qbQLQr5F&QtMOU@P)mO=A$ z(<9AAF3(k+rW%2V<^7O}jyhEIr2jZ`tfM0xcJMG@GqE~fkm$U6z2nr5;sdGjcQ|$PihwC2;5t;NcQv)-`Eq> ze71Xw=5?k=^QY&|b+&+eOBUI-pfAr&zS*p~0J*nlQmJ+r@$w&Nj@(-`MK6E#+`H5h z6K%3uWK&@G6LcGJcgaLY-E)u4-`w5=!jesYoJa01+8k=A=zQevqD8)^hkZ}e6xJ#= z9h31gy2wu`F2m*-r$?HdT%M~tX*D7b%R537A9c3q$pyxmLwA==)y1ByNrcg6bV$yN z>Gl?%&=$~Lf;}8t*XCnsjhs{QOZ+VU77f?e({;ci*?x-ifzvgvlS~@b)*hdnF)}o8 zZ^GgD%Qcp~@$!d{Jf!$BgZNS|n6CHKuJvM)HdlLvtHvMrPxw~j{sG*|sk-Li) z`JNv3Jxx@fIk&(s&rN39L3aUm zf8nH5?KNVy#DH_`{=zAK`D^X|C7-xxbJixELN9OvZ-WNNCPM1&d>n)htxhm3<@CpS zY=Cfc$ic$%u>rzG)~AQPPvaEWDmfjK@#?$KVJI>~=Xs|`n!#M2t39DLVh_u^f)gWk z(&))W#+-u#q*ImACvy^FG#nk0^Gdu&yH9wFXfHt@jxBHb@18ch$Mwzo?fTQ{!_E7r z)%MfPcQ4P+>%)he)Ys4r**_n>e_rpz*Of&#=O2f!D|^`Q5AwBm7Anc7FKKgv9ot<; z6=`-;+k*SuVe|OpU)&j3SaoM`Vdb5{we_~tm(T8Y|8;@cm8iB_zBgzXA_)sCuAO6B zZA)!MQx)lL$np%Vtrv$2D{qtDmiqF(nmg}ab|L=fT_0FkT!xCv@l`K(!xc^CRood^ zTW`PFEt1<(-X^^*zNDypz8S{v#r z`bp;4R9m0o8B|ndXJAdSxE$MR8*q6`&DpW>o==G{+MrijT~K9V87M5lw$=t%(Z)`N zok6wLcC(5ivA7)DY8!C*_{`ZcYvlSI+n}~q6sph6$^_e58|o^iN8*}l>r*^~YO968 znqqM|w$(P^^6{B*DC4~z+-cSYRFsur!m=xi+6z@oj!#i%KuxXPrnN+BLs?t2Ho)>( zov~roO!W!2F+o+eL0x85X4h2OP*c%L64ugMU(^{;Q!5PBl8Q^PskH%?xA2@VrQh2D zo>x6UWl>{HSaz>!+6h&RjZaZ$KuxXPX0=3WLs?t2Ho)>(owMM$nd%d4V}hz`gSyPB z%&w`lp{AmhB&?;izNj;xrdAlLB^8%oQ)>e(Z{ZnVvfj&yJ`6Yh+>*;1upMDVVYyh5 z;*PMgvi)$y_;?j}2G-Wg$F?ZVGq|ww&fwa5`}Ng~CG)mwNHcc~iE68b!NQ8$qPC^B zqN!w>O}!0So`Ho`cLvv#3rw@Ew*{E@)togO@9h*>q>Xx|)(2J=m!aZvY^!a-70v8b z+!ymhAhv(!m2xiYsv+t+1A?v%=>E2n)BWRnzu+B^-8S|tSl}=#pT#m+kz{a*{irS zu(sZQo>3$hm}XmV3oxIeIcsL^+>mA))m96Gb(&q7V_R)YZN(5tU{h~HmS|>0r^3#lnriz^ZHd^H(zd8=!R0eM zW67+e8ggudqAF{n`pm3Mu&K4BuA-kLuBEo2ursKpS{$q;7MNpGZ3`}MMHt4;#z7O3Oj>ps>Q)tVu3j})wbaBMxJpf>ph@93*UeIusVFc-LF31y1awi z6oU6Io1>Uy)~kZOwd!3zI#A3@q~uvaPviht1eDZ?L9ha}SZYwqhVK zu*fZn+iEP@OD5aY+?4AXU|^MJkWIwbde&-&}7@1+o1VO%~>{U?WSbgxVB;-u-h!lOxudvYAi-dLYtbK zay2H4_M5STY+bAO~pNDxI}PUiCYx6A@doYv+20Enlf#} z;wo(8dd;v*v#GbOzM``vvZc7Gz%#g}VkEF77@BEQaV7HipH}yq-Q&&hKGMyHoA>{< z`m(FH*CG{_hqymF(zUjQ!;CfGj>)wqA!A6|~P&)e1R zBui3=P3^P@cqE*745{{34nn7}<6Kd3zpl^25^1Nu_bs{wPS4@0P6#v7>9Edar?472 zJ@=}e{@odVEa-?nf%w$j0w*fCx?AYua|pASw)_N+X`ERs%(nhQ^X=F#a$WZelvJJ&>xH~zD?cnh7L16H0OX2jEB zOQ}cUXP)gqwYShoF|hU){P-Ml?kxCNJ^dTpdlL+5mq!4j>rD@b7nJmHctuH%fYm1m zx6}OuI9xNB9?t2f1Doql4L9J^qk`A-1Cym*(7T`~=iUXKN_}lR{on~>=8QKcVrV)a zbYgZj^gi$or6+}2?&&#X?fJ|TqJ0ssU-B(<;sUI_1@BOM3qDp){{~Oq1Y@4=hogEp zKH;gSTY3^$eS%Q&9m;Rw)02H?pQ6sc%#8Gp|7`ERd~`apYxOB;k$76PlzJFG1=dbH z4#l_N={aQe31db+9oD`46j;Nj=NxCBAaN&tLQtoVo}789Hyl=X?jeW_{HXnDRrmUj z80xu)K%w;~5S2lcf$^W+6JX-gla3BRkXI8hJ#l$2b9mIH1u3vv0eZ4m5Bz-fxW4(> zKTpJ?8wZwuKTHS-LERw{kn49zs#?rJ4m8?7M@=Y=l^c+w)^|f zGH>r!zuO#de)c;p@VM@Iv)!%^iG|;47yiC@;g4Ter}bgGe|%g&(0lmrpH|yXH$Ok^ zpFiAucYInsuWvpaPlwg!@#z%qkr_LeQWN#mDDik&Z4O5%kpWVp`yrB}T}%97v)io? zx7+n6KanuZw9Fp|nFrTm;y}|vf7rjAJKMRQD9p6X9|uV1dcr`N(C_c|r_=t6uM0VW znnGc|zztVQg~6I)apqvF#o?NAoqXx4wl3BrQN7&B50}+;c8|pG2lm(_bwEr@)D5Bo zB%f54Rv2blX2Kb;I&q+Bp}H4gb;2;yG7~O@)rkXTLZ$O*uhhB=bpkbo!hC^yk(3I9 zHO1o0!B&gIHRZxQ!d44|HO1nL!d8pJWpdfcTydx2nycewqz-^-fvP=pK;)%lIYmLH zMe44ARSCmP%T(o*&g2GgK5e{*@1m7L7|#bVV+=Xg~6I)QPyBI)53y=H>NEcaEq1Zhd=q*xY}e-c!^Cgkya|JB#kx2xNv?)STg&1tjWt+sSu7JWOB zxby1oL%_rOdA&NFzxwF*e*fjm>KtCZKkY{&INuHSjXmCeOPS~!oL{o&8~gP}Ob~1K zRZNYnX`C^QBBOWh6dAm4tH|hGdqoEC*eo*ia3eOR6NRh%O>mX_r`2ZH%TfBp6)n;) zFz=3japT757nS!!LtNQx{Tf0>=FZWRGJmJLW8`i5GDP-7|u8{k%XvgyDus@#G z54W59wcN4D4-1s63VX4VRbe-lSVcw|J^f|%_+>Tjis3_LDy&TrJzuj-H zz6$df&-<_Iv(lN(=O2Z5`@7@%@Z0s(hZ?3xvPXr%l!O{zF40DZ8%jwa$*De)pd`*t zEu0!c2~ym}S~%555|m>9Yavt{N6_KE*+Qr|5;e0Ji^#l=PcPfgXM4Ka|4zCuE$01O zwpR36*<#)hWozTwm96ASE?X<|9GwNeK5b6x+v053L=ZWz3Bfa86Cuuj&3ayinh2s6 ze;u7w4y)Z`MKP*Eh-y^D;N_?a5!a(C053>Y2vLz}D}CNVt#_wY`FzyH5H+a_!i!QD zBd$ta1YVZ97@{t}43n~b{Yc+=*ZNX1E!AN}b*kg=0#%2JYg8SCm#I38s8lqC-`3mn z=dH^Js49f0P*n_GovILVWvT-3s#Jv#6^Y)O*lxa5Oie`qQH_cSycQJ!;!0F3=XIzE zkgme>X7{;#Dk2KG0n$~-jgYKDZh%A;a+fEokQ*Rfg~!9{TT>Ns1Ei~v8zEVR+yIFx z+2E@Iur?h$~UEo|mE~ zLb?`@hxNLx7TFQfwa5;UtVMQ&L@lz{Cu@-%LDb?e!qt-3H}Q(E@RqL^btn(Ot5Ci^ zu0i=~UV-xUBLDF?ZCCddFZOC8h#J&{;8m!J5Z9q*J+DMf1W}9VUbEr-j>qll_vfKF ze`(fXb$|ZirB&)ZCXvtjKs>7raoFAY^>IXo{vo)y!c>I3oYG{j-~$%sSm4@RFA7_JbVKQ?-QSf9>62XOQLzgAz?H_-*b@e0Y+ zA<>%|ba~+FnCMQp=!NmsVG-K+O7QBC=-W#!xAa&CT=vY?0hf*5)d5#z^}`}2m#xB8 zoJh^M2e>*Uig7ssUL6osXgCL0M+{bRbwu==7Ox&~^?ZzRnS`q&qLJf$a(n&^$;0^r zA=EC>sZX?vJTmH1*){Uee+nL^G><$wq9A%m9{IO%-194Hl5HHvI?6bXb&NdjN{@MT z#FDj{j2h_{-6oHWBC@8F$3<1=y=NTATTmVtO;+5A@~{|~H6$JQ!_5!BIqaX;htp<# z{BR>b&i21UVLz|8&+;m_{2W`>;o$>pS%-&Du4Nq_e%U7L@bH5+S%?4YG@n_A|6AGN z|6X?Ze-s`5?qm2-qa5<@K8A0K$UDBQu)o`0q4r&(r}!7bB9QYZL{H}%tIh{Yr@RgjvR@e>l%piTPpuN7 z0Cf_g0Cf_6)hZzhP$wY@P$%KntrDUDbrPZga}sEpqRqs^dUbyH`{nL+t9Mv!#pl1H z4bWtGPdaDk|>n4B^G4(e0OUUP9+i~TcLzYZ5U1_D&|$U zm9VLf!|BK}g{~+eQyImk5}L1tN@f&Jg`LdEU`kk&2jB#vPew<^Rl=Ym0;dpNXNV1@ zghNdTP9n-^|ba5%EhDbK0(3Y)~3LHHUT{vzB#_6&s(xNy!;|Eag%*>d_kXg zWpi}NzH@j0?cpW= z-ti@U)}8?Ro#PAoqW|SNE7}hB=>FF5l05JI*66ZxMCZ4L7vy4w0vH$+D_L>82J z(>27EjJpMvgjvJ&B-|^oAe`>w*6n`3$dYohkDDoXi!3N7+pU#xx4@Ecs@<9i_X<1` z{>Ah8HyyX@*E@=*+wG#8RgUY`?QlfKJtiM+`b4{;rrs7>O|2!`6}50@d5^5MM7yFE zZes62Z7v$!nj8K2%H@Md%5P4wTRktdr`G$!@F}13C$}D6Hm8ifvsM$W=*|AS)t9^d z{`R-z!wa z>bv8Y^Bo0!Xf?-*d2LsR$4=?`t~FM~i&Zh0U2_#HLPe~2<||@F&D9($=EXAK$SXS* zO>6WK+UN6k+MPcTGfo&C5V_3j&!F9|HiyXtqUY|<^Lu$t+_C=t;jnrfej{yK7GX{= zt+y{Fk2cUJVY+J3tE`Dy=r{wT)rY4v>mr1tq&-d3+a43fMPDEhd< z^M1QIKD~Ys!1?R$Ewe><+yOl;T{Rjn z<#_P4aNS?Llslj^=^0xrpmc9^Q##&gxXVfLczjd7gWK5p9SE2Sz?+V(ACGU!cW@qC zzXJi50Jh7}_I2z=E#G}zPw2F0-En$i^NO>KC&i@l`0zQ7(?@v#+m!GI!?H-P&^IgNY=evoa_u_THPs>-m$29>?4ALpk?Z-6- zUKG+vP(8>s2TlyqDbQ`mH3wc4SQ6xRWC2H9go2p_Cs(phj7}uXM0i<~oe3`%W-6Q< z%Fcun2{RF1Hf3kRiv>%??B0>z>eFHG#*^TWpO&xNlV<{)7^G8>@FmY2cu`0vLANB& z95^vZry$`)o;mQMz><)&aRVn|5ejA!oLq^Y7-SlpNSKN6vL-tdUM$R1I60J^2`3U} zBD`$M&V&~WmWsK(8^4dnee2jAJ}q7~r|$T?1z7fd2&5CBdy;1coEW52pqi0q27Cyl z6QFyLX9k=YuoTFBigL9PoPs47m?`ivBkqPW2|gUmG&nhuod+ipW+Hry$&$ZkpU-zWBlPm9-GsW(3F0G53p0_g-K?8q?#P7Km1(4ELJ13m=O z2}oFwV+NcUuoTD*ioXvo!N5#`j~Q_{lu7X6V5Y&zk?cG;kuVeCV@!4)d^nhCaB?R* z4^AXlBG^tv@kep%QuO0YU-rl2xATpQueUGW9nN1548Mu76+A6mbtFIO9`I@Lx()fM zcfn7~SKY@?y$5_+yly#u>Rs@ee7PC%_B?-lQ@)4w*k?Tt24)Ie{Kw9L3k5R?9yVm> zz=MIA0v9i`bKpXOC1G~|$M3vp-GXuX&fsa`x(B&Q_kd4}PneIJdKdh(eBF24)O*0E z#U~8MO}z^~lb^HyLdy5YH|2X+4>x_801pOc3S9ih&VdUBGYK9xWaq$xftdmqFS2vs zLV+b=ZVSfmqw(GT^~FxhRvoA>I4?U(x&wMzx^6sf+CAXY;#J3S)9!$tmaZF(n|2R) zCSGnjl&gM7@$T@Zcn8PfekbKS5HJ(qVLNsPJQ$cMaBv?x0}cet1bA4GodFL9ECp=a zp*bMC9msjF*A+W0TeqIB;JoTA=?>^==?TyA((VDD7O&flmv#sAwDg3}cxm^5XX52< z!`bQF;Z5-lj>G*<%6A}OCcwjX>Ct*tSD)KyizY z_Qlf=oBd&_-w7_jPRmxU$4$5cdRn^fId0lL;M3w&yK&R*fS#7F`;41*4|pbC?lzpA z&K=$q@8CH0SmY(n&FYO-iY4N(7E;q7_;_@;ah>#@&x9t_MBxcHBq0~ZQr5m5TDERIUBP+PS<)TQ)6x^3cu6GZvzna?yoffSckC$vbcv`sbH(tse(9_aYqw!LX2Tu#v{l!bU z13Hr~_ZYtZ=8bMj#~Y1(V#DK`@*Uj9*6%>TOaR_=Z2fqAQ@(@q*!mp^umsHR>-fDZ zZJR4D-4!}5T6Y{L*?91@@PySkDR)3mOV?e-NjV-oEj(c_PRbq7ne?2U6;8T0x+xuR zG~C>!cs#x--@$Ec{SE}o1mI1_){n1wFOTgUbir<~$xvlGooR+NmO;2cE zZkBF1c3QS>Gfukk;A!Eizc}fJW2a^7w&J8456*& z9L7gC9y~2vHy0n>aO||~gsb@I#)C8AaxdZPYR=%MaJav4Z?1XzAel&chIViq7f4ei$OX9XNSPo|Qz*&` zY^5kvQ!2<2Y^5MjQz*(7Y^5kvCY7D46(~@A3FmM1k40@Sdg6o4+bm+vwJ;$-$CPki;MTgPRrJ<$4j^adRltIbG)>B zz^BFQcH^bp0X;1};WJ*^J>Z%6oXr+cygR%p-obIW(M$Ob1k40@*p8h64+drm9Nfpw zfCB+D0Uj1)XTXC2OTpZJi{D-0y4C9noffScPgiVSa+YyCcv`sbH(tse(9_aYqw!LX z2Tu#v{l!bU13Hr~_ZZ66JfL)MbW=LsXt>Ks@pybwzJuG?`W*O>j|9}tvgOnY+iAeaXffhc*1I&lsllOrRy%^q#O^P7M`#d zC*=<4OuF1$`1+eSx+xuRG~DH+cs#x--@$Ec{SE}o1mI1_){n1wFO90zt zD846d&H3Bt`?-eu@c!pzbvXV0{0o<>&Ea_S!_5!BIqaX;htp<#{BZN**VSo#*zO-6 z*AF*bxFc{{usD@*wWvkBOqZ$pJ7OmTfk7_tJlPxzAo?hmQZOTU5 z3O8{n9F1;DhkJ{y9S(1bM_Y`o9gS{Ehx?4J9S+aL&u*Le9VU+ZwSK^9!MeZnL*|uc zxkf{$MJJ5KMKv5dEnD{#7u9I!wCIGHxTuC>Gud+MpzYUCvVE~l*=SqgjwXep(M{=a zZ?Uz*;Z5;qi?Ow%(M{=apRu*W;hA{0hfq9@-!I~~UF(ONmaDo;KVV*FmS`|?TC#2` zE}GHMY0;{ixM&6=rzPtq;-VQ1%|y!$gQJ7FLYtz&Zo+*`$_9g*!qJvuD@UW7(!tJR zD+hy{!qN6(D@UU<>1@lOIUBp(#c^-e4L2=Ux0PsI2S z8H}8kobV72&1h&QTJ97a9n2Nl6b*J0?qgCm7~B+&wiH`A8r_r*b{1PX7~B+&wijDD z8l6dJTL#71#4Rj;9_~wfJgjz`(;9w9S{-Csq-rK;nK;n2P~AJwN`a_psj69^mEu6t zLUnIID+Qu5sq(z<<40borc|6k*e4qtt|=Gj61H9-uqha47Pej-t|=Gj7`9#@FcUnx zZ{qh<)NNw8R2Rs!NZl#GGI5}3p$UrsD+QvarRwegR*C~n3r*MpSSb*dNzK{8^q1;| zYD&c!1UFwP7Kdxf1-gW-7YJ+$#+ik!7l&)g1v-YU7YNJ*&uwD(tsNfQrXGlCiKT^Se-b~v{2m?usUIwX_*N(!0N<-GNJMu?&3mDpr%lmFK{oCQem*BSe!Z7YH_%x zT$o4LYGJUZSe#MVYH_$sE<2ek?j&xB_=|Ag()sr+*GG>Vmnt#SGF6j+3k9O4rRoj= z*NTKqi&YH*t`&%yma4l0Tq_cmiIwMdCueelHN^s*!anB!fla|kyRa1_kxj`!*RT}> zfla|k>#!9gk(uP#y%fK9pmJZs#rj~TW$KoJ779d7OHFtMS}PJZEmpS)v{oQ$T57@{ z&{~nOOl;1k1|ZfA))WhL3U0(wE)duhjI;||F%sF740H`!F%Z}kjI<70F%p?cp4->( zI}2R4Qe7a^B2~lag2_wDGK&LE3)OuBtrUowmZ};AS}6`REmZdfv{E1{lPb^c%GD@< zR4-IhD$XFdD@n09TvIO4C2YMwU{f&8ENs0vTvIO4F>Jj+U?!NI-8G+Lw^jJ;n|eT| zMe0t`1Cv*jWfljT7MidKuu>puTB`02V5KAh;_@ zu{c~)F3=@xy+B}7FwQJ&y*OM`F3>S-y+B|ln4R4fpAxrLL_ZjPSU=qE)~BcS;r8yZ zx&I9RBBw^|v~1No+=M%zr={yQ;-=jLJ}qAL6gTY-=xOP?y|`)jfM??6cEQ={+~G~} z4vu4=+#Cp)3GlETI|CjJ%oI4dkDUPr0%ig{EXdA)2LqOZ*}WdW8=`T)#l`z#r)BHb z<0aeyJuN-qIbPa5;M3xDyYbTQfS#6~@EI@d9`H1wFO90ztXuij8q4C|<^@L7~)*YuOHm^9#I37GLJYh9X${o&N4p z@*SMV*6%=oC4lWR6yFoK=KMqWKC-;C$>#bmAEY2m8t_(}JGPm9+r$4|Wr zepw*<9RSJQ{du1b`D%9m`U)kAv*^i z49pa`c#)k07YZy1v->}O$4cuKjLUZhPYc&Q$W6Kjd|G_MeB9K#;HTy5zT>9e13oQ2 zVK{E;UGSOwoc$M4zCXSx-@|&i>B|IoFfdc#;y-o{Tqu}H@US5}2ObQ}6u5YiodXvN zED3X4Fn&La@Aj`Rc3QUTKz+e^*;&#Z(9_a&<8jmO0iPDHI*yxm2lTXb-Dupjd%!dC za?_z)^+Sqxhd0GLI1cwaDc^yBnE(&lu`}Soz)XRI``8(9AYdlI!-DJ#craioVA~GO z0om<6&U?MC*lF3i^>hX2RcA?eKu=3gc#fBL5BRir-EO?JJD{hfCw#_By9YcIFLxWx zPUjA9ig$1v?srnY0|7Gu9=2m=z=MIA0tff8GvGkLOn`?4*%|O)z*4}r9f|{rTYRD) zV}ID}4<0`=S_hdHsTvJhCJr<$RQD6KQXpzts%ji)r8v;EP~9KUN`a_Ms@xO!_>mW? zDHUfB_6Y}vYsv+>gsm3{YzoGig{>EdYsv*WhOHL}%mmNwoA|vUb(cwN zLRDV?>x5yZW$JbS)`&%S<=}RwoWLEmSuJtWFqa zT4urxusU&|OsG7EySR`Os3{cY3*3vOR2Zx&7H1B&S{$w^7v>SRS{SS;7H1T;S{yFP zJ$-v#-@Km8Z$8|-|F6}T_08WY-!}GmSnV#iCv8`EH$U9`@SDT_d3`u-*2fPwKYm@E z)`#u>@p1idGs)>3m(d;P9l^M3XioZJ|8looLrC`w%}BGx_{Y!~$1nT+>FM_MS7DFm zZ=yS%_Ph1%v7tGdV>8;aip|k^TXzr7$%|_CCf_?eBhMP)m++(&?nq5|)vbt~1bwWMyV{=G-r{A}cE^ zEBj-r&uyk2;z+##1th^@ZY49hNN_kkPrpfc1k~LS?of{~b;GajBnkJ=RZYzz0zj5g z*ffnTE0@T|x-APEWXF{Y+W#;pPO!0)-PIs+LBnmtdZ8#!}@hgT;tgKWeu*|x&>}g27it+ z@OYH5X1M~+TEAvNqoOf=&59+Wv1QGI2GL=~0OC+keD`LwYj(ZTIkC-{f)t_|3!9x7T-Z`@cHAoJ#;OXC%%7o zQcPM;Ga(&2?r~ARKP*u8g8K211K0g+1=InMf*1gi0lWYr2UY|iCV?;@W`9`=;!6M- z@RfijPkj@!42CCabf7d3+9$wUfjQiEo54tC)?k`fGKE6nP)_qm?A@_&+ zNifYD6;<7tvzrH^VI1y_CP~Se&-*tcEe**vshyf58 zzzZ;B0#F7d=Fuex17h~iBH#>3r zHbPziSl|j^Yhb(uJb}mq9w2K*t|stRpz1|50X&H61PFpJK}Q*=T;LH@Ht+;l7JPju zOEDcZZY0$AhXul3P~Se&-*tae0Sy48AO=8W051SKk*ffw#a`b{pXQ|uh)Ey}h}l1j zfG+@F0?0rRfyx730;IrKf-(k^*KvcO0RRt#eW0;_mIGG+Qv)pmLz9Ih^*j>NPkxV!w(JiJ zR`-G}+h;lO+}{?!aQ%4zjRE}rA_vw4ASQt@AZGu}09SyH67ZM=3tfOG5P84@s7xqh zkd7HP2I|{Gf6p#VA09*4b9>`{{q!E69ZIVg*8ueX8ujVzv)cERpLSo=ec1h>eo}1B z`_>EYv)gCtyYA21FVdd|5E(%4uX3QQfN7Vo=HJ*K2Aq&30cdQW>F>F}@xKLt1jGPn z4CoL*Gl16wAVH5VK^PFTe-;5(fQ}MC27(Ag9&|{66u3%YVvvNM=0G}h*rT9)d+6`k z1nI*=e9!Hz`=iCD_t&UTZ=W?FPx)#0Mcs$pAL_>>AI0ywKX1QCe;Pn!0KI=!|E>;{ z1(;45)%vTuLwsHKtD9%ad+u(WuWygakJw%#J$-oe9nZs`);hlt%t#-RIY=L|dsgZ-Z%C~?T75IQJ+6PYTxtt zr?t*qpHe?0dQd-P`>gm~_vh_L^~V5+4B!Po{ksZa0+3{$pZBLd!yfcZRp<5%vE*U# zb|-&)=l7yF6uw@{xIP5k`W)cNJT&00wDpO`y2nq>(2vd4B+?A65#0o zU4U5t67=X2gaI-8X9likK~NCkK@dO|1Yd%VGC&fd5L7mFh=45kieSQ!w4P={ zI(FRSqI`c?pzH+>9e;kU60T1FH)b~KC6A#}D4~LTC z_S4fL+h^+g?oZpV(w_xD`3DJr_Tvjs24FHetohgXhXKO;*SF6S;JUx5zXkvj5Cb4G zfENG>a24RRSmlXO-h#6M9Fss85VL<40bc;V1dxFs0+k261W19e1SSSa>G}PEv}xSK zpsDoiwUDw8Gz5SJt^l?M8U)Be5CL)!1duf&SAx@Gm(Qtz67h15QU(! zp+f{TBwrEAFrf2{IaNXZjKm%aRJg5VR4B!Po0$d$f5rCKk!ho3l zvk3SC@Fjo@1QDn_;3Yr`d?hGjFnJv}2pRzJK-dQw`)4_D1u!+xB0vs;2t*!qNPrx; zN^n{X_XcT~D=`QPB0LBJ$b#TY&`}0RLKK3^h7J*sg$*JkB^#e=o*s_QVMzb}%JZVX z`h5Sme}CA0JpT0MaR2;ycX;{v?YG^-!`+*^H$NYqzU&Xj`~CClyI1?&^YL!lV;u#Y zC|kl%h%6NT6t*Uk2g4oVF_f0@6jD#j#GouOF&$co%npADQx!pW&=g8PXb7nxbX7=u7E1v?l6vP)OL;U- z79#UQK*5)V)Dap(Y6(rD^`xwfX|LcR(x8APCvag%8W5Qy{uHJzS{O)4B!<$G4l!`k z?k~n^#oAM>`dqR&XP*@U4k;O!S(NP-6NhpWZl@2+O6oDKjDoOfjo+JS-k|NJ* z6#|aLF=Q$6hp<&qRU-SOW*~*q4_*r7!(WQiikKvfAAuo-AAt~AKm-(gStPF_o^0iP zQ)&q>1~MY>qzp+qaqI}GGQbXXuc#tq`S52j6;X#kI^rOdX3#<)8U8|?Ry_Jt#i{Lkd3vA+mr7DEP8KLLxDwmhfUABLXo@NRsgL`ypxP;0IV!O(qIh zBJURsDd31dg{_MQ22v78(5y-)psMHl6Lu*SJm2~9b zaZ-nXBmNDP7DCy$OjXpC82NrkokHmcFNM+&x+*Z+6S(k=b;gfC2yMUO%R=f1je&>= zETJj1o|GY(_6i;%4GLJIo+1s1%n^SIQx`1^q$CnUX-S6|<0c7biJ)cBS%oE$6j@9J z7#*d7oP=^nUFnbmN!chzI?%c=0J>cSZ-Ia#+ZyN=hAbuS5Vj~%5a#KgesX@|xF7{j zA@qZXP#R)7IORuRNa05yMCOM-MMqhhX(2zLZi4Rr?O zB8)-k1T6!al)DUUHNc6mSi*@gge(;P40Jgty+zh%nyHx zj+V&sL@5 z%kKp{q!1dySB0`)(GWT${1{uCW$p>%}DP+G!M_zm@GrPk+ClkoEpNk2J1z}iFs zOSU!eO%RzQ{uH(_f*j#7l$P)mQcp}1rz}b6tM5cM6(}r;q{u80V04s5^2^}^!%L>{ z98yT@})v#ZthJ zq@Hk^)r&&gulTZ%IznSeEuks2o|NS|?G-#k8Wga^zk%~oD7%)ai-r~>=STxXX-S6| zN>BL8kTxzF1C}HKg|nnl7}H-3x)(_PU+G)|IrtKly24{M%6nt4AA(0qTOL#HR zv;<<5AxS5W9U)Z)*rDzfRfH@b{tTuf>JUgr9E8#gS_mY=Ux?F+=l{wSV@6y$VMZK7 z77YOeT@uJfAcfQqS_-5?AVnFE$^6*CQHOvZ>ON6t$nxP2VQQj5fqVo~DE;82KtBAX zIIVb|9+V$}A%!1-5LrM36nt4AA(0qTOL#Gm5rG&cBuV)BsbbnW_yN{blfIuUofhRk zu2x6^NBp~%t&1Q>cnqW@R1BpjYeEv4Rag>9F?N_xIT6UQCMcm8T3gDfq(TfHCv^zq z#J_dXLMR)TDbBhQBi~!EQz-r5rBE6|SB3Nnn5BRpf{w*PX!{jk7E(uO45=kFh1Qd@ zGN!$Phe(40mYl$q?_8$Vv?ztLYni%eXfbk*G%%Ewbcmt!WKBpCdQ5@Bl1PfFW|Ly1d$Nl@m?&I;N!~VnD=iTFn=i}4k z{_VHj!^7R1yEi`{p1$l4$NT;B>$_L`-ShEo>V)e+U`s4V=8FWxR!A~qo^KLq7yC(F3mJ3Wq8uTBl;T40c#|U zp2f&=BjGT$8s`fQA~uHRP&-3ch`ODzATTDlgQ!~>Um|L2XcDzIG)R`35mhp67e8nk zAn-=g;mi0oI5KM_Af`rIB*;xLiP)PCNzl|JlJHdmZ-N61Z-POx;AluX%0%rBkD|7R zCz1PO!jn9hW=@hJ{&8B)0c%F|lDZt?o@Ohg4uaH31ffC1#?TyDVkCmB2uxxh`5Dkw|aKM_)jeZM8 z=8J;E7D$T5d?}EA@_)>^AP5hlHHPO9J7ZcrWlVzKa&NQX3=INfVmUHnBp@9n;yGy+ ztl>$--tZu5bINK>#|~&`ECzfzy+Rt@h8VawQ(&0tXmB7ep&VLQcsaDTur-=pktOt? zDupYd80rqjmj}`!5rhU28$)xbohbt|?G`><8XPc2(N1|ew0+FfM?;USlPLt@LA1v3 z99d!%g76h0Ze=tGj7cI&M_sE@5g7?cM~R57;Yq~a@E}=gB<7fEO$JPJCW$cQkqnCg zUrw*kMy4(X5~IMd)lug_UP3vvuJCebZDDIPoBW}Xg)5;L>JG-22ht)Dga#2CLvyH| zDFc&E9X(pA6fi~6N?9qi9n4flRg0{HDa2qgw3e_GSxOXQu$3WhUL*!AN%BcA!0Pph zm`E__(h!@%a)@1FF|wpcY$7rZyTJ$Vw=O))ih3v@nGn zr!_bIXDwHJMK(#>`Y291^g?9eN^IwVD-sUAJdl=H5V0}5AYx}sV3Pb(p-xRL{6Sd3 z0b>UAkA@uZMZsa~qXB}%#DZvz=@3Ng%$mSRS{V%jV`4e7D>4a4M~NUa!6agDIwV1A zB$AZXnvNYlX6hL5MbT7gF<^=U!&FCIjlkz(17|-kht?LlI>cR!^nEGhwF?PN*K(xkm2%>d{uMlx7qd{Oy z5>fj8OQS%hzmk20ucJi7*6<`^Z+H+_bEd^wPj!<6^PovT`9Cb%1Ojh1clb>lnKcp+ zTO@JT@FZeyco4NYrpr^_B>F9Fep9`|n_!U48x2WEnIz+UX5W%KJc`;Lo<#0X8J=|T z_>oiRfHjgvPs`zW1x?gyT@TNDn@u2MV@zZkf{2}=D@5JSSP&SKG}I0~$`}m@Um|L2 zXcDzIG|1pNGi?_?Xc{2!X27IraAejtqr^Xb`b6G)I;gi6C@^s9PBe0%MYf+6%Hqr6MvK5WYmz z*3cwsZ)lJ#H5zkFwI&CqIWuh@|FEn8fj1-iNJ9|hMgn4Mq(Oq*1e1up>5xQh&YIW+ z2N>Q2gUEYYN0}fw8c}!@wLLtE+@CT$>EQ7rr_KRuB<+=!L)_C$h1B&Jd~Z_+5gWq` zB6fzZ5Oq6aL10YMPA?YX+Bqth0ZBK_N$c}?3Nnz*ja{lMf z_mBJchuz2HPoJNjpa1ms`S|p>fBWum|Nhsv-*yiVcW>_A{Cs%&vOgT}_s_5IUhQ|! z$GhpGd>sr7Dw}KsOBNv+j4haC@g?PwHD z1D|dHCi6*0(@{3b#D(vBIy%MUjIfHQ8RAu0#z}yv-p8`Qrqe6VSDKDB!=hv!$yiLq z#Ck--3^0ji8Q~ILF(XpqmNyb59SmPGBW$8+M)*X-WNFeFRaWq{>AW&!ocx$(RFY%db0d}oHl1Ffzu=o1|B@`olZ?eyOsGdR%m9;UmMlp!m)PRX zE+XPn4U^(oGLv*Le91&irfRZB_{2+to~JXaj8i)QQvZcbgOXiEfk)9KS(0QZrdq11 zWbH1TWq?DpEXa^dmea!L_nH`o!s85w!cnpi=~(D;L7R(*8DSDF405CsrVP?l7&kGD z>MSs6P=BeTWJ!{-n0jfzAW88s15DzDL6T&`oEAP$B+8`tRKuirmMls-7`|kXr5m6b z;S(Djs1KPcy`;GE_-`+Za)G7T6?f!?Y{|`ktwnx-QYr@+Zap@82B`3GBsE-n`AJi zW?D4J(+$uJ@To(Z;nRupDV;z+o*Fdp=>}l3KGXmlTP?spMa$0TDOkrqF_-L zTra3tOuaO889$F2FnW_ZgweaSCP?W3k>v}M;#sCz^7}nN3%TwnnekJJ3X{yI4r!1k z8I6fkGGl7M$=6|zg;*41Ni_*rk}OFo6k9Ek2GJ~fhiH@m7SYu*pwqD|a45dB4Cr!v zxeV}#h8bWI&64G4P{pLv-@+)WlE5HU`!Dlc1{=Pa(>ogg^Mj%31^S(L1p-xx{z-^7Et zsbX!CRBe}+1s+DAW13~Q!lX|@i2Omc$P`C z?;qDvxkMLl7Nm55$nu3r@hq81GMJ8%89$X8$sXWShcxJUK1NLkZ+)scxiQ}*rJpnp z?>51}Czn36iDi1RThm*Du|*SW6Hhb1Cmv>mQD!_*KHWgL;nNMkWIpL=I?5)Q==T}) zZ2=!)Rfjm^XH*j4HbzvP1vU+uP<50nPcjx$F%1}`DIR8kNxU#fl1!M>!slPwK$(>I zx86G~wLBIECdIR4QPRQiC4(&80L=)WcxjL(oit?yPqlFygQ)=np9b}r21}MF8H}l! z77g-r12hAC>W~I`l1Xz~_&l9BpKc)B@aYC%vOwu*I?4u#x&@pOR&|JjOzFfip-O&C zGb+h(8;|#L7T7eZ*VJW!M=};$F?ATEDIR8kNxU!vTv`#N_*BEBc$SdS#AHb)4PC$^ ze4=577*)n8o&P4rQWXUr$(k=K%7Aufs->z*_BOjr7M5jzLo7;`A(<>}wcx5D(GPx@ zmt3*mx(G+f9MZAS6SPF~7f* z0B+;q-Bh;r8gEpeX$S+GWH7d78Z^k$4bUJ@Hvp40J{iqvVN55=ryB@2e7XUc%qJbq zszlua&IqeI#6k1ZiBpCu32+-Ds?GwN2KAacN|q-Xi>a6f%=r0KhZ$fJFAS0-b7@78 z;!_Qi;#smN>0tPhL6&ZSW`s|?G)R+9nlesPZQRCSYQVs!L4BsdlI2MTV``>FgFM{; z%>bV|q(Po!(wr8?y;IupN}O&W-0C66byx%{+zI(ObJs{mFtyN7A^Q+i z7=z4-4jE)t@YSH}PBa6Yi0ce+!keL^9CTjr5IQq>hH87Lc~@(3HE2(mbMBk-kwJcKdmoZw|ZBD`fVkw|(^^I@uh z$cIV=0-VtHg@y<)!WqHVLW2RB2xE{r(IJD(iZzi4izS>0Ll`(Hs8o0h!PlhD44y&g zMj4EB*vL^)Cx8*oEs~Z%)}2fx)HTSSZ#auUBgkx^39>Xei$GTb#&x1rJ^im&0&IvP z$ZYUN;7dVg1kIpxf<_QpQAT3gC~`nF5a5KgFEj`;Bb*UTEwmVri7*D46CEP-nkGXp+f|f4{O4Z zu*Vl8Y=|P5YGmt|Ko%0&Q3|7`0~H8oCpu(6BAgjaB$C`yb4<>OA7-!s$b)ZhX7|t1 z;0s`@V7vu1fyx6KKxP761+sp`62OC~P9W<=d>P1Gpb=y?&;(f)q?M3P8aEQE`@;g? zhFm7Gx_zd<@BXF&>HtVV41mf2S^#t+Ujf((fB`WHgaI-8XAy7)pi4kz0ZSnBfCbQ* zP{v@|CvFhb0pNkM57hV1Ebs*|HP9eH4uS|&9`F*3nFf>x33|vwqojMfNrwkP09g>6 z3HUNV5~2`fHt-@K3(g{#nUKVuAEu{W10NVo^=H%I+Y)&R;DRrKt%Cp;cm$*&Oazq= zd?m=55{&>G!a4$Ma7N&ZF?)Y4j6vo^hYT_+%6d#k4IB@30Jz}WmS_QBfiHlmg1Q1( z7J>*=9`F*VOrWb^&|s)n0X%SSh_nRoz?pzA1DOjng3Jb*KzHv}Rzi6LU0kutIucC) z8%{47atB{ZfHe3Lm^z4Xfk#l;z!OaReE;x^uMc!7W?@L!!c z$fV4P4jIsywpcM8vh@kgr1yN+kbd%fsI&CZ){CV2(}m^jNln$PVfji zE6kXnoCu30oCrh6obYDoD2HUz)=$iCi>A(u4k1R(igeh>QBfy=5zY{@tvU4T*Z)y~I*uVi90N6hRgTZv?&+kcTh^ofEtaNQAcx zWj#)wM-GSv0-TWcg$6;E31gtH8%<<3)rb0RF3a3TyL3xzjB zM>!xBaS%E)I)p$jyoE5qNQzIhA{{;Qu~SX}BecDtE&*I{Ca{%IM?fN?5M(y+BFKDL z5r(Kd!iFe zAhUrN0cmjdVMQ3C@(3HE2(mbMBk-kwJcKdmoZw|ZBD`fNBQbd%IUpJca6;M_8U$G; zoDobdv>1?yFb0_u9Wo#j&N7^q!@We>=Sn2PVhJb05VBBsGjx;#QV|ECGowQYC66byx%{+zI(Ob zJs@#!_VQ5MbECNVd)0D*bfjVW5i~Jcra39z$!3nIV)bCax~F&>V0j z6eDv*!O>A3$+Cs-*}3?_gJ_N6ImFJCg_;gMzKgLGFy-`$^QTZ;YJ-Ky91&2M%7}7= z#*kVkAK}HHPOHJ6n?a(`-o+ zjCkT=;!>r6DS}qYLS&8zC~Rd^wHP~Bsu)sBcrnnw1fI~9kyKJWXkjs6NzzYwuQFBP zQpbQL3Jkt9w5HG;T32X{ta~YJDQh&Hd8s&Hiaf7X2sjeQkl7)CFjY}iV(2WXQb_%v zr9j&f7;;+j{C<2@iOi3{kiw5Zh%6uq3c4)Nup%+Eme67#BMLFfkW2*-JVfdguteT3 z>JV8<1Qez&8W>1PB!<)yUJRr}AjWCQ^CY1xiOec2iKNJ4qQKxw133xh(7M9Qfutzp zFi}a`PxEA|i0Fr01qNKv_l<@aFhzi2Yooz|tb}q%UFncRYRj6aghm#wgklUHEL2() zg79^!HHPO9J5vTG9Xfin)G1(!pq0{6NIRIRjJg)tGZujuG=|g?nj%YyKn%JvFzOSz z@|}x%Wx$e1ip&xP245OlQ)mvYD>R1KmNF{SX3+zsfdNlGv4FrBNMlB@`nIi-M!0Jdl=H5UnvCf*>zj1xZI*_gzE3E8{H`FlA#a z-2#zi#h=0!MvB8c?9)%)4<;AH;4zez@Dx%{%ut~$iOec2iKNIZ5nyzbhTlYS3QDXT z1LsN7Yk2c2^IC^MPW<~g%aEnSAHsyBu7q^D(-cZSXb7nxbX7=u7E1v?1RaZo$ovpc z@MR%&gvO9sLQ`lxDJx^zD|m=BC}7D6eEoBTv{38zERF6(DKORjDNJ27v=})@8W>7T zI>b zBM>4Bh=77G3nU~GLuv^x1~MWL!_1H*{QM?B+Bx_E)>M-=CH}3GmjaIXQ`ou)a)ie~ zN3 zkajJa0+yU!GVJL=DFssEPhsjJ$`KwzX$em;>Gb^rLH?f5<(Y*fp~n;`EQzGZED>OI zl*Y(u(#WgSl@2-3y|&si9k%sJ*QEV?SCW46e#o^61FmfB8=EMm7dy1CB@9~}QKs-5 zQdf8ktu1D(P_BeV7OsS1WUeSUI?5wi=J6@yZL!rF(;>*n*^&+&JzDA%FhxFD>JV90 z1Qez+8W>1QB!<)yUJRr}AjWCQ^Y0F(EJ@_+?^TwX7mEQ)A}O+%C@}caKu$tAw65@S zASntt${L+&AbOxQFyM;3Z!{>ftOzhnZL~O$l~4|;D;;tmD*`!AOP;3+=SpZ~;Yuh* z78V6ZM|mJEu^?JwIs`#p6oQz*B=x7+k|crx)(1jlekdsDvd}uhVjv=+VxVa$Fv^fj1rR($ z>J+d<-Y@D9SxN*HraBuKNJ%7y)Dm6{q(mUbY01iyuDpq7qdhXKuq2Wqi-`h*FAd}* zltb$ZF9(vMki$eJX+OVzlD3Y1$TbzFz3$TYjfNO7MSx*zqrri!gmNG&p%_^U6L6fC z#8jbN35_gV3B|}Pm+k$cjLY(~`JXNqb$1N@!%^N+?Da76nH~c_1yZAX;NO1VLUl z3zD>T{?6mye7=9&zd!6g9)Eh=A3yC6Z{Hp6-~amd+wS4v?#Ky< zfibZhnK2TOjuJ_(EqwXW#~PkQ>k5q_wuP<^aTjAb;7U?3J}eRrzC6Uf&>&)CXpSr|5@*UnopuW!E)5PCqiE~A z9JsYqaG3gN=#hOMDHcR)Oot#^XZQ*cw=x<8#sqf|7$X7cC=szWJc-yF9%S&GNd`=F zCW$cQk&FpV6$8E~nkq|?nWDh3)lpSr@QkT)XkFpuKqFJwLRUx9N%ka$<$x}5oe{vT!97BMXa!gD(%HB^E?%3@-@s zA`!#{Cdog|mZ>VjAA}VgFlIpiXvhIy6dblb8X!naEQr>a4nefetO-nPa$!s?$LJwL zWkwoIkLz|KsrhUnF%Hld($BaQnOi-bf|S-YjnI^-hu&N zwl>u*6j@>f7`8Z4DCXIpesX_)xgZD6A$5hv(Ar`K4CP8_WZ_CEM&^owqoX_=r;Afu zf(02lTaseqyI2|9It9`qXz46OmK6boiAr4y?XagYq?XVWT2JW8&^9j?1C}US7fX>@ zqQKxwLu(4np>>7E5Zh8#$Fy1WKxtsWl@s}f#|&wu){R@5hU-wxEZAW%bSOM$i}kb-LcEG7yJzBG`NP!6ptyc|f1LJl)elJ@gk25IZ)hg?%(+N=ngC@%&~5n$Nbh%$xe zKvrVqklMmmhqi;!9B?JJbHEh^2VbSxyN$6RT4Oo{(K=HWYC3fEXsJ`c6hRN8rGO&> z3R4+%EwZFUVn{9F#gKYJSH{SpQm+hHqG+MC7_dZv!Iy^C6q-Zp3XLJYg)FP1ysa;8 z6144$#(*oQmyCP3P>O-92rx`-gqgx~NL}GECZ)cAsz_i9U87l45_?dU!j({r%oPPk zM|ljLEREP|jp+~sZEUkM({Wp$olWx3cPr^9_XlB{IAF}y{;>&Tda*|zTjH<<66OmJ zqBVx+5IbW=3}sAga$!s?M`nx!q@zTVYc3yc-j-gmHyx4;oipj!;bW$b0ble}rcRM1 zMuB0fqrri^gmP$I;pIS96mp!_JpYbk%9Vt^;T~qGi?JMVB@`nIi-dzO52Pg)L~IN% z2=XEkq%72_4#I~^g9FCs`$q#KON@fU)JF>hiHQZ#8q*;N5~C30wB~ujaK^+Y7skYL zWRa18bd(4(6HFrZrb7~>Mk0xcO)_AbGf9N-M`bw%d>PO~>SDkY1%|DTItTI+%As|I zmqTmIil~G}7OsS1j2+Y-M27C-89(#*z*8Gy9PgnI#eox-`V5up9_VtQ_cG5{@z|QxQZD zlsX1n(f5ryMV1u>hAGho2eJ~%p>>6q16fhXaayzTG%WAu*`yDREL;i2$igDw;L8JP zi3JfG!wZ7ENCYu~N%GI{x1_zpAB0WSX|Kcv^pA!d@I}F4>!SgJ#KeLiF|iz3FH?Y= z*2ILNjEPMyjEUvQjFEt>%1khc*qaVX(9a~2l(9+24j(gh4EUn&A$5u@F$xS*9Sx45 zGp5d=b%mD$Sy9-sA}XPgg)5;LSy&_-e0d-(u^?h&ctMaCi6CWQraA~8E)5PCqwgOL zj4Uw<4pSd35F{oRL~BfkAV`ctkkgvDhe?}V2~2EqVN5JX78wahM~NUa!6agDIwV1A zwo8)ab^dU9iorR*RB5wfs&GuWa?Zp|$${dDEI<#r)>2%Q-`gU}5#Pbf1?Lbtm?L%@tU zhRh6ih>ns-PAz!Y<-*;KvM8sWLWf0z0cLo&YF-B1 z^LaCvdT8j7eVQl^LT5&Y5IQ&biV(Ib8Ukhnb_kf^4$)B(LOXa0p&vZNz`2n`pXNq7 zy!>&92}czHUU)Z4mLN028^KmXRfT~wqspLjf|mhJ%G(OM8j?Perywi?oJh*a?lGpa zTj~sO!kvLH2cZ`z$_rI0&H`yb#ER zyAUQAN%Cn{OjQv2;HhAM8RGuXkO5wJGuV1)Kp+`$5IQqDgwVOMCKz$)gc)%RBZmf+ z4Ry=&TX0n$THzfU?Nf1KsT^y1epyqfzAiI5_FA;MSu<7ZHXnw zZ16_lOF?G@&7gCFMi5$2R>QPWKa#>67PhOmyHYf5}6=!~ElbWYF+St7L6 zkj@%79;yIv!MQh=fvoPIS>Oy{s-RAQECdnAJfI~&OLCTgtpa!u6hwFs1ds*6n}99@ zoeM02&IXo1=tCKXX`{fQP$z&5(tc0}$XswHFm=#CKpLVDWH#_344Mp-4T*ZpgQX;W zx`&4iQ3P2Wyb<_PKpw&vbWZRxAQ9d&nE88dmE)GIxMu!kOH_D<+hm9N+bpjaS+@EL( z;DR%Osf4-)St6nkWH#_3$b6tHVbqYQR|0JCZjH1Eu)!OFF9n?uG=t6w8bNqlS5`xL zdtF?}>sk|y04Gi_8FPbQihxWwBbZtUF@k51Il&`L3Vr_sjk6VWJ!X+e+yNB{C&Cai zC%hRt%3;`~Xhc(IMu!k+QJdVDj@kOmXOeurn@B&oK6u*105i7qhfN66i?{ZuB?em% zAztthIx~0%p&MpoP-euX6K2FQWM;TSbd*GLYV*f%wA1-ZGrlJO2(@%87)%@*ZQUL$M5SA`Br5g*yXZ4oF2D zgwPCL2;{k`V`?GowQYB*R;X(|YHL!I=@4 zPM8tLkVV5CqN5~`jX(;aA01L49qv+?cqGxMxseVZ`e-UgfEVH(Q5OM5cq7Z_ z2AHAk4-JGY8Qu)09$FAcMjV9Bj1D1?3~wP$>){?FZFD6Vap{B^aST~B+#xzj0@(

gw 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 Qz)%A@&AOLwORN6>5AJtqP5=M^ literal 0 HcmV?d00001 diff --git a/level/block/tinted_glass.go b/level/block/tinted_glass.go deleted file mode 100644 index 285f57e..0000000 --- a/level/block/tinted_glass.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type TintedGlass struct { -} - -func (TintedGlass) ID() string { - return "minecraft:tinted_glass" -} diff --git a/level/block/tnt.go b/level/block/tnt.go deleted file mode 100644 index 9ca5e99..0000000 --- a/level/block/tnt.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Tnt struct { - Unstable string -} - -func (Tnt) ID() string { - return "minecraft:tnt" -} diff --git a/level/block/torch.go b/level/block/torch.go deleted file mode 100644 index f42a016..0000000 --- a/level/block/torch.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Torch struct { -} - -func (Torch) ID() string { - return "minecraft:torch" -} diff --git a/level/block/trapped_chest.go b/level/block/trapped_chest.go deleted file mode 100644 index 0227e3b..0000000 --- a/level/block/trapped_chest.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type TrappedChest struct { - Facing string - Type string - Waterlogged string -} - -func (TrappedChest) ID() string { - return "minecraft:trapped_chest" -} diff --git a/level/block/tripwire.go b/level/block/tripwire.go deleted file mode 100644 index eac5493..0000000 --- a/level/block/tripwire.go +++ /dev/null @@ -1,15 +0,0 @@ -package block - -type Tripwire struct { - Attached string - Disarmed string - East string - North string - Powered string - South string - West string -} - -func (Tripwire) ID() string { - return "minecraft:tripwire" -} diff --git a/level/block/tripwire_hook.go b/level/block/tripwire_hook.go deleted file mode 100644 index 19da7fb..0000000 --- a/level/block/tripwire_hook.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type TripwireHook struct { - Attached string - Facing string - Powered string -} - -func (TripwireHook) ID() string { - return "minecraft:tripwire_hook" -} diff --git a/level/block/tube_coral.go b/level/block/tube_coral.go deleted file mode 100644 index 4894d4d..0000000 --- a/level/block/tube_coral.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type TubeCoral struct { - Waterlogged string -} - -func (TubeCoral) ID() string { - return "minecraft:tube_coral" -} diff --git a/level/block/tube_coral_block.go b/level/block/tube_coral_block.go deleted file mode 100644 index 7b482c0..0000000 --- a/level/block/tube_coral_block.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type TubeCoralBlock struct { -} - -func (TubeCoralBlock) ID() string { - return "minecraft:tube_coral_block" -} diff --git a/level/block/tube_coral_fan.go b/level/block/tube_coral_fan.go deleted file mode 100644 index ca73674..0000000 --- a/level/block/tube_coral_fan.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type TubeCoralFan struct { - Waterlogged string -} - -func (TubeCoralFan) ID() string { - return "minecraft:tube_coral_fan" -} diff --git a/level/block/tube_coral_wall_fan.go b/level/block/tube_coral_wall_fan.go deleted file mode 100644 index 338462a..0000000 --- a/level/block/tube_coral_wall_fan.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type TubeCoralWallFan struct { - Facing string - Waterlogged string -} - -func (TubeCoralWallFan) ID() string { - return "minecraft:tube_coral_wall_fan" -} diff --git a/level/block/tuff.go b/level/block/tuff.go deleted file mode 100644 index e92be94..0000000 --- a/level/block/tuff.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type Tuff struct { -} - -func (Tuff) ID() string { - return "minecraft:tuff" -} diff --git a/level/block/turtle_egg.go b/level/block/turtle_egg.go deleted file mode 100644 index 0e546db..0000000 --- a/level/block/turtle_egg.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type TurtleEgg struct { - Eggs string - Hatch string -} - -func (TurtleEgg) ID() string { - return "minecraft:turtle_egg" -} diff --git a/level/block/twisting_vines.go b/level/block/twisting_vines.go deleted file mode 100644 index 00cbb65..0000000 --- a/level/block/twisting_vines.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type TwistingVines struct { - Age string -} - -func (TwistingVines) ID() string { - return "minecraft:twisting_vines" -} diff --git a/level/block/twisting_vines_plant.go b/level/block/twisting_vines_plant.go deleted file mode 100644 index e34b868..0000000 --- a/level/block/twisting_vines_plant.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type TwistingVinesPlant struct { -} - -func (TwistingVinesPlant) ID() string { - return "minecraft:twisting_vines_plant" -} diff --git a/level/block/vine.go b/level/block/vine.go deleted file mode 100644 index d7fca9d..0000000 --- a/level/block/vine.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type Vine struct { - East string - North string - South string - Up string - West string -} - -func (Vine) ID() string { - return "minecraft:vine" -} diff --git a/level/block/void_air.go b/level/block/void_air.go deleted file mode 100644 index 2c6923b..0000000 --- a/level/block/void_air.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type VoidAir struct { -} - -func (VoidAir) ID() string { - return "minecraft:void_air" -} diff --git a/level/block/wall_torch.go b/level/block/wall_torch.go deleted file mode 100644 index 481d088..0000000 --- a/level/block/wall_torch.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WallTorch struct { - Facing string -} - -func (WallTorch) ID() string { - return "minecraft:wall_torch" -} diff --git a/level/block/warped_button.go b/level/block/warped_button.go deleted file mode 100644 index 708b84e..0000000 --- a/level/block/warped_button.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type WarpedButton struct { - Face string - Facing string - Powered string -} - -func (WarpedButton) ID() string { - return "minecraft:warped_button" -} diff --git a/level/block/warped_door.go b/level/block/warped_door.go deleted file mode 100644 index fbae3a0..0000000 --- a/level/block/warped_door.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type WarpedDoor struct { - Facing string - Half string - Hinge string - Open string - Powered string -} - -func (WarpedDoor) ID() string { - return "minecraft:warped_door" -} diff --git a/level/block/warped_fence.go b/level/block/warped_fence.go deleted file mode 100644 index 5e6572b..0000000 --- a/level/block/warped_fence.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type WarpedFence struct { - East string - North string - South string - Waterlogged string - West string -} - -func (WarpedFence) ID() string { - return "minecraft:warped_fence" -} diff --git a/level/block/warped_fence_gate.go b/level/block/warped_fence_gate.go deleted file mode 100644 index e0f2546..0000000 --- a/level/block/warped_fence_gate.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WarpedFenceGate struct { - Facing string - In_wall string - Open string - Powered string -} - -func (WarpedFenceGate) ID() string { - return "minecraft:warped_fence_gate" -} diff --git a/level/block/warped_fungus.go b/level/block/warped_fungus.go deleted file mode 100644 index fd9a40c..0000000 --- a/level/block/warped_fungus.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WarpedFungus struct { -} - -func (WarpedFungus) ID() string { - return "minecraft:warped_fungus" -} diff --git a/level/block/warped_hyphae.go b/level/block/warped_hyphae.go deleted file mode 100644 index 2e1a84f..0000000 --- a/level/block/warped_hyphae.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WarpedHyphae struct { - Axis string -} - -func (WarpedHyphae) ID() string { - return "minecraft:warped_hyphae" -} diff --git a/level/block/warped_nylium.go b/level/block/warped_nylium.go deleted file mode 100644 index a098737..0000000 --- a/level/block/warped_nylium.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WarpedNylium struct { -} - -func (WarpedNylium) ID() string { - return "minecraft:warped_nylium" -} diff --git a/level/block/warped_planks.go b/level/block/warped_planks.go deleted file mode 100644 index 7605243..0000000 --- a/level/block/warped_planks.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WarpedPlanks struct { -} - -func (WarpedPlanks) ID() string { - return "minecraft:warped_planks" -} diff --git a/level/block/warped_pressure_plate.go b/level/block/warped_pressure_plate.go deleted file mode 100644 index 48f48df..0000000 --- a/level/block/warped_pressure_plate.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WarpedPressurePlate struct { - Powered string -} - -func (WarpedPressurePlate) ID() string { - return "minecraft:warped_pressure_plate" -} diff --git a/level/block/warped_roots.go b/level/block/warped_roots.go deleted file mode 100644 index 523655c..0000000 --- a/level/block/warped_roots.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WarpedRoots struct { -} - -func (WarpedRoots) ID() string { - return "minecraft:warped_roots" -} diff --git a/level/block/warped_sign.go b/level/block/warped_sign.go deleted file mode 100644 index af91363..0000000 --- a/level/block/warped_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WarpedSign struct { - Rotation string - Waterlogged string -} - -func (WarpedSign) ID() string { - return "minecraft:warped_sign" -} diff --git a/level/block/warped_slab.go b/level/block/warped_slab.go deleted file mode 100644 index 0a6cb34..0000000 --- a/level/block/warped_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WarpedSlab struct { - Type string - Waterlogged string -} - -func (WarpedSlab) ID() string { - return "minecraft:warped_slab" -} diff --git a/level/block/warped_stairs.go b/level/block/warped_stairs.go deleted file mode 100644 index f176024..0000000 --- a/level/block/warped_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WarpedStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WarpedStairs) ID() string { - return "minecraft:warped_stairs" -} diff --git a/level/block/warped_stem.go b/level/block/warped_stem.go deleted file mode 100644 index ca6bbd3..0000000 --- a/level/block/warped_stem.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WarpedStem struct { - Axis string -} - -func (WarpedStem) ID() string { - return "minecraft:warped_stem" -} diff --git a/level/block/warped_trapdoor.go b/level/block/warped_trapdoor.go deleted file mode 100644 index e2ef6d2..0000000 --- a/level/block/warped_trapdoor.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type WarpedTrapdoor struct { - Facing string - Half string - Open string - Powered string - Waterlogged string -} - -func (WarpedTrapdoor) ID() string { - return "minecraft:warped_trapdoor" -} diff --git a/level/block/warped_wall_sign.go b/level/block/warped_wall_sign.go deleted file mode 100644 index 5314a1f..0000000 --- a/level/block/warped_wall_sign.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WarpedWallSign struct { - Facing string - Waterlogged string -} - -func (WarpedWallSign) ID() string { - return "minecraft:warped_wall_sign" -} diff --git a/level/block/warped_wart_block.go b/level/block/warped_wart_block.go deleted file mode 100644 index 46a56aa..0000000 --- a/level/block/warped_wart_block.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WarpedWartBlock struct { -} - -func (WarpedWartBlock) ID() string { - return "minecraft:warped_wart_block" -} diff --git a/level/block/water.go b/level/block/water.go deleted file mode 100644 index f46457b..0000000 --- a/level/block/water.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Water struct { - Level string -} - -func (Water) ID() string { - return "minecraft:water" -} diff --git a/level/block/water_cauldron.go b/level/block/water_cauldron.go deleted file mode 100644 index 588812a..0000000 --- a/level/block/water_cauldron.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WaterCauldron struct { - Level string -} - -func (WaterCauldron) ID() string { - return "minecraft:water_cauldron" -} diff --git a/level/block/waxed_copper_block.go b/level/block/waxed_copper_block.go deleted file mode 100644 index 44b9422..0000000 --- a/level/block/waxed_copper_block.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedCopperBlock struct { -} - -func (WaxedCopperBlock) ID() string { - return "minecraft:waxed_copper_block" -} diff --git a/level/block/waxed_cut_copper.go b/level/block/waxed_cut_copper.go deleted file mode 100644 index e4667ed..0000000 --- a/level/block/waxed_cut_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedCutCopper struct { -} - -func (WaxedCutCopper) ID() string { - return "minecraft:waxed_cut_copper" -} diff --git a/level/block/waxed_cut_copper_slab.go b/level/block/waxed_cut_copper_slab.go deleted file mode 100644 index 077712e..0000000 --- a/level/block/waxed_cut_copper_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WaxedCutCopperSlab struct { - Type string - Waterlogged string -} - -func (WaxedCutCopperSlab) ID() string { - return "minecraft:waxed_cut_copper_slab" -} diff --git a/level/block/waxed_cut_copper_stairs.go b/level/block/waxed_cut_copper_stairs.go deleted file mode 100644 index 2b37e99..0000000 --- a/level/block/waxed_cut_copper_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WaxedCutCopperStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WaxedCutCopperStairs) ID() string { - return "minecraft:waxed_cut_copper_stairs" -} diff --git a/level/block/waxed_exposed_copper.go b/level/block/waxed_exposed_copper.go deleted file mode 100644 index 7098661..0000000 --- a/level/block/waxed_exposed_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedExposedCopper struct { -} - -func (WaxedExposedCopper) ID() string { - return "minecraft:waxed_exposed_copper" -} diff --git a/level/block/waxed_exposed_cut_copper.go b/level/block/waxed_exposed_cut_copper.go deleted file mode 100644 index 4144f18..0000000 --- a/level/block/waxed_exposed_cut_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedExposedCutCopper struct { -} - -func (WaxedExposedCutCopper) ID() string { - return "minecraft:waxed_exposed_cut_copper" -} diff --git a/level/block/waxed_exposed_cut_copper_slab.go b/level/block/waxed_exposed_cut_copper_slab.go deleted file mode 100644 index c07a72c..0000000 --- a/level/block/waxed_exposed_cut_copper_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WaxedExposedCutCopperSlab struct { - Type string - Waterlogged string -} - -func (WaxedExposedCutCopperSlab) ID() string { - return "minecraft:waxed_exposed_cut_copper_slab" -} diff --git a/level/block/waxed_exposed_cut_copper_stairs.go b/level/block/waxed_exposed_cut_copper_stairs.go deleted file mode 100644 index f18c058..0000000 --- a/level/block/waxed_exposed_cut_copper_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WaxedExposedCutCopperStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WaxedExposedCutCopperStairs) ID() string { - return "minecraft:waxed_exposed_cut_copper_stairs" -} diff --git a/level/block/waxed_oxidized_copper.go b/level/block/waxed_oxidized_copper.go deleted file mode 100644 index 83e057f..0000000 --- a/level/block/waxed_oxidized_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedOxidizedCopper struct { -} - -func (WaxedOxidizedCopper) ID() string { - return "minecraft:waxed_oxidized_copper" -} diff --git a/level/block/waxed_oxidized_cut_copper.go b/level/block/waxed_oxidized_cut_copper.go deleted file mode 100644 index a5194bc..0000000 --- a/level/block/waxed_oxidized_cut_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedOxidizedCutCopper struct { -} - -func (WaxedOxidizedCutCopper) ID() string { - return "minecraft:waxed_oxidized_cut_copper" -} diff --git a/level/block/waxed_oxidized_cut_copper_slab.go b/level/block/waxed_oxidized_cut_copper_slab.go deleted file mode 100644 index 698fa59..0000000 --- a/level/block/waxed_oxidized_cut_copper_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WaxedOxidizedCutCopperSlab struct { - Type string - Waterlogged string -} - -func (WaxedOxidizedCutCopperSlab) ID() string { - return "minecraft:waxed_oxidized_cut_copper_slab" -} diff --git a/level/block/waxed_oxidized_cut_copper_stairs.go b/level/block/waxed_oxidized_cut_copper_stairs.go deleted file mode 100644 index 21e7fe2..0000000 --- a/level/block/waxed_oxidized_cut_copper_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WaxedOxidizedCutCopperStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WaxedOxidizedCutCopperStairs) ID() string { - return "minecraft:waxed_oxidized_cut_copper_stairs" -} diff --git a/level/block/waxed_weathered_copper.go b/level/block/waxed_weathered_copper.go deleted file mode 100644 index 207ca96..0000000 --- a/level/block/waxed_weathered_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedWeatheredCopper struct { -} - -func (WaxedWeatheredCopper) ID() string { - return "minecraft:waxed_weathered_copper" -} diff --git a/level/block/waxed_weathered_cut_copper.go b/level/block/waxed_weathered_cut_copper.go deleted file mode 100644 index c2ed906..0000000 --- a/level/block/waxed_weathered_cut_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WaxedWeatheredCutCopper struct { -} - -func (WaxedWeatheredCutCopper) ID() string { - return "minecraft:waxed_weathered_cut_copper" -} diff --git a/level/block/waxed_weathered_cut_copper_slab.go b/level/block/waxed_weathered_cut_copper_slab.go deleted file mode 100644 index 8bc0d77..0000000 --- a/level/block/waxed_weathered_cut_copper_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WaxedWeatheredCutCopperSlab struct { - Type string - Waterlogged string -} - -func (WaxedWeatheredCutCopperSlab) ID() string { - return "minecraft:waxed_weathered_cut_copper_slab" -} diff --git a/level/block/waxed_weathered_cut_copper_stairs.go b/level/block/waxed_weathered_cut_copper_stairs.go deleted file mode 100644 index c721e3a..0000000 --- a/level/block/waxed_weathered_cut_copper_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WaxedWeatheredCutCopperStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WaxedWeatheredCutCopperStairs) ID() string { - return "minecraft:waxed_weathered_cut_copper_stairs" -} diff --git a/level/block/weathered_copper.go b/level/block/weathered_copper.go deleted file mode 100644 index 65750af..0000000 --- a/level/block/weathered_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WeatheredCopper struct { -} - -func (WeatheredCopper) ID() string { - return "minecraft:weathered_copper" -} diff --git a/level/block/weathered_cut_copper.go b/level/block/weathered_cut_copper.go deleted file mode 100644 index 8162a29..0000000 --- a/level/block/weathered_cut_copper.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WeatheredCutCopper struct { -} - -func (WeatheredCutCopper) ID() string { - return "minecraft:weathered_cut_copper" -} diff --git a/level/block/weathered_cut_copper_slab.go b/level/block/weathered_cut_copper_slab.go deleted file mode 100644 index 728a1f8..0000000 --- a/level/block/weathered_cut_copper_slab.go +++ /dev/null @@ -1,10 +0,0 @@ -package block - -type WeatheredCutCopperSlab struct { - Type string - Waterlogged string -} - -func (WeatheredCutCopperSlab) ID() string { - return "minecraft:weathered_cut_copper_slab" -} diff --git a/level/block/weathered_cut_copper_stairs.go b/level/block/weathered_cut_copper_stairs.go deleted file mode 100644 index e6ec9fc..0000000 --- a/level/block/weathered_cut_copper_stairs.go +++ /dev/null @@ -1,12 +0,0 @@ -package block - -type WeatheredCutCopperStairs struct { - Facing string - Half string - Shape string - Waterlogged string -} - -func (WeatheredCutCopperStairs) ID() string { - return "minecraft:weathered_cut_copper_stairs" -} diff --git a/level/block/weeping_vines.go b/level/block/weeping_vines.go deleted file mode 100644 index b0d5751..0000000 --- a/level/block/weeping_vines.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WeepingVines struct { - Age string -} - -func (WeepingVines) ID() string { - return "minecraft:weeping_vines" -} diff --git a/level/block/weeping_vines_plant.go b/level/block/weeping_vines_plant.go deleted file mode 100644 index 2ba698b..0000000 --- a/level/block/weeping_vines_plant.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WeepingVinesPlant struct { -} - -func (WeepingVinesPlant) ID() string { - return "minecraft:weeping_vines_plant" -} diff --git a/level/block/wet_sponge.go b/level/block/wet_sponge.go deleted file mode 100644 index d60d1c9..0000000 --- a/level/block/wet_sponge.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WetSponge struct { -} - -func (WetSponge) ID() string { - return "minecraft:wet_sponge" -} diff --git a/level/block/wheat.go b/level/block/wheat.go deleted file mode 100644 index 0f36003..0000000 --- a/level/block/wheat.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type Wheat struct { - Age string -} - -func (Wheat) ID() string { - return "minecraft:wheat" -} diff --git a/level/block/white_banner.go b/level/block/white_banner.go deleted file mode 100644 index b4b1ba6..0000000 --- a/level/block/white_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WhiteBanner struct { - Rotation string -} - -func (WhiteBanner) ID() string { - return "minecraft:white_banner" -} diff --git a/level/block/white_bed.go b/level/block/white_bed.go deleted file mode 100644 index ca29e59..0000000 --- a/level/block/white_bed.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type WhiteBed struct { - Facing string - Occupied string - Part string -} - -func (WhiteBed) ID() string { - return "minecraft:white_bed" -} diff --git a/level/block/white_candle.go b/level/block/white_candle.go deleted file mode 100644 index 5c81574..0000000 --- a/level/block/white_candle.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type WhiteCandle struct { - Candles string - Lit string - Waterlogged string -} - -func (WhiteCandle) ID() string { - return "minecraft:white_candle" -} diff --git a/level/block/white_candle_cake.go b/level/block/white_candle_cake.go deleted file mode 100644 index ea1c4b6..0000000 --- a/level/block/white_candle_cake.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WhiteCandleCake struct { - Lit string -} - -func (WhiteCandleCake) ID() string { - return "minecraft:white_candle_cake" -} diff --git a/level/block/white_carpet.go b/level/block/white_carpet.go deleted file mode 100644 index d87bfa2..0000000 --- a/level/block/white_carpet.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteCarpet struct { -} - -func (WhiteCarpet) ID() string { - return "minecraft:white_carpet" -} diff --git a/level/block/white_concrete.go b/level/block/white_concrete.go deleted file mode 100644 index 7ff58de..0000000 --- a/level/block/white_concrete.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteConcrete struct { -} - -func (WhiteConcrete) ID() string { - return "minecraft:white_concrete" -} diff --git a/level/block/white_concrete_powder.go b/level/block/white_concrete_powder.go deleted file mode 100644 index ec45932..0000000 --- a/level/block/white_concrete_powder.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteConcretePowder struct { -} - -func (WhiteConcretePowder) ID() string { - return "minecraft:white_concrete_powder" -} diff --git a/level/block/white_glazed_terracotta.go b/level/block/white_glazed_terracotta.go deleted file mode 100644 index c71c62b..0000000 --- a/level/block/white_glazed_terracotta.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WhiteGlazedTerracotta struct { - Facing string -} - -func (WhiteGlazedTerracotta) ID() string { - return "minecraft:white_glazed_terracotta" -} diff --git a/level/block/white_shulker_box.go b/level/block/white_shulker_box.go deleted file mode 100644 index fdc957c..0000000 --- a/level/block/white_shulker_box.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WhiteShulkerBox struct { - Facing string -} - -func (WhiteShulkerBox) ID() string { - return "minecraft:white_shulker_box" -} diff --git a/level/block/white_stained_glass.go b/level/block/white_stained_glass.go deleted file mode 100644 index baef473..0000000 --- a/level/block/white_stained_glass.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteStainedGlass struct { -} - -func (WhiteStainedGlass) ID() string { - return "minecraft:white_stained_glass" -} diff --git a/level/block/white_stained_glass_pane.go b/level/block/white_stained_glass_pane.go deleted file mode 100644 index a5bd6ae..0000000 --- a/level/block/white_stained_glass_pane.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type WhiteStainedGlassPane struct { - East string - North string - South string - Waterlogged string - West string -} - -func (WhiteStainedGlassPane) ID() string { - return "minecraft:white_stained_glass_pane" -} diff --git a/level/block/white_terracotta.go b/level/block/white_terracotta.go deleted file mode 100644 index 3b8057d..0000000 --- a/level/block/white_terracotta.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteTerracotta struct { -} - -func (WhiteTerracotta) ID() string { - return "minecraft:white_terracotta" -} diff --git a/level/block/white_tulip.go b/level/block/white_tulip.go deleted file mode 100644 index 15b4e5e..0000000 --- a/level/block/white_tulip.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteTulip struct { -} - -func (WhiteTulip) ID() string { - return "minecraft:white_tulip" -} diff --git a/level/block/white_wall_banner.go b/level/block/white_wall_banner.go deleted file mode 100644 index fd5807e..0000000 --- a/level/block/white_wall_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WhiteWallBanner struct { - Facing string -} - -func (WhiteWallBanner) ID() string { - return "minecraft:white_wall_banner" -} diff --git a/level/block/white_wool.go b/level/block/white_wool.go deleted file mode 100644 index bd3229d..0000000 --- a/level/block/white_wool.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WhiteWool struct { -} - -func (WhiteWool) ID() string { - return "minecraft:white_wool" -} diff --git a/level/block/wither_rose.go b/level/block/wither_rose.go deleted file mode 100644 index 2c9a3f7..0000000 --- a/level/block/wither_rose.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type WitherRose struct { -} - -func (WitherRose) ID() string { - return "minecraft:wither_rose" -} diff --git a/level/block/wither_skeleton_skull.go b/level/block/wither_skeleton_skull.go deleted file mode 100644 index a67cca3..0000000 --- a/level/block/wither_skeleton_skull.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WitherSkeletonSkull struct { - Rotation string -} - -func (WitherSkeletonSkull) ID() string { - return "minecraft:wither_skeleton_skull" -} diff --git a/level/block/wither_skeleton_wall_skull.go b/level/block/wither_skeleton_wall_skull.go deleted file mode 100644 index c496df3..0000000 --- a/level/block/wither_skeleton_wall_skull.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type WitherSkeletonWallSkull struct { - Facing string -} - -func (WitherSkeletonWallSkull) ID() string { - return "minecraft:wither_skeleton_wall_skull" -} diff --git a/level/block/yellow_banner.go b/level/block/yellow_banner.go deleted file mode 100644 index e61fa36..0000000 --- a/level/block/yellow_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type YellowBanner struct { - Rotation string -} - -func (YellowBanner) ID() string { - return "minecraft:yellow_banner" -} diff --git a/level/block/yellow_bed.go b/level/block/yellow_bed.go deleted file mode 100644 index cde1399..0000000 --- a/level/block/yellow_bed.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type YellowBed struct { - Facing string - Occupied string - Part string -} - -func (YellowBed) ID() string { - return "minecraft:yellow_bed" -} diff --git a/level/block/yellow_candle.go b/level/block/yellow_candle.go deleted file mode 100644 index b4d56e4..0000000 --- a/level/block/yellow_candle.go +++ /dev/null @@ -1,11 +0,0 @@ -package block - -type YellowCandle struct { - Candles string - Lit string - Waterlogged string -} - -func (YellowCandle) ID() string { - return "minecraft:yellow_candle" -} diff --git a/level/block/yellow_candle_cake.go b/level/block/yellow_candle_cake.go deleted file mode 100644 index 35f7a4d..0000000 --- a/level/block/yellow_candle_cake.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type YellowCandleCake struct { - Lit string -} - -func (YellowCandleCake) ID() string { - return "minecraft:yellow_candle_cake" -} diff --git a/level/block/yellow_carpet.go b/level/block/yellow_carpet.go deleted file mode 100644 index 9a11936..0000000 --- a/level/block/yellow_carpet.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowCarpet struct { -} - -func (YellowCarpet) ID() string { - return "minecraft:yellow_carpet" -} diff --git a/level/block/yellow_concrete.go b/level/block/yellow_concrete.go deleted file mode 100644 index 1dc4a53..0000000 --- a/level/block/yellow_concrete.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowConcrete struct { -} - -func (YellowConcrete) ID() string { - return "minecraft:yellow_concrete" -} diff --git a/level/block/yellow_concrete_powder.go b/level/block/yellow_concrete_powder.go deleted file mode 100644 index b335f2e..0000000 --- a/level/block/yellow_concrete_powder.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowConcretePowder struct { -} - -func (YellowConcretePowder) ID() string { - return "minecraft:yellow_concrete_powder" -} diff --git a/level/block/yellow_glazed_terracotta.go b/level/block/yellow_glazed_terracotta.go deleted file mode 100644 index f0d29be..0000000 --- a/level/block/yellow_glazed_terracotta.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type YellowGlazedTerracotta struct { - Facing string -} - -func (YellowGlazedTerracotta) ID() string { - return "minecraft:yellow_glazed_terracotta" -} diff --git a/level/block/yellow_shulker_box.go b/level/block/yellow_shulker_box.go deleted file mode 100644 index c687608..0000000 --- a/level/block/yellow_shulker_box.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type YellowShulkerBox struct { - Facing string -} - -func (YellowShulkerBox) ID() string { - return "minecraft:yellow_shulker_box" -} diff --git a/level/block/yellow_stained_glass.go b/level/block/yellow_stained_glass.go deleted file mode 100644 index ab7a791..0000000 --- a/level/block/yellow_stained_glass.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowStainedGlass struct { -} - -func (YellowStainedGlass) ID() string { - return "minecraft:yellow_stained_glass" -} diff --git a/level/block/yellow_stained_glass_pane.go b/level/block/yellow_stained_glass_pane.go deleted file mode 100644 index 6e33745..0000000 --- a/level/block/yellow_stained_glass_pane.go +++ /dev/null @@ -1,13 +0,0 @@ -package block - -type YellowStainedGlassPane struct { - East string - North string - South string - Waterlogged string - West string -} - -func (YellowStainedGlassPane) ID() string { - return "minecraft:yellow_stained_glass_pane" -} diff --git a/level/block/yellow_terracotta.go b/level/block/yellow_terracotta.go deleted file mode 100644 index bb8fedb..0000000 --- a/level/block/yellow_terracotta.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowTerracotta struct { -} - -func (YellowTerracotta) ID() string { - return "minecraft:yellow_terracotta" -} diff --git a/level/block/yellow_wall_banner.go b/level/block/yellow_wall_banner.go deleted file mode 100644 index 62b7752..0000000 --- a/level/block/yellow_wall_banner.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type YellowWallBanner struct { - Facing string -} - -func (YellowWallBanner) ID() string { - return "minecraft:yellow_wall_banner" -} diff --git a/level/block/yellow_wool.go b/level/block/yellow_wool.go deleted file mode 100644 index ce59846..0000000 --- a/level/block/yellow_wool.go +++ /dev/null @@ -1,8 +0,0 @@ -package block - -type YellowWool struct { -} - -func (YellowWool) ID() string { - return "minecraft:yellow_wool" -} diff --git a/level/block/zombie_head.go b/level/block/zombie_head.go deleted file mode 100644 index 200df22..0000000 --- a/level/block/zombie_head.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type ZombieHead struct { - Rotation string -} - -func (ZombieHead) ID() string { - return "minecraft:zombie_head" -} diff --git a/level/block/zombie_wall_head.go b/level/block/zombie_wall_head.go deleted file mode 100644 index 70f4fad..0000000 --- a/level/block/zombie_wall_head.go +++ /dev/null @@ -1,9 +0,0 @@ -package block - -type ZombieWallHead struct { - Facing string -} - -func (ZombieWallHead) ID() string { - return "minecraft:zombie_wall_head" -} diff --git a/nbt/decode.go b/nbt/decode.go index 72e5240..234fa67 100644 --- a/nbt/decode.go +++ b/nbt/decode.go @@ -2,6 +2,7 @@ package nbt import ( "bytes" + "encoding" "errors" "fmt" "io" @@ -23,7 +24,7 @@ func Unmarshal(data []byte, v interface{}) error { // into a struct or map, but not a string. // // This method also return tag name of the root tag. -// In real world, it is often empty, but the API should allows you to get it when ever you want. +// In real world, it is often empty, but the API should allow you to get it when ever you want. func (d *Decoder) Decode(v interface{}) (string, error) { val := reflect.ValueOf(v) if val.Kind() != reflect.Ptr { @@ -39,7 +40,7 @@ func (d *Decoder) Decode(v interface{}) (string, error) { return tagName, fmt.Errorf("nbt: unknown Tag, maybe compressed by %s, uncompress it first", c) } - // We decode val not val.Elem because the NBTDecoder interface + // We decode val not val.Elem because the Unmarshaler interface // test must be applied at the top level of the value. err = d.unmarshal(val, tagType) if err != nil { @@ -64,9 +65,12 @@ func (d *Decoder) checkCompressed(head byte) (compress string) { var ErrEND = errors.New("unexpected TAG_End") func (d *Decoder) unmarshal(val reflect.Value, tagType byte) error { - u, val := indirect(val, tagType == TagEnd) + u, t, val, assign := indirect(val, tagType == TagEnd) + if assign != nil { + defer assign() + } if u != nil { - return u.Decode(tagType, d.r) + return u.UnmarshalNBT(tagType, d.r) } switch tagType { @@ -177,13 +181,20 @@ func (d *Decoder) unmarshal(val reflect.Value, tagType byte) error { if err != nil { return err } - switch vk := val.Kind(); vk { - default: - return errors.New("cannot parse TagString as " + vk.String()) - case reflect.String: - val.SetString(s) - case reflect.Interface: - val.Set(reflect.ValueOf(s)) + if t != nil { + err := t.UnmarshalText([]byte(s)) + if err != nil { + return err + } + } else { + switch vk := val.Kind(); vk { + default: + return errors.New("cannot parse TagString as " + vk.String()) + case reflect.String: + val.SetString(s) + case reflect.Interface: + val.Set(reflect.ValueOf(s)) + } } case TagByteArray: @@ -270,7 +281,7 @@ func (d *Decoder) unmarshal(val reflect.Value, tagType byte) error { } // If we need parse TAG_List into slice, make a new with right length. - // Otherwise if we need parse into array, we check if len(array) are enough. + // Otherwise, if we need parse into array, we check if len(array) are enough. var buf reflect.Value vk := val.Kind() switch vk { @@ -370,14 +381,15 @@ func (d *Decoder) unmarshal(val reflect.Value, tagType byte) error { // indirect walks down v allocating pointers as needed, // until it gets to a non-pointer. -// If it encounters an NBTDecoder, indirect stops and returns that. -// If decodingNull is true, indirect stops at the first settable pointer so it +// If it encounters an Unmarshaler, indirect stops and returns that. +// If decodingNull is true, indirect stops at the first settable pointer, so it // can be set to nil. // // This function is copied and modified from encoding/json -func indirect(v reflect.Value, decodingNull bool) (NBTDecoder, reflect.Value) { +func indirect(v reflect.Value, decodingNull bool) (Unmarshaler, encoding.TextUnmarshaler, reflect.Value, func()) { v0 := v haveAddr := false + var assign func() // If v is a named type and is addressable, // start with its address, so that if the type has pointer methods, @@ -389,12 +401,19 @@ func indirect(v reflect.Value, decodingNull bool) (NBTDecoder, reflect.Value) { for { // Load value from interface, but only if the result will be // usefully addressable. + // Otherwise, try init a new value if v.Kind() == reflect.Interface && !v.IsNil() { e := v.Elem() if e.Kind() == reflect.Ptr && !e.IsNil() && (!decodingNull || e.Elem().Kind() == reflect.Ptr) { haveAddr = false v = e continue + } else if v.CanSet() { + e = reflect.New(e.Type()) + cv := v + assign = func() { cv.Set(e.Elem()) } + v = e + continue } } @@ -417,8 +436,12 @@ func indirect(v reflect.Value, decodingNull bool) (NBTDecoder, reflect.Value) { v.Set(reflect.New(v.Type().Elem())) } if v.Type().NumMethod() > 0 && v.CanInterface() { - if u, ok := v.Interface().(NBTDecoder); ok { - return u, reflect.Value{} + i := v.Interface() + if u, ok := i.(Unmarshaler); ok { + return u, nil, reflect.Value{}, assign + } + if u, ok := i.(encoding.TextUnmarshaler); ok { + return nil, u, v, assign } } @@ -429,7 +452,7 @@ func indirect(v reflect.Value, decodingNull bool) (NBTDecoder, reflect.Value) { v = v.Elem() } } - return nil, v + return nil, nil, v, assign } // rawRead read and discard a value diff --git a/nbt/decode_test.go b/nbt/decode_test.go index bce767b..d5308c3 100644 --- a/nbt/decode_test.go +++ b/nbt/decode_test.go @@ -6,6 +6,7 @@ import ( "io" "math" "reflect" + "strconv" "testing" ) @@ -380,6 +381,31 @@ func TestDecoder_Decode_ErrorString(t *testing.T) { } +type TextBool bool + +func (b TextBool) MarshalText() (text []byte, err error) { + return []byte(strconv.FormatBool(bool(b))), nil +} +func (b *TextBool) UnmarshalText(text []byte) (err error) { + *((*bool)(b)), err = strconv.ParseBool(string(text)) + return +} + +func TestDecoder_Decode_textUnmarshaler(t *testing.T) { + var b TextBool + data := []byte{ + TagString, 0, 0, + 0, 4, 't', 'r', 'u', 'e', + } + _, err := NewDecoder(bytes.NewReader(data)).Decode(&b) + if err != nil { + t.Fatal(err) + } + if b != true { + t.Errorf("b should be true") + } +} + func TestRawMessage_Decode(t *testing.T) { data := []byte{ TagCompound, 0, 2, 'a', 'b', @@ -435,16 +461,16 @@ func TestStringifiedMessage_Decode(t *testing.T) { t.Fatal(tag, err) } else { if tag != "ab" { - t.Fatalf("Decode tag name error: want %s, get: %s", "ab", tag) + t.Fatalf("UnmarshalNBT tag name error: want %s, get: %s", "ab", tag) } if container.Key != 12 { - t.Fatalf("Decode Key error: want %v, get: %v", 12, container.Key) + t.Fatalf("UnmarshalNBT Key error: want %v, get: %v", 12, container.Key) } if container.Value != `"Tn ze"` { - t.Fatalf("Decode Key error: get: %v", container.Value) + t.Fatalf("UnmarshalNBT Key error: get: %v", container.Value) } if container.List != "[{},{}]" { - t.Fatalf("Decode List error: get: %v", container.List) + t.Fatalf("UnmarshalNBT List error: get: %v", container.List) } } } diff --git a/nbt/encode.go b/nbt/encode.go index 91b35d7..a0b0468 100644 --- a/nbt/encode.go +++ b/nbt/encode.go @@ -49,8 +49,8 @@ func (e *Encoder) marshal(val reflect.Value, tagType byte, tagName string) error return err } if val.CanInterface() { - if encoder, ok := val.Interface().(NBTEncoder); ok { - return encoder.Encode(e.w) + if encoder, ok := val.Interface().(Marshaler); ok { + return encoder.MarshalNBT(e.w) } } return e.writeValue(val, tagType) @@ -205,7 +205,7 @@ func getTagType(v reflect.Value) (byte, reflect.Value) { v.Set(reflect.New(v.Type().Elem())) } if v.Type().NumMethod() > 0 && v.CanInterface() { - if u, ok := v.Interface().(NBTEncoder); ok { + if u, ok := v.Interface().(Marshaler); ok { return u.TagType(), v } } @@ -214,7 +214,7 @@ func getTagType(v reflect.Value) (byte, reflect.Value) { } if v.CanInterface() { - if encoder, ok := v.Interface().(NBTEncoder); ok { + if encoder, ok := v.Interface().(Marshaler); ok { return encoder.TagType(), v } } diff --git a/nbt/interface.go b/nbt/interface.go index 386fb9a..7225497 100644 --- a/nbt/interface.go +++ b/nbt/interface.go @@ -2,11 +2,11 @@ package nbt import "io" -type NBTDecoder interface { - Decode(tagType byte, r DecoderReader) error +type Unmarshaler interface { + UnmarshalNBT(tagType byte, r DecoderReader) error } -type NBTEncoder interface { +type Marshaler interface { TagType() byte - Encode(w io.Writer) error + MarshalNBT(w io.Writer) error } diff --git a/nbt/rawmsg.go b/nbt/rawmsg.go index 6d55e78..6976e71 100644 --- a/nbt/rawmsg.go +++ b/nbt/rawmsg.go @@ -21,12 +21,12 @@ func (m RawMessage) TagType() byte { return m.Type } -func (m RawMessage) Encode(w io.Writer) error { +func (m RawMessage) MarshalNBT(w io.Writer) error { _, err := w.Write(m.Data) return err } -func (m *RawMessage) Decode(tagType byte, r DecoderReader) error { +func (m *RawMessage) UnmarshalNBT(tagType byte, r DecoderReader) error { if tagType == TagEnd { return ErrEND } @@ -66,7 +66,7 @@ func (m RawMessage) Unmarshal(v interface{}) error { d := NewDecoder(bytes.NewReader(m.Data)) val := reflect.ValueOf(v) if val.Kind() != reflect.Ptr { - return errors.New("nbt: non-pointer passed to Decode") + return errors.New("nbt: non-pointer passed to UnmarshalNBT") } return d.unmarshal(val, m.Type) } diff --git a/nbt/snbt.go b/nbt/snbt.go index dd0d1c5..3080778 100644 --- a/nbt/snbt.go +++ b/nbt/snbt.go @@ -56,13 +56,13 @@ func (m StringifiedMessage) TagType() byte { } } -func (m StringifiedMessage) Encode(w io.Writer) error { +func (m StringifiedMessage) MarshalNBT(w io.Writer) error { d := decodeState{data: []byte(m)} d.scan.reset() return writeValue(NewEncoder(w), &d, false, "") } -func (m *StringifiedMessage) Decode(tagType byte, r DecoderReader) error { +func (m *StringifiedMessage) UnmarshalNBT(tagType byte, r DecoderReader) error { if tagType == TagEnd { return ErrEND } diff --git a/nbt/snbt_decode_test.go b/nbt/snbt_decode_test.go index b1f7eed..91bdbc7 100644 --- a/nbt/snbt_decode_test.go +++ b/nbt/snbt_decode_test.go @@ -159,7 +159,7 @@ func TestStringifiedMessage_Encode(t *testing.T) { {`[B; 1B, 2B, 3B]`, []byte{0, 0, 0, 3, 1, 2, 3}}, {`[{},{}]`, []byte{TagCompound, 0, 0, 0, 2, 0, 0}}, } { - if err := StringifiedMessage(v.snbt).Encode(&buff); err != nil { + if err := StringifiedMessage(v.snbt).MarshalNBT(&buff); err != nil { t.Errorf("Encode SNBT error: %v", err) } if !bytes.Equal(buff.Bytes(), v.data) {