Repository: kikugie/litematica-tools (language: python)

Issue:
Rewrite schematic parsing to be more versatile



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index fc71634..47328e4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,10 @@
+.idea/
+cache/
+*.egg_info/
+
 venv/
 
 *.litematic
-tests/*.json
\ No newline at end of file
+tests/*.json
+/litematicparse/
+/tests/
diff --git a/.idea/.gitignore b/.idea/.gitignore
deleted file mode 100644
index 26d3352..0000000
--- a/.idea/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
diff --git a/.idea/discord.xml b/.idea/discord.xml
deleted file mode 100644
index cd711a0..0000000
--- a/.idea/discord.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="DiscordProjectSettings">
-    <option name="show" value="PROJECT_FILES" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
deleted file mode 100644
index 950681b..0000000
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <profile version="1.0">
-    <option name="myName" value="Project Default" />
-    <inspection_tool class="PyBroadExceptionInspection" enabled="false" level="WEAK WARNING" enabled_by_default="false" />
-    <inspection_tool class="PyPep8Inspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
-      <option name="ignoredErrors">
-        <list>
-          <option value="E303" />
-          <option value="E127" />
-        </list>
-      </option>
-    </inspection_tool>
-  </profile>
-</component>
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
deleted file mode 100644
index 105ce2d..0000000
--- a/.idea/inspectionProfiles/profiles_settings.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<component name="InspectionProjectProfileManager">
-  <settings>
-    <option name="USE_PROJECT_PROFILE" value="false" />
-    <version value="1.0" />
-  </settings>
-</component>
\ No newline at end of file
diff --git a/.idea/litematica-tools-dev.iml b/.idea/litematica-tools-dev.iml
deleted file mode 100644
index 74d515a..0000000
--- a/.idea/litematica-tools-dev.iml
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<module type="PYTHON_MODULE" version="4">
-  <component name="NewModuleRootManager">
-    <content url="file://$MODULE_DIR$">
-      <excludeFolder url="file://$MODULE_DIR$/venv" />
-    </content>
-    <orderEntry type="inheritedJdk" />
-    <orderEntry type="sourceFolder" forTests="false" />
-  </component>
-</module>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 4ea5308..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.6 (litematica-tools-dev)" project-jdk-type="Python SDK" />
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index c0bec90..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="ProjectModuleManager">
-    <modules>
-      <module fileurl="file://$PROJECT_DIR$/.idea/litematica-tools-dev.iml" filepath="$PROJECT_DIR$/.idea/litematica-tools-dev.iml" />
-    </modules>
-  </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
-  <component name="VcsDirectoryMappings">
-    <mapping directory="$PROJECT_DIR$" vcs="Git" />
-  </component>
-</project>
\ No newline at end of file
diff --git a/litematica_tools.egg-info/PKG-INFO b/litematica_tools.egg-info/PKG-INFO
new file mode 100644
index 0000000..e60775b
--- /dev/null
+++ b/litematica_tools.egg-info/PKG-INFO
@@ -0,0 +1,10 @@
+Metadata-Version: 2.1
+Name: litematica-tools
+Version: 1.0.0
+Summary: UNKNOWN
+Home-page: UNKNOWN
+License: UNKNOWN
+Platform: UNKNOWN
+
+UNKNOWN
+
diff --git a/litematica_tools.egg-info/SOURCES.txt b/litematica_tools.egg-info/SOURCES.txt
new file mode 100644
index 0000000..7660420
--- /dev/null
+++ b/litematica_tools.egg-info/SOURCES.txt
@@ -0,0 +1,13 @@
+README.md
+setup.py
+litematica_tools/__init__.py
+litematica_tools/material_list.py
+litematica_tools/schematic_parse.py
+litematica_tools.egg-info/PKG-INFO
+litematica_tools.egg-info/SOURCES.txt
+litematica_tools.egg-info/dependency_links.txt
+litematica_tools.egg-info/entry_points.txt
+litematica_tools.egg-info/requires.txt
+litematica_tools.egg-info/top_level.txt
+litematica_tools/scripts/__init__.py
+litematica_tools/scripts/cli.py
\ No newline at end of file
diff --git a/litematica_tools.egg-info/dependency_links.txt b/litematica_tools.egg-info/dependency_links.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/litematica_tools.egg-info/dependency_links.txt
@@ -0,0 +1,1 @@
+
diff --git a/litematica_tools.egg-info/entry_points.txt b/litematica_tools.egg-info/entry_points.txt
new file mode 100644
index 0000000..fea9119
--- /dev/null
+++ b/litematica_tools.egg-info/entry_points.txt
@@ -0,0 +1,3 @@
+[console_scripts]
+litematica = litematica_tools.scripts.cli:cli
+
diff --git a/litematica_tools.egg-info/requires.txt b/litematica_tools.egg-info/requires.txt
new file mode 100644
index 0000000..d77b06d
--- /dev/null
+++ b/litematica_tools.egg-info/requires.txt
@@ -0,0 +1,1 @@
+Click
diff --git a/litematica_tools.egg-info/top_level.txt b/litematica_tools.egg-info/top_level.txt
new file mode 100644
index 0000000..dea7eaa
--- /dev/null
+++ b/litematica_tools.egg-info/top_level.txt
@@ -0,0 +1,1 @@
+litematica_tools
diff --git a/litematica_tools/__init__.py b/litematica_tools/__init__.py
new file mode 100644
index 0000000..adb6bd4
--- /dev/null
+++ b/litematica_tools/__init__.py
@@ -0,0 +1,2 @@
+from .material_list import MaterialList, Counter
+from .schematic_parse import NBT_File, Region
diff --git a/litematica_tools/config/16-stackables.json b/litematica_tools/config/16-stackables.json
new file mode 100644
index 0000000..5ca069b
--- /dev/null
+++ b/litematica_tools/config/16-stackables.json
@@ -0,0 +1,33 @@
+[
+  "minecraft:acacia_sign",
+  "minecraft:armor_stand",
+  "minecraft:birch_sign",
+  "minecraft:black_banner",
+  "minecraft:blue_banner",
+  "minecraft:brown_banner",
+  "minecraft:bucket",
+  "minecraft:crimson_sign",
+  "minecraft:cyan_banner",
+  "minecraft:dark_oak_sign",
+  "minecraft:egg",
+  "minecraft:ender_pearl",
+  "minecraft:gray_banner",
+  "minecraft:green_banner",
+  "minecraft:honey_bottle",
+  "minecraft:jungle_sign",
+  "minecraft:light_blue_banner",
+  "minecraft:light_gray_banner",
+  "minecraft:lime_banner",
+  "minecraft:magenta_banner",
+  "minecraft:oak_sign",
+  "minecraft:orange_banner",
+  "minecraft:pink_banner",
+  "minecraft:purple_banner",
+  "minecraft:red_banner",
+  "minecraft:snowball",
+  "minecraft:spruce_sign",
+  "minecraft:warped_sign",
+  "minecraft:white_banner",
+  "minecraft:written_book",
+  "minecraft:yellow_banner"
+]
\ No newline at end of file
diff --git a/litematica_tools/config/block_config.json b/litematica_tools/config/block_config.json
new file mode 100644
index 0000000..aa20974
--- /dev/null
+++ b/litematica_tools/config/block_config.json
@@ -0,0 +1,274 @@
+{
+  "minecraft:acacia_wall_sign": "minecraft:acacia_sign",
+  "minecraft:attached_melon_stem": "minecraft:melon_seeds",
+  "minecraft:attached_pumpkin_stem": "minecraft:pumpkin_seeds",
+  "minecraft:bamboo_sapling": "minecraft:bamboo",
+  "minecraft:beetroots": "minecraft:beetroot_seeds",
+  "minecraft:big_dripleaf_stem": "minecraft:big_dripleaf",
+  "minecraft:birch_wall_sign": "minecraft:birch_sign",
+  "minecraft:black_candle_cake": [
+    "minecraft:cake",
+    "minecraft:black_candle"
+  ],
+  "minecraft:black_wall_banner": "minecraft:black_banner",
+  "minecraft:blue_candle_cake": [
+    "minecraft:cake",
+    "minecraft:blue_candle"
+  ],
+  "minecraft:blue_wall_banner": "minecraft:blue_banner",
+  "minecraft:brain_coral_wall_fan": "minecraft:brain_coral_fan",
+  "minecraft:brown_candle_cake": [
+    "minecraft:cake",
+    "minecraft:brown_candle"
+  ],
+  "minecraft:brown_wall_banner": "minecraft:brown_banner",
+  "minecraft:bubble_column": "minecraft:water_bucket",
+  "minecraft:bubble_coral_wall_fan": "minecraft:bubble_coral_fan",
+  "minecraft:candle_cake": [
+    "minecraft:cake",
+    "minecraft:candle"
+  ],
+  "minecraft:carrots": "minecraft:carrot",
+  "minecraft:cave_vines": "minecraft:glow_berries",
+  "minecraft:cave_vines_plant": "minecraft:glow_berries",
+  "minecraft:cocoa": "minecraft:cocoa_beans",
+  "minecraft:creeper_wall_head": "minecraft:creeper_head",
+  "minecraft:crimson_wall_sign": "minecraft:crimson_sign",
+  "minecraft:cyan_candle_cake": [
+    "minecraft:cake",
+    "minecraft:cyan_candle"
+  ],
+  "minecraft:cyan_wall_banner": "minecraft:cyan_banner",
+  "minecraft:dark_oak_wall_sign": "minecraft:dark_oak_sign",
+  "minecraft:dead_brain_coral_wall_fan": "minecraft:dead_brain_coral_fan",
+  "minecraft:dead_bubble_coral_wall_fan": "minecraft:dead_bubble_coral_fan",
+  "minecraft:dead_fire_coral_wall_fan": "minecraft:dead_fire_coral_fan",
+  "minecraft:dead_horn_coral_wall_fan": "minecraft:dead_horn_coral_fan",
+  "minecraft:dead_tube_coral_wall_fan": "minecraft:dead_tube_coral_fan",
+  "minecraft:dragon_wall_head": "minecraft:dragon_head",
+  "minecraft:fire_coral_wall_fan": "minecraft:fire_coral_fan",
+  "minecraft:frosted_ice": "minecraft:water_bucket",
+  "minecraft:gray_candle_cake": [
+    "minecraft:cake",
+    "minecraft:gray_candle"
+  ],
+  "minecraft:gray_wall_banner": "minecraft:gray_banner",
+  "minecraft:green_candle_cake": [
+    "minecraft:cake",
+    "minecraft:green_candle"
+  ],
+  "minecraft:green_wall_banner": "minecraft:green_banner",
+  "minecraft:horn_coral_wall_fan": "minecraft:horn_coral_fan",
+  "minecraft:jungle_wall_sign": "minecraft:jungle_sign",
+  "minecraft:kelp_plant": "minecraft:kelp",
+  "minecraft:lava": "minecraft:lava_bucket",
+  "minecraft:lava_cauldron": [
+    "minecraft:cauldron",
+    "minecraft:lava_bucket"
+  ],
+  "minecraft:light_blue_candle_cake": [
+    "minecraft:cake",
+    "minecraft:light_blue_candle"
+  ],
+  "minecraft:light_blue_wall_banner": "minecraft:light_blue_banner",
+  "minecraft:light_gray_candle_cake": [
+    "minecraft:cake",
+    "minecraft:light_gray_candle"
+  ],
+  "minecraft:light_gray_wall_banner": "minecraft:light_gray_banner",
+  "minecraft:lime_candle_cake": [
+    "minecraft:cake",
+    "minecraft:lime_candle"
+  ],
+  "minecraft:lime_wall_banner": "minecraft:lime_banner",
+  "minecraft:magenta_candle_cake": [
+    "minecraft:cake",
+    "minecraft:magenta_candle"
+  ],
+  "minecraft:magenta_wall_banner": "minecraft:magenta_banner",
+  "minecraft:melon_stem": "minecraft:melon_seeds",
+  "minecraft:oak_wall_sign": "minecraft:oak_sign",
+  "minecraft:orange_candle_cake": [
+    "minecraft:cake",
+    "minecraft:orange_candle"
+  ],
+  "minecraft:orange_wall_banner": "minecraft:orange_banner",
+  "minecraft:pink_candle_cake": [
+    "minecraft:cake",
+    "minecraft:pink_candle"
+  ],
+  "minecraft:pink_wall_banner": "minecraft:pink_banner",
+  "minecraft:player_wall_head": "minecraft:player_head",
+  "minecraft:potatoes": "minecraft:potato",
+  "minecraft:potted_acacia_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:acacia_sapling"
+  ],
+  "minecraft:potted_allium": [
+    "minecraft:flower_pot",
+    "minecraft:allium"
+  ],
+  "minecraft:potted_azalea_bush": [
+    "minecraft:flower_pot",
+    "minecraft:azalea"
+  ],
+  "minecraft:potted_azure_bluet": [
+    "minecraft:flower_pot",
+    "minecraft:azure_bluet"
+  ],
+  "minecraft:potted_bamboo": [
+    "minecraft:flower_pot",
+    "minecraft:bamboo"
+  ],
+  "minecraft:potted_birch_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:birch_sapling"
+  ],
+  "minecraft:potted_blue_orchid": [
+    "minecraft:flower_pot",
+    "minecraft:blue_orchid"
+  ],
+  "minecraft:potted_brown_mushroom": [
+    "minecraft:flower_pot",
+    "minecraft:brown_mushroom"
+  ],
+  "minecraft:potted_cactus": [
+    "minecraft:flower_pot",
+    "minecraft:cactus"
+  ],
+  "minecraft:potted_cornflower": [
+    "minecraft:flower_pot",
+    "minecraft:cornflower"
+  ],
+  "minecraft:potted_crimson_fungus": [
+    "minecraft:flower_pot",
+    "minecraft:crimson_fungus"
+  ],
+  "minecraft:potted_crimson_roots": [
+    "minecraft:flower_pot",
+    "minecraft:crimson_roots"
+  ],
+  "minecraft:potted_dandelion": [
+    "minecraft:flower_pot",
+    "minecraft:dandelion"
+  ],
+  "minecraft:potted_dark_oak_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:dark_oak_sapling"
+  ],
+  "minecraft:potted_dead_bush": [
+    "minecraft:flower_pot",
+    "minecraft:dead_bush"
+  ],
+  "minecraft:potted_fern": [
+    "minecraft:flower_pot",
+    "minecraft:fern"
+  ],
+  "minecraft:potted_flowering_azalea_bush": [
+    "minecraft:flower_pot",
+    "minecraft:flowering_azalea"
+  ],
+  "minecraft:potted_jungle_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:jungle_sapling"
+  ],
+  "minecraft:potted_lily_of_the_valley": [
+    "minecraft:flower_pot",
+    "minecraft:lily_of_the_valley"
+  ],
+  "minecraft:potted_oak_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:oak_sapling"
+  ],
+  "minecraft:potted_orange_tulip": [
+    "minecraft:flower_pot",
+    "minecraft:orange_tulip"
+  ],
+  "minecraft:potted_oxeye_daisy": [
+    "minecraft:flower_pot",
+    "minecraft:oxeye_daisy"
+  ],
+  "minecraft:potted_pink_tulip": [
+    "minecraft:flower_pot",
+    "minecraft:pink_tulip"
+  ],
+  "minecraft:potted_poppy": [
+    "minecraft:flower_pot",
+    "minecraft:poppy"
+  ],
+  "minecraft:potted_red_mushroom": [
+    "minecraft:flower_pot",
+    "minecraft:red_mushroom"
+  ],
+  "minecraft:potted_red_tulip": [
+    "minecraft:flower_pot",
+    "minecraft:red_tulip"
+  ],
+  "minecraft:potted_spruce_sapling": [
+    "minecraft:flower_pot",
+    "minecraft:spruce_sapling"
+  ],
+  "minecraft:potted_warped_fungus": [
+    "minecraft:flower_pot",
+    "minecraft:warped_fungus"
+  ],
+  "minecraft:potted_warped_roots": [
+    "minecraft:flower_pot",
+    "minecraft:warped_roots"
+  ],
+  "minecraft:potted_white_tulip": [
+    "minecraft:flower_pot",
+    "minecraft:white_tulip"
+  ],
+  "minecraft:potted_wither_rose": [
+    "minecraft:flower_pot",
+    "minecraft:wither_rose"
+  ],
+  "minecraft:powder_snow": "minecraft:powder_snow_bucket",
+  "minecraft:powder_snow_cauldron": [
+    "minecraft:cauldron",
+    "minecraft:powder_snow_bucket"
+  ],
+  "minecraft:pumpkin_stem": "minecraft:pumpkin_seeds",
+  "minecraft:purple_candle_cake": [
+    "minecraft:cake",
+    "minecraft:purple_candle"
+  ],
+  "minecraft:purple_wall_banner": "minecraft:purple_banner",
+  "minecraft:red_candle_cake": [
+    "minecraft:cake",
+    "minecraft:red_candle"
+  ],
+  "minecraft:red_wall_banner": "minecraft:red_banner",
+  "minecraft:redstone_wall_torch": "minecraft:redstone_torch",
+  "minecraft:redstone_wire": "minecraft:redstone",
+  "minecraft:skeleton_wall_skull": "minecraft:skeleton_skull",
+  "minecraft:soul_wall_torch": "minecraft:soul_torch",
+  "minecraft:spruce_wall_sign": "minecraft:spruce_sign",
+  "minecraft:sweet_berry_bush": "minecraft:sweet_berries",
+  "minecraft:tall_seagrass": "minecraft:tall_seagrass",
+  "minecraft:tripwire": "minecraft:string",
+  "minecraft:tube_coral_wall_fan": "minecraft:tube_coral_fan",
+  "minecraft:twisting_vines_plant": "twisting_vines",
+  "minecraft:wall_torch": "minecraft:torch",
+  "minecraft:warped_wall_sign": "minecraft:warped_sign",
+  "minecraft:water": "minecraft:water_bucket",
+  "minecraft:water_cauldron": [
+    "minecraft:cauldron",
+    "minecraft:water_bucket"
+  ],
+  "minecraft:weeping_vines_plant": "minecraft:weeping_vines",
+  "minecraft:wheat": "minecraft:wheat_seeds",
+  "minecraft:white_candle_cake": [
+    "minecraft:cake",
+    "minecraft:white_candle"
+  ],
+  "minecraft:white_wall_banner": "minecraft:white_banner",
+  "minecraft:wither_skeleton_wall_skull": "minecraft:wither_skeleton_skull",
+  "minecraft:yellow_candle_cake": [
+    "minecraft:cake",
+    "minecraft:yellow_candle"
+  ],
+  "minecraft:yellow_wall_banner": "minecraft:yellow_banner",
+  "minecraft:zombie_wall_head": "minecraft:zombie_head"
+}
\ No newline at end of file
diff --git a/litematica_tools/config/block_ignore.json b/litematica_tools/config/block_ignore.json
new file mode 100644
index 0000000..0073a13
--- /dev/null
+++ b/litematica_tools/config/block_ignore.json
@@ -0,0 +1,13 @@
+[
+  "minecraft:air",
+  "minecraft:cave_air",
+  "minecraft:moving_piston",
+  "minecraft:fire",
+  "minecraft:end_gateway",
+  "minecraft:piston_head",
+  "minecraft:void_air",
+  "minecraft:nether_portal",
+  "minecraft:soul_fire",
+  "minecraft:flowing_water",
+  "minecraft:flowing_lava"
+]
\ No newline at end of file
diff --git a/litematicparse/name_references.json b/litematica_tools/config/name_references.json
similarity index 85%
rename from litematicparse/name_references.json
rename to litematica_tools/config/name_references.json
index 756a3d9..9e4ed48 100644
--- a/litematicparse/name_references.json
+++ b/litematica_tools/config/name_references.json
@@ -13,8 +13,10 @@
   "minecraft:acacia_slab": "Acacia Slab",
   "minecraft:acacia_stairs": "Acacia Stairs",
   "minecraft:acacia_trapdoor": "Acacia Trapdoor",
+  "minecraft:acacia_wall_sign": "Acacia Wall Sign",
   "minecraft:acacia_wood": "Acacia Wood",
   "minecraft:activator_rail": "Activator Rail",
+  "minecraft:air": "Air",
   "minecraft:allium": "Allium",
   "minecraft:amethyst_block": "Block of Amethyst",
   "minecraft:amethyst_cluster": "Amethyst Cluster",
@@ -26,9 +28,11 @@
   "minecraft:andesite_wall": "Andesite Wall",
   "minecraft:anvil": "Anvil",
   "minecraft:apple": "Apple",
-  "minecraft:area_effect_cloud": "Area effect cloud",
-  "minecraft:armor_stand": "Armor stand",
+  "minecraft:area_effect_cloud": "Area Effect Cloud",
+  "minecraft:armor_stand": "Armor Stand",
   "minecraft:arrow": "Arrow",
+  "minecraft:attached_melon_stem": "Attached Melon Stem",
+  "minecraft:attached_pumpkin_stem": "Attached Pumpkin Stem",
   "minecraft:axolotl": "Axolotl",
   "minecraft:axolotl_bucket": "Bucket of Axolotl",
   "minecraft:axolotl_spawn_egg": "Axolotl Spawn Egg",
@@ -37,6 +41,7 @@
   "minecraft:azure_bluet": "Azure Bluet",
   "minecraft:baked_potato": "Baked Potato",
   "minecraft:bamboo": "Bamboo",
+  "minecraft:bamboo_sapling": "Bamboo Shoot",
   "minecraft:barrel": "Barrel",
   "minecraft:barrier": "Barrier",
   "minecraft:basalt": "Basalt",
@@ -52,8 +57,10 @@
   "minecraft:beetroot": "Beetroot",
   "minecraft:beetroot_seeds": "Beetroot Seeds",
   "minecraft:beetroot_soup": "Beetroot Soup",
+  "minecraft:beetroots": "Beetroots",
   "minecraft:bell": "Bell",
   "minecraft:big_dripleaf": "Big Dripleaf",
+  "minecraft:big_dripleaf_stem": "Big Dripleaf Stem",
   "minecraft:birch_boat": "Birch Boat",
   "minecraft:birch_button": "Birch Button",
   "minecraft:birch_door": "Birch Door",
@@ -68,10 +75,12 @@
   "minecraft:birch_slab": "Birch Slab",
   "minecraft:birch_stairs": "Birch Stairs",
   "minecraft:birch_trapdoor": "Birch Trapdoor",
+  "minecraft:birch_wall_sign": "Birch Wall Sign",
   "minecraft:birch_wood": "Birch Wood",
   "minecraft:black_banner": "Black Banner",
   "minecraft:black_bed": "Black Bed",
   "minecraft:black_candle": "Black Candle",
+  "minecraft:black_candle_cake": "Cake with Black Candle",
   "minecraft:black_carpet": "Black Carpet",
   "minecraft:black_concrete": "Black Concrete",
   "minecraft:black_concrete_powder": "Black Concrete Powder",
@@ -81,6 +90,7 @@
   "minecraft:black_stained_glass": "Black Stained Glass",
   "minecraft:black_stained_glass_pane": "Black Stained Glass Pane",
   "minecraft:black_terracotta": "Black Terracotta",
+  "minecraft:black_wall_banner": "Black Wall Banner",
   "minecraft:black_wool": "Black Wool",
   "minecraft:blackstone": "Blackstone",
   "minecraft:blackstone_slab": "Blackstone Slab",
@@ -94,6 +104,7 @@
   "minecraft:blue_banner": "Blue Banner",
   "minecraft:blue_bed": "Blue Bed",
   "minecraft:blue_candle": "Blue Candle",
+  "minecraft:blue_candle_cake": "Cake with Blue Candle",
   "minecraft:blue_carpet": "Blue Carpet",
   "minecraft:blue_concrete": "Blue Concrete",
   "minecraft:blue_concrete_powder": "Blue Concrete Powder",
@@ -105,6 +116,7 @@
   "minecraft:blue_stained_glass": "Blue Stained Glass",
   "minecraft:blue_stained_glass_pane": "Blue Stained Glass Pane",
   "minecraft:blue_terracotta": "Blue Terracotta",
+  "minecraft:blue_wall_banner": "Blue Wall Banner",
   "minecraft:blue_wool": "Blue Wool",
   "minecraft:boat": "Boat",
   "minecraft:bone": "Bone",
@@ -117,6 +129,7 @@
   "minecraft:brain_coral": "Brain Coral",
   "minecraft:brain_coral_block": "Brain Coral Block",
   "minecraft:brain_coral_fan": "Brain Coral Fan",
+  "minecraft:brain_coral_wall_fan": "Brain Coral Wall Fan",
   "minecraft:bread": "Bread",
   "minecraft:brewing_stand": "Brewing Stand",
   "minecraft:brick": "Brick",
@@ -127,6 +140,7 @@
   "minecraft:brown_banner": "Brown Banner",
   "minecraft:brown_bed": "Brown Bed",
   "minecraft:brown_candle": "Brown Candle",
+  "minecraft:brown_candle_cake": "Cake with Brown Candle",
   "minecraft:brown_carpet": "Brown Carpet",
   "minecraft:brown_concrete": "Brown Concrete",
   "minecraft:brown_concrete_powder": "Brown Concrete Powder",
@@ -138,10 +152,13 @@
   "minecraft:brown_stained_glass": "Brown Stained Glass",
   "minecraft:brown_stained_glass_pane": "Brown Stained Glass Pane",
   "minecraft:brown_terracotta": "Brown Terracotta",
+  "minecraft:brown_wall_banner": "Brown Wall Banner",
   "minecraft:brown_wool": "Brown Wool",
+  "minecraft:bubble_column": "Bubble Column",
   "minecraft:bubble_coral": "Bubble Coral",
   "minecraft:bubble_coral_block": "Bubble Coral Block",
   "minecraft:bubble_coral_fan": "Bubble Coral Fan",
+  "minecraft:bubble_coral_wall_fan": "Bubble Coral Wall Fan",
   "minecraft:bucket": "Bucket",
   "minecraft:budding_amethyst": "Budding Amethyst",
   "minecraft:bundle": "Bundle",
@@ -150,15 +167,20 @@
   "minecraft:calcite": "Calcite",
   "minecraft:campfire": "Campfire",
   "minecraft:candle": "Candle",
+  "minecraft:candle_cake": "Cake with Candle",
   "minecraft:carrot": "Carrot",
   "minecraft:carrot_on_a_stick": "Carrot on a Stick",
+  "minecraft:carrots": "Carrots",
   "minecraft:cartography_table": "Cartography Table",
   "minecraft:carved_pumpkin": "Carved Pumpkin",
   "minecraft:cat": "Cat",
   "minecraft:cat_spawn_egg": "Cat Spawn Egg",
   "minecraft:cauldron": "Cauldron",
-  "minecraft:cave_spider": "Cave spider",
+  "minecraft:cave_air": "Cave Air",
+  "minecraft:cave_spider": "Cave Spider",
   "minecraft:cave_spider_spawn_egg": "Cave Spider Spawn Egg",
+  "minecraft:cave_vines": "Cave Vines",
+  "minecraft:cave_vines_plant": "Cave Vines Plant",
   "minecraft:chain": "Chain",
   "minecraft:chain_command_block": "Chain Command Block",
   "minecraft:chainmail_boots": "Chainmail Boots",
@@ -197,6 +219,7 @@
   "minecraft:cobblestone_stairs": "Cobblestone Stairs",
   "minecraft:cobblestone_wall": "Cobblestone Wall",
   "minecraft:cobweb": "Cobweb",
+  "minecraft:cocoa": "Cocoa",
   "minecraft:cocoa_beans": "Cocoa Beans",
   "minecraft:cod": "Cod",
   "minecraft:cod_bucket": "Bucket of Cod",
@@ -231,6 +254,7 @@
   "minecraft:creeper_banner_pattern": "Creeper Banner Pattern",
   "minecraft:creeper_head": "Creeper Head",
   "minecraft:creeper_spawn_egg": "Creeper Spawn Egg",
+  "minecraft:creeper_wall_head": "Creeper Wall Head",
   "minecraft:crimson_button": "Crimson Button",
   "minecraft:crimson_door": "Crimson Door",
   "minecraft:crimson_fence": "Crimson Fence",
@@ -246,6 +270,7 @@
   "minecraft:crimson_stairs": "Crimson Stairs",
   "minecraft:crimson_stem": "Crimson Stem",
   "minecraft:crimson_trapdoor": "Crimson Trapdoor",
+  "minecraft:crimson_wall_sign": "Crimson Wall Sign",
   "minecraft:crossbow": "Crossbow",
   "minecraft:crying_obsidian": "Crying Obsidian",
   "minecraft:cut_copper": "Cut Copper",
@@ -258,6 +283,7 @@
   "minecraft:cyan_banner": "Cyan Banner",
   "minecraft:cyan_bed": "Cyan Bed",
   "minecraft:cyan_candle": "Cyan Candle",
+  "minecraft:cyan_candle_cake": "Cake with Cyan Candle",
   "minecraft:cyan_carpet": "Cyan Carpet",
   "minecraft:cyan_concrete": "Cyan Concrete",
   "minecraft:cyan_concrete_powder": "Cyan Concrete Powder",
@@ -267,6 +293,7 @@
   "minecraft:cyan_stained_glass": "Cyan Stained Glass",
   "minecraft:cyan_stained_glass_pane": "Cyan Stained Glass Pane",
   "minecraft:cyan_terracotta": "Cyan Terracotta",
+  "minecraft:cyan_wall_banner": "Cyan Wall Banner",
   "minecraft:cyan_wool": "Cyan Wool",
   "minecraft:damaged_anvil": "Damaged Anvil",
   "minecraft:dandelion": "Dandelion",
@@ -284,6 +311,7 @@
   "minecraft:dark_oak_slab": "Dark Oak Slab",
   "minecraft:dark_oak_stairs": "Dark Oak Stairs",
   "minecraft:dark_oak_trapdoor": "Dark Oak Trapdoor",
+  "minecraft:dark_oak_wall_sign": "Dark Oak Wall Sign",
   "minecraft:dark_oak_wood": "Dark Oak Wood",
   "minecraft:dark_prismarine": "Dark Prismarine",
   "minecraft:dark_prismarine_slab": "Dark Prismarine Slab",
@@ -292,19 +320,24 @@
   "minecraft:dead_brain_coral": "Dead Brain Coral",
   "minecraft:dead_brain_coral_block": "Dead Brain Coral Block",
   "minecraft:dead_brain_coral_fan": "Dead Brain Coral Fan",
+  "minecraft:dead_brain_coral_wall_fan": "Dead Brain Coral Wall Fan",
   "minecraft:dead_bubble_coral": "Dead Bubble Coral",
   "minecraft:dead_bubble_coral_block": "Dead Bubble Coral Block",
   "minecraft:dead_bubble_coral_fan": "Dead Bubble Coral Fan",
+  "minecraft:dead_bubble_coral_wall_fan": "Dead Bubble Coral Wall Fan",
   "minecraft:dead_bush": "Dead Bush",
   "minecraft:dead_fire_coral": "Dead Fire Coral",
   "minecraft:dead_fire_coral_block": "Dead Fire Coral Block",
   "minecraft:dead_fire_coral_fan": "Dead Fire Coral Fan",
+  "minecraft:dead_fire_coral_wall_fan": "Dead Fire Coral Wall Fan",
   "minecraft:dead_horn_coral": "Dead Horn Coral",
   "minecraft:dead_horn_coral_block": "Dead Horn Coral Block",
   "minecraft:dead_horn_coral_fan": "Dead Horn Coral Fan",
+  "minecraft:dead_horn_coral_wall_fan": "Dead Horn Coral Wall Fan",
   "minecraft:dead_tube_coral": "Dead Tube Coral",
   "minecraft:dead_tube_coral_block": "Dead Tube Coral Block",
   "minecraft:dead_tube_coral_fan": "Dead Tube Coral Fan",
+  "minecraft:dead_tube_coral_wall_fan": "Dead Tube Coral Wall Fan",
   "minecraft:debug_stick": "Debug Stick",
   "minecraft:deepslate": "Deepslate",
   "minecraft:deepslate_brick_slab": "Deepslate Brick Slab",
@@ -350,8 +383,9 @@
   "minecraft:donkey_spawn_egg": "Donkey Spawn Egg",
   "minecraft:dragon_breath": "Dragon's Breath",
   "minecraft:dragon_egg": "Dragon Egg",
-  "minecraft:dragon_fireball": "Dragon fireball",
+  "minecraft:dragon_fireball": "Dragon Fireball",
   "minecraft:dragon_head": "Dragon Head",
+  "minecraft:dragon_wall_head": "Dragon Wall Head",
   "minecraft:dried_kelp": "Dried Kelp",
   "minecraft:dried_kelp_block": "Dried Kelp Block",
   "minecraft:dripstone_block": "Dripstone Block",
@@ -368,7 +402,9 @@
   "minecraft:enchanted_book": "Enchanted Book",
   "minecraft:enchanted_golden_apple": "Enchanted Golden Apple",
   "minecraft:enchanting_table": "Enchanting Table",
-  "minecraft:end_crystal": "End crystal",
+  "minecraft:end_crystal": "End Crystal",
+  "minecraft:end_gateway": "End Gateway",
+  "minecraft:end_portal": "End Portal",
   "minecraft:end_portal_frame": "End Portal Frame",
   "minecraft:end_rod": "End Rod",
   "minecraft:end_stone": "End Stone",
@@ -377,36 +413,39 @@
   "minecraft:end_stone_brick_wall": "End Stone Brick Wall",
   "minecraft:end_stone_bricks": "End Stone Bricks",
   "minecraft:ender_chest": "Ender Chest",
-  "minecraft:ender_dragon": "Ender dragon",
+  "minecraft:ender_dragon": "Ender Dragon",
   "minecraft:ender_eye": "Eye of Ender",
-  "minecraft:ender_pearl": "Ender pearl",
+  "minecraft:ender_pearl": "Ender Pearl",
   "minecraft:enderman": "Enderman",
   "minecraft:enderman_spawn_egg": "Enderman Spawn Egg",
   "minecraft:endermite": "Endermite",
   "minecraft:endermite_spawn_egg": "Endermite Spawn Egg",
   "minecraft:evoker": "Evoker",
-  "minecraft:evoker_fangs": "Evoker fangs",
+  "minecraft:evoker_fangs": "Evoker Fangs",
   "minecraft:evoker_spawn_egg": "Evoker Spawn Egg",
-  "minecraft:experience_bottle": "Thrown experience bottle",
-  "minecraft:experience_orb": "Experience orb",
+  "minecraft:experience_bottle": "Bottle o' Enchanting",
+  "minecraft:experience_orb": "Experience Orb",
   "minecraft:exposed_copper": "Exposed Copper",
   "minecraft:exposed_cut_copper": "Exposed Cut Copper",
   "minecraft:exposed_cut_copper_slab": "Exposed Cut Copper Slab",
   "minecraft:exposed_cut_copper_stairs": "Exposed Cut Copper Stairs",
   "minecraft:eye_of_ender": "Eye of Ender",
-  "minecraft:falling_block": "Falling block",
+  "minecraft:falling_block": "Falling Block",
   "minecraft:farmland": "Farmland",
   "minecraft:feather": "Feather",
   "minecraft:fermented_spider_eye": "Fermented Spider Eye",
   "minecraft:fern": "Fern",
   "minecraft:filled_map": "Map",
+  "minecraft:fire": "Fire",
   "minecraft:fire_charge": "Fire Charge",
   "minecraft:fire_coral": "Fire Coral",
   "minecraft:fire_coral_block": "Fire Coral Block",
   "minecraft:fire_coral_fan": "Fire Coral Fan",
+  "minecraft:fire_coral_wall_fan": "Fire Coral Wall Fan",
   "minecraft:fireball": "Fireball",
-  "minecraft:firework_rocket": "Firework rocket",
+  "minecraft:firework_rocket": "Firework Rocket",
   "minecraft:firework_star": "Firework Star",
+  "minecraft:fishing_bobber": "Fishing Bobber",
   "minecraft:fishing_rod": "Fishing Rod",
   "minecraft:fletching_table": "Fletching Table",
   "minecraft:flint": "Flint",
@@ -417,12 +456,13 @@
   "minecraft:flowering_azalea_leaves": "Flowering Azalea Leaves",
   "minecraft:fox": "Fox",
   "minecraft:fox_spawn_egg": "Fox Spawn Egg",
+  "minecraft:frosted_ice": "Frosted Ice",
   "minecraft:furnace": "Furnace",
   "minecraft:furnace_minecart": "Minecart with Furnace",
   "minecraft:ghast": "Ghast",
   "minecraft:ghast_spawn_egg": "Ghast Spawn Egg",
   "minecraft:ghast_tear": "Ghast Tear",
-  "minecraft:giant": "Giant zombie",
+  "minecraft:giant": "Giant",
   "minecraft:gilded_blackstone": "Gilded Blackstone",
   "minecraft:glass": "Glass",
   "minecraft:glass_bottle": "Glass Bottle",
@@ -465,6 +505,7 @@
   "minecraft:gray_banner": "Gray Banner",
   "minecraft:gray_bed": "Gray Bed",
   "minecraft:gray_candle": "Gray Candle",
+  "minecraft:gray_candle_cake": "Cake with Gray Candle",
   "minecraft:gray_carpet": "Gray Carpet",
   "minecraft:gray_concrete": "Gray Concrete",
   "minecraft:gray_concrete_powder": "Gray Concrete Powder",
@@ -474,10 +515,12 @@
   "minecraft:gray_stained_glass": "Gray Stained Glass",
   "minecraft:gray_stained_glass_pane": "Gray Stained Glass Pane",
   "minecraft:gray_terracotta": "Gray Terracotta",
+  "minecraft:gray_wall_banner": "Gray Wall Banner",
   "minecraft:gray_wool": "Gray Wool",
   "minecraft:green_banner": "Green Banner",
   "minecraft:green_bed": "Green Bed",
   "minecraft:green_candle": "Green Candle",
+  "minecraft:green_candle_cake": "Cake with Green Candle",
   "minecraft:green_carpet": "Green Carpet",
   "minecraft:green_concrete": "Green Concrete",
   "minecraft:green_concrete_powder": "Green Concrete Powder",
@@ -487,6 +530,7 @@
   "minecraft:green_stained_glass": "Green Stained Glass",
   "minecraft:green_stained_glass_pane": "Green Stained Glass Pane",
   "minecraft:green_terracotta": "Green Terracotta",
+  "minecraft:green_wall_banner": "Green Wall Banner",
   "minecraft:green_wool": "Green Wool",
   "minecraft:grindstone": "Grindstone",
   "minecraft:guardian": "Guardian",
@@ -507,6 +551,7 @@
   "minecraft:horn_coral": "Horn Coral",
   "minecraft:horn_coral_block": "Horn Coral Block",
   "minecraft:horn_coral_fan": "Horn Coral Fan",
+  "minecraft:horn_coral_wall_fan": "Horn Coral Wall Fan",
   "minecraft:horse": "Horse",
   "minecraft:horse_spawn_egg": "Horse Spawn Egg",
   "minecraft:husk": "Husk",
@@ -540,7 +585,7 @@
   "minecraft:iron_sword": "Iron Sword",
   "minecraft:iron_trapdoor": "Iron Trapdoor",
   "minecraft:item": "Item",
-  "minecraft:item_frame": "Item frame",
+  "minecraft:item_frame": "Item Frame",
   "minecraft:jack_o_lantern": "Jack o'Lantern",
   "minecraft:jigsaw": "Jigsaw Block",
   "minecraft:jukebox": "Jukebox",
@@ -558,8 +603,11 @@
   "minecraft:jungle_slab": "Jungle Slab",
   "minecraft:jungle_stairs": "Jungle Stairs",
   "minecraft:jungle_trapdoor": "Jungle Trapdoor",
+  "minecraft:jungle_wall_sign": "Jungle Wall Sign",
   "minecraft:jungle_wood": "Jungle Wood",
   "minecraft:kelp": "Kelp",
+  "minecraft:kelp_plant": "Kelp Plant",
+  "minecraft:killer_bunny": "The Killer Bunny",
   "minecraft:knowledge_book": "Knowledge Book",
   "minecraft:ladder": "Ladder",
   "minecraft:lantern": "Lantern",
@@ -568,9 +616,11 @@
   "minecraft:lapis_ore": "Lapis Lazuli Ore",
   "minecraft:large_amethyst_bud": "Large Amethyst Bud",
   "minecraft:large_fern": "Large Fern",
+  "minecraft:lava": "Lava",
   "minecraft:lava_bucket": "Lava Bucket",
+  "minecraft:lava_cauldron": "Lava Cauldron",
   "minecraft:lead": "Lead",
-  "minecraft:leash_knot": "Lead",
+  "minecraft:leash_knot": "Leash Knot",
   "minecraft:leather": "Leather",
   "minecraft:leather_boots": "Leather Boots",
   "minecraft:leather_chestplate": "Leather Tunic",
@@ -583,6 +633,7 @@
   "minecraft:light_blue_banner": "Light Blue Banner",
   "minecraft:light_blue_bed": "Light Blue Bed",
   "minecraft:light_blue_candle": "Light Blue Candle",
+  "minecraft:light_blue_candle_cake": "Cake with Light Blue Candle",
   "minecraft:light_blue_carpet": "Light Blue Carpet",
   "minecraft:light_blue_concrete": "Light Blue Concrete",
   "minecraft:light_blue_concrete_powder": "Light Blue Concrete Powder",
@@ -592,10 +643,12 @@
   "minecraft:light_blue_stained_glass": "Light Blue Stained Glass",
   "minecraft:light_blue_stained_glass_pane": "Light Blue Stained Glass Pane",
   "minecraft:light_blue_terracotta": "Light Blue Terracotta",
+  "minecraft:light_blue_wall_banner": "Light Blue Wall Banner",
   "minecraft:light_blue_wool": "Light Blue Wool",
   "minecraft:light_gray_banner": "Light Gray Banner",
   "minecraft:light_gray_bed": "Light Gray Bed",
   "minecraft:light_gray_candle": "Light Gray Candle",
+  "minecraft:light_gray_candle_cake": "Cake with Light Gray Candle",
   "minecraft:light_gray_carpet": "Light Gray Carpet",
   "minecraft:light_gray_concrete": "Light Gray Concrete",
   "minecraft:light_gray_concrete_powder": "Light Gray Concrete Powder",
@@ -605,9 +658,10 @@
   "minecraft:light_gray_stained_glass": "Light Gray Stained Glass",
   "minecraft:light_gray_stained_glass_pane": "Light Gray Stained Glass Pane",
   "minecraft:light_gray_terracotta": "Light Gray Terracotta",
+  "minecraft:light_gray_wall_banner": "Light Gray Wall Banner",
   "minecraft:light_gray_wool": "Light Gray Wool",
   "minecraft:light_weighted_pressure_plate": "Light Weighted Pressure Plate",
-  "minecraft:lightning_bolt": "Lightning bolt",
+  "minecraft:lightning_bolt": "Lightning Bolt",
   "minecraft:lightning_rod": "Lightning Rod",
   "minecraft:lilac": "Lilac",
   "minecraft:lily_of_the_valley": "Lily of the Valley",
@@ -615,6 +669,7 @@
   "minecraft:lime_banner": "Lime Banner",
   "minecraft:lime_bed": "Lime Bed",
   "minecraft:lime_candle": "Lime Candle",
+  "minecraft:lime_candle_cake": "Cake with Lime Candle",
   "minecraft:lime_carpet": "Lime Carpet",
   "minecraft:lime_concrete": "Lime Concrete",
   "minecraft:lime_concrete_powder": "Lime Concrete Powder",
@@ -624,16 +679,19 @@
   "minecraft:lime_stained_glass": "Lime Stained Glass",
   "minecraft:lime_stained_glass_pane": "Lime Stained Glass Pane",
   "minecraft:lime_terracotta": "Lime Terracotta",
+  "minecraft:lime_wall_banner": "Lime Wall Banner",
   "minecraft:lime_wool": "Lime Wool",
   "minecraft:lingering_potion": "Lingering Potion",
   "minecraft:llama": "Llama",
   "minecraft:llama_spawn_egg": "Llama Spawn Egg",
-  "minecraft:llama_spit": "Llama spit",
+  "minecraft:llama_spit": "Llama Spit",
   "minecraft:lodestone": "Lodestone",
+  "minecraft:lodestone_compass": "Lodestone Compass",
   "minecraft:loom": "Loom",
   "minecraft:magenta_banner": "Magenta Banner",
   "minecraft:magenta_bed": "Magenta Bed",
   "minecraft:magenta_candle": "Magenta Candle",
+  "minecraft:magenta_candle_cake": "Cake with Magenta Candle",
   "minecraft:magenta_carpet": "Magenta Carpet",
   "minecraft:magenta_concrete": "Magenta Concrete",
   "minecraft:magenta_concrete_powder": "Magenta Concrete Powder",
@@ -643,10 +701,11 @@
   "minecraft:magenta_stained_glass": "Magenta Stained Glass",
   "minecraft:magenta_stained_glass_pane": "Magenta Stained Glass Pane",
   "minecraft:magenta_terracotta": "Magenta Terracotta",
+  "minecraft:magenta_wall_banner": "Magenta Wall Banner",
   "minecraft:magenta_wool": "Magenta Wool",
   "minecraft:magma_block": "Magma Block",
   "minecraft:magma_cream": "Magma Cream",
-  "minecraft:magma_cube": "Magma cube",
+  "minecraft:magma_cube": "Magma Cube",
   "minecraft:magma_cube_spawn_egg": "Magma Cube Spawn Egg",
   "minecraft:map": "Empty Map",
   "minecraft:marker": "Marker",
@@ -654,9 +713,10 @@
   "minecraft:melon": "Melon",
   "minecraft:melon_seeds": "Melon Seeds",
   "minecraft:melon_slice": "Melon Slice",
+  "minecraft:melon_stem": "Melon Stem",
   "minecraft:milk_bucket": "Milk Bucket",
   "minecraft:minecart": "Minecart",
-  "minecraft:mojang_banner_pattern": "Mojang Banner Pattern",
+  "minecraft:mojang_banner_pattern": "Thing Banner Pattern",
   "minecraft:mooshroom": "Mooshroom",
   "minecraft:mooshroom_spawn_egg": "Mooshroom Spawn Egg",
   "minecraft:moss_block": "Moss Block",
@@ -669,24 +729,25 @@
   "minecraft:mossy_stone_brick_stairs": "Mossy Stone Brick Stairs",
   "minecraft:mossy_stone_brick_wall": "Mossy Stone Brick Wall",
   "minecraft:mossy_stone_bricks": "Mossy Stone Bricks",
+  "minecraft:moving_piston": "Moving Piston",
   "minecraft:mule": "Mule",
   "minecraft:mule_spawn_egg": "Mule Spawn Egg",
   "minecraft:mushroom_stem": "Mushroom Stem",
   "minecraft:mushroom_stew": "Mushroom Stew",
-  "minecraft:music_disc_11": "11 Disc",
-  "minecraft:music_disc_13": "13 Disc",
-  "minecraft:music_disc_blocks": "Blocks Disc",
-  "minecraft:music_disc_cat": "Cat Disc",
-  "minecraft:music_disc_chirp": "Chirp Disc",
-  "minecraft:music_disc_far": "Far Disc",
-  "minecraft:music_disc_mall": "Mall Disc",
-  "minecraft:music_disc_mellohi": "Mellohi Disc",
-  "minecraft:music_disc_otherside": "Otherside Disc",
-  "minecraft:music_disc_pigstep": "Music Disc",
-  "minecraft:music_disc_stal": "Stal Disc",
-  "minecraft:music_disc_strad": "Strad Disc",
-  "minecraft:music_disc_wait": "Wait Disc",
-  "minecraft:music_disc_ward": "Ward Disc",
+  "minecraft:music_disc_11": "Music Disc 11",
+  "minecraft:music_disc_13": "Music Disc 13",
+  "minecraft:music_disc_blocks": "Music Disc Blocks",
+  "minecraft:music_disc_cat": "Music Disc Cat",
+  "minecraft:music_disc_chirp": "Music Disc Chirp",
+  "minecraft:music_disc_far": "Music Disc Far",
+  "minecraft:music_disc_mall": "Music Disc Mall",
+  "minecraft:music_disc_mellohi": "Music Disc Mellohi",
+  "minecraft:music_disc_otherside": "Music Disc Otherside",
+  "minecraft:music_disc_pigstep": "Music Disc Pigstep",
+  "minecraft:music_disc_stal": "Music Disc Stal",
+  "minecraft:music_disc_strad": "Music Disc Strad",
+  "minecraft:music_disc_wait": "Music Disc Wait",
+  "minecraft:music_disc_ward": "Music Disc Ward",
   "minecraft:mutton": "Raw Mutton",
   "minecraft:mycelium": "Mycelium",
   "minecraft:name_tag": "Name Tag",
@@ -698,6 +759,7 @@
   "minecraft:nether_brick_wall": "Nether Brick Wall",
   "minecraft:nether_bricks": "Nether Bricks",
   "minecraft:nether_gold_ore": "Nether Gold Ore",
+  "minecraft:nether_portal": "Nether Portal",
   "minecraft:nether_quartz_ore": "Nether Quartz Ore",
   "minecraft:nether_sprouts": "Nether Sprouts",
   "minecraft:nether_star": "Nether Star",
@@ -731,14 +793,17 @@
   "minecraft:oak_slab": "Oak Slab",
   "minecraft:oak_stairs": "Oak Stairs",
   "minecraft:oak_trapdoor": "Oak Trapdoor",
+  "minecraft:oak_wall_sign": "Oak Wall Sign",
   "minecraft:oak_wood": "Oak Wood",
   "minecraft:observer": "Observer",
   "minecraft:obsidian": "Obsidian",
   "minecraft:ocelot": "Ocelot",
   "minecraft:ocelot_spawn_egg": "Ocelot Spawn Egg",
+  "minecraft:ominous_banner": "Ominous Banner",
   "minecraft:orange_banner": "Orange Banner",
   "minecraft:orange_bed": "Orange Bed",
   "minecraft:orange_candle": "Orange Candle",
+  "minecraft:orange_candle_cake": "Cake with Orange Candle",
   "minecraft:orange_carpet": "Orange Carpet",
   "minecraft:orange_concrete": "Orange Concrete",
   "minecraft:orange_concrete_powder": "Orange Concrete Powder",
@@ -749,6 +814,7 @@
   "minecraft:orange_stained_glass_pane": "Orange Stained Glass Pane",
   "minecraft:orange_terracotta": "Orange Terracotta",
   "minecraft:orange_tulip": "Orange Tulip",
+  "minecraft:orange_wall_banner": "Orange Wall Banner",
   "minecraft:orange_wool": "Orange Wool",
   "minecraft:oxeye_daisy": "Oxeye Daisy",
   "minecraft:oxidized_copper": "Oxidized Copper",
@@ -770,7 +836,7 @@
   "minecraft:pig": "Pig",
   "minecraft:pig_spawn_egg": "Pig Spawn Egg",
   "minecraft:piglin": "Piglin",
-  "minecraft:piglin_banner_pattern": "Piglin Banner Pattern",
+  "minecraft:piglin_banner_pattern": "Snout Banner Pattern",
   "minecraft:piglin_brute": "Piglin Brute",
   "minecraft:piglin_brute_spawn_egg": "Piglin Brute Spawn Egg",
   "minecraft:piglin_spawn_egg": "Piglin Spawn Egg",
@@ -779,6 +845,7 @@
   "minecraft:pink_banner": "Pink Banner",
   "minecraft:pink_bed": "Pink Bed",
   "minecraft:pink_candle": "Pink Candle",
+  "minecraft:pink_candle_cake": "Cake with Pink Candle",
   "minecraft:pink_carpet": "Pink Carpet",
   "minecraft:pink_concrete": "Pink Concrete",
   "minecraft:pink_concrete_powder": "Pink Concrete Powder",
@@ -789,9 +856,13 @@
   "minecraft:pink_stained_glass_pane": "Pink Stained Glass Pane",
   "minecraft:pink_terracotta": "Pink Terracotta",
   "minecraft:pink_tulip": "Pink Tulip",
+  "minecraft:pink_wall_banner": "Pink Wall Banner",
   "minecraft:pink_wool": "Pink Wool",
   "minecraft:piston": "Piston",
+  "minecraft:piston_head": "Piston Head",
+  "minecraft:player": "Player",
   "minecraft:player_head": "Player Head",
+  "minecraft:player_wall_head": "Player Wall Head",
   "minecraft:podzol": "Podzol",
   "minecraft:pointed_dripstone": "Pointed Dripstone",
   "minecraft:poisonous_potato": "Poisonous Potato",
@@ -825,8 +896,42 @@
   "minecraft:poppy": "Poppy",
   "minecraft:porkchop": "Raw Porkchop",
   "minecraft:potato": "Potato",
-  "minecraft:potion": "Thrown potion",
+  "minecraft:potatoes": "Potatoes",
+  "minecraft:potion": "Potion",
+  "minecraft:potted_acacia_sapling": "Potted Acacia Sapling",
+  "minecraft:potted_allium": "Potted Allium",
+  "minecraft:potted_azalea_bush": "Potted Azalea",
+  "minecraft:potted_azure_bluet": "Potted Azure Bluet",
+  "minecraft:potted_bamboo": "Potted Bamboo",
+  "minecraft:potted_birch_sapling": "Potted Birch Sapling",
+  "minecraft:potted_blue_orchid": "Potted Blue Orchid",
+  "minecraft:potted_brown_mushroom": "Potted Brown Mushroom",
+  "minecraft:potted_cactus": "Potted Cactus",
+  "minecraft:potted_cornflower": "Potted Cornflower",
+  "minecraft:potted_crimson_fungus": "Potted Crimson Fungus",
+  "minecraft:potted_crimson_roots": "Potted Crimson Roots",
+  "minecraft:potted_dandelion": "Potted Dandelion",
+  "minecraft:potted_dark_oak_sapling": "Potted Dark Oak Sapling",
+  "minecraft:potted_dead_bush": "Potted Dead Bush",
+  "minecraft:potted_fern": "Potted Fern",
+  "minecraft:potted_flowering_azalea_bush": "Potted Flowering Azalea",
+  "minecraft:potted_jungle_sapling": "Potted Jungle Sapling",
+  "minecraft:potted_lily_of_the_valley": "Potted Lily of the Valley",
+  "minecraft:potted_oak_sapling": "Potted Oak Sapling",
+  "minecraft:potted_orange_tulip": "Potted Orange Tulip",
+  "minecraft:potted_oxeye_daisy": "Potted Oxeye Daisy",
+  "minecraft:potted_pink_tulip": "Potted Pink Tulip",
+  "minecraft:potted_poppy": "Potted Poppy",
+  "minecraft:potted_red_mushroom": "Potted Red Mushroom",
+  "minecraft:potted_red_tulip": "Potted Red Tulip",
+  "minecraft:potted_spruce_sapling": "Potted Spruce Sapling",
+  "minecraft:potted_warped_fungus": "Potted Warped Fungus",
+  "minecraft:potted_warped_roots": "Potted Warped Roots",
+  "minecraft:potted_white_tulip": "Potted White Tulip",
+  "minecraft:potted_wither_rose": "Potted Wither Rose",
+  "minecraft:powder_snow": "Powder Snow",
   "minecraft:powder_snow_bucket": "Powder Snow Bucket",
+  "minecraft:powder_snow_cauldron": "Powder Snow Cauldron",
   "minecraft:powered_rail": "Powered Rail",
   "minecraft:prismarine": "Prismarine",
   "minecraft:prismarine_brick_slab": "Prismarine Brick Slab",
@@ -843,9 +948,11 @@
   "minecraft:pumpkin": "Pumpkin",
   "minecraft:pumpkin_pie": "Pumpkin Pie",
   "minecraft:pumpkin_seeds": "Pumpkin Seeds",
+  "minecraft:pumpkin_stem": "Pumpkin Stem",
   "minecraft:purple_banner": "Purple Banner",
   "minecraft:purple_bed": "Purple Bed",
   "minecraft:purple_candle": "Purple Candle",
+  "minecraft:purple_candle_cake": "Cake with Purple Candle",
   "minecraft:purple_carpet": "Purple Carpet",
   "minecraft:purple_concrete": "Purple Concrete",
   "minecraft:purple_concrete_powder": "Purple Concrete Powder",
@@ -855,6 +962,7 @@
   "minecraft:purple_stained_glass": "Purple Stained Glass",
   "minecraft:purple_stained_glass_pane": "Purple Stained Glass Pane",
   "minecraft:purple_terracotta": "Purple Terracotta",
+  "minecraft:purple_wall_banner": "Purple Wall Banner",
   "minecraft:purple_wool": "Purple Wool",
   "minecraft:purpur_block": "Purpur Block",
   "minecraft:purpur_pillar": "Purpur Pillar",
@@ -883,6 +991,7 @@
   "minecraft:red_banner": "Red Banner",
   "minecraft:red_bed": "Red Bed",
   "minecraft:red_candle": "Red Candle",
+  "minecraft:red_candle_cake": "Cake with Red Candle",
   "minecraft:red_carpet": "Red Carpet",
   "minecraft:red_concrete": "Red Concrete",
   "minecraft:red_concrete_powder": "Red Concrete Powder",
@@ -904,12 +1013,15 @@
   "minecraft:red_stained_glass_pane": "Red Stained Glass Pane",
   "minecraft:red_terracotta": "Red Terracotta",
   "minecraft:red_tulip": "Red Tulip",
+  "minecraft:red_wall_banner": "Red Wall Banner",
   "minecraft:red_wool": "Red Wool",
   "minecraft:redstone": "Redstone Dust",
   "minecraft:redstone_block": "Block of Redstone",
   "minecraft:redstone_lamp": "Redstone Lamp",
   "minecraft:redstone_ore": "Redstone Ore",
   "minecraft:redstone_torch": "Redstone Torch",
+  "minecraft:redstone_wall_torch": "Redstone Wall Torch",
+  "minecraft:redstone_wire": "Redstone Wire",
   "minecraft:repeater": "Redstone Repeater",
   "minecraft:repeating_command_block": "Repeating Command Block",
   "minecraft:respawn_anchor": "Respawn Anchor",
@@ -931,6 +1043,7 @@
   "minecraft:sea_lantern": "Sea Lantern",
   "minecraft:sea_pickle": "Sea Pickle",
   "minecraft:seagrass": "Seagrass",
+  "minecraft:set_spawn": "Respawn point set",
   "minecraft:shears": "Shears",
   "minecraft:sheep": "Sheep",
   "minecraft:sheep_spawn_egg": "Sheep Spawn Egg",
@@ -938,16 +1051,18 @@
   "minecraft:shroomlight": "Shroomlight",
   "minecraft:shulker": "Shulker",
   "minecraft:shulker_box": "Shulker Box",
-  "minecraft:shulker_bullet": "Shulker bullet",
+  "minecraft:shulker_bullet": "Shulker Bullet",
   "minecraft:shulker_shell": "Shulker Shell",
   "minecraft:shulker_spawn_egg": "Shulker Spawn Egg",
+  "minecraft:sign": "Sign",
   "minecraft:silverfish": "Silverfish",
   "minecraft:silverfish_spawn_egg": "Silverfish Spawn Egg",
   "minecraft:skeleton": "Skeleton",
-  "minecraft:skeleton_horse": "Skeleton horse",
+  "minecraft:skeleton_horse": "Skeleton Horse",
   "minecraft:skeleton_horse_spawn_egg": "Skeleton Horse Spawn Egg",
   "minecraft:skeleton_skull": "Skeleton Skull",
   "minecraft:skeleton_spawn_egg": "Skeleton Spawn Egg",
+  "minecraft:skeleton_wall_skull": "Skeleton Wall Skull",
   "minecraft:skull_banner_pattern": "Skull Banner Pattern",
   "minecraft:slime": "Slime",
   "minecraft:slime_ball": "Slimeball",
@@ -955,7 +1070,7 @@
   "minecraft:slime_spawn_egg": "Slime Spawn Egg",
   "minecraft:small_amethyst_bud": "Small Amethyst Bud",
   "minecraft:small_dripleaf": "Small Dripleaf",
-  "minecraft:small_fireball": "Small fireball",
+  "minecraft:small_fireball": "Small Fireball",
   "minecraft:smithing_table": "Smithing Table",
   "minecraft:smoker": "Smoker",
   "minecraft:smooth_basalt": "Smooth Basalt",
@@ -972,16 +1087,18 @@
   "minecraft:smooth_stone_slab": "Smooth Stone Slab",
   "minecraft:snow": "Snow",
   "minecraft:snow_block": "Snow Block",
-  "minecraft:snow_golem": "Snow man or snow golem",
+  "minecraft:snow_golem": "Snow Golem",
   "minecraft:snowball": "Snowball",
   "minecraft:soul_campfire": "Soul Campfire",
+  "minecraft:soul_fire": "Soul Fire",
   "minecraft:soul_lantern": "Soul Lantern",
   "minecraft:soul_sand": "Soul Sand",
   "minecraft:soul_soil": "Soul Soil",
   "minecraft:soul_torch": "Soul Torch",
+  "minecraft:soul_wall_torch": "Soul Wall Torch",
   "minecraft:spawner": "Spawner",
-  "minecraft:spawner_minecart": "Minecart with spawner",
-  "minecraft:spectral_arrow": "Spectral arrow",
+  "minecraft:spawner_minecart": "Minecart with Spawner",
+  "minecraft:spectral_arrow": "Spectral Arrow",
   "minecraft:spider": "Spider",
   "minecraft:spider_eye": "Spider Eye",
   "minecraft:spider_spawn_egg": "Spider Spawn Egg",
@@ -1002,6 +1119,7 @@
   "minecraft:spruce_slab": "Spruce Slab",
   "minecraft:spruce_stairs": "Spruce Stairs",
   "minecraft:spruce_trapdoor": "Spruce Trapdoor",
+  "minecraft:spruce_wall_sign": "Spruce Wall Sign",
   "minecraft:spruce_wood": "Spruce Wood",
   "minecraft:spyglass": "Spyglass",
   "minecraft:squid": "Squid",
@@ -1051,12 +1169,14 @@
   "minecraft:sunflower": "Sunflower",
   "minecraft:suspicious_stew": "Suspicious Stew",
   "minecraft:sweet_berries": "Sweet Berries",
+  "minecraft:sweet_berry_bush": "Sweet Berry Bush",
   "minecraft:tall_grass": "Tall Grass",
+  "minecraft:tall_seagrass": "Tall Seagrass",
   "minecraft:target": "Target",
   "minecraft:terracotta": "Terracotta",
   "minecraft:tinted_glass": "Tinted Glass",
   "minecraft:tipped_arrow": "Tipped Arrow",
-  "minecraft:tnt": "TNT",
+  "minecraft:tnt": "Primed TNT",
   "minecraft:tnt_minecart": "Minecart with TNT",
   "minecraft:torch": "Torch",
   "minecraft:totem_of_undying": "Totem of Undying",
@@ -1064,6 +1184,7 @@
   "minecraft:trader_llama_spawn_egg": "Trader Llama Spawn Egg",
   "minecraft:trapped_chest": "Trapped Chest",
   "minecraft:trident": "Trident",
+  "minecraft:tripwire": "Tripwire",
   "minecraft:tripwire_hook": "Tripwire Hook",
   "minecraft:tropical_fish": "Tropical Fish",
   "minecraft:tropical_fish_bucket": "Bucket of Tropical Fish",
@@ -1071,12 +1192,14 @@
   "minecraft:tube_coral": "Tube Coral",
   "minecraft:tube_coral_block": "Tube Coral Block",
   "minecraft:tube_coral_fan": "Tube Coral Fan",
+  "minecraft:tube_coral_wall_fan": "Tube Coral Wall Fan",
   "minecraft:tuff": "Tuff",
   "minecraft:turtle": "Turtle",
   "minecraft:turtle_egg": "Turtle Egg",
   "minecraft:turtle_helmet": "Turtle Shell",
   "minecraft:turtle_spawn_egg": "Turtle Spawn Egg",
   "minecraft:twisting_vines": "Twisting Vines",
+  "minecraft:twisting_vines_plant": "Twisting Vines Plant",
   "minecraft:vex": "Vex",
   "minecraft:vex_spawn_egg": "Vex Spawn Egg",
   "minecraft:villager": "Villager",
@@ -1084,6 +1207,8 @@
   "minecraft:vindicator": "Vindicator",
   "minecraft:vindicator_spawn_egg": "Vindicator Spawn Egg",
   "minecraft:vine": "Vines",
+  "minecraft:void_air": "Void Air",
+  "minecraft:wall_torch": "Wall Torch",
   "minecraft:wandering_trader": "Wandering Trader",
   "minecraft:wandering_trader_spawn_egg": "Wandering Trader Spawn Egg",
   "minecraft:warped_button": "Warped Button",
@@ -1102,8 +1227,11 @@
   "minecraft:warped_stairs": "Warped Stairs",
   "minecraft:warped_stem": "Warped Stem",
   "minecraft:warped_trapdoor": "Warped Trapdoor",
+  "minecraft:warped_wall_sign": "Warped Wall Sign",
   "minecraft:warped_wart_block": "Warped Wart Block",
+  "minecraft:water": "Water",
   "minecraft:water_bucket": "Water Bucket",
+  "minecraft:water_cauldron": "Water Cauldron",
   "minecraft:waxed_copper_block": "Waxed Block of Copper",
   "minecraft:waxed_cut_copper": "Waxed Cut Copper",
   "minecraft:waxed_cut_copper_slab": "Waxed Cut Copper Slab",
@@ -1125,12 +1253,14 @@
   "minecraft:weathered_cut_copper_slab": "Weathered Cut Copper Slab",
   "minecraft:weathered_cut_copper_stairs": "Weathered Cut Copper Stairs",
   "minecraft:weeping_vines": "Weeping Vines",
+  "minecraft:weeping_vines_plant": "Weeping Vines Plant",
   "minecraft:wet_sponge": "Wet Sponge",
   "minecraft:wheat": "Wheat",
   "minecraft:wheat_seeds": "Wheat Seeds",
   "minecraft:white_banner": "White Banner",
   "minecraft:white_bed": "White Bed",
   "minecraft:white_candle": "White Candle",
+  "minecraft:white_candle_cake": "Cake with White Candle",
   "minecraft:white_carpet": "White Carpet",
   "minecraft:white_concrete": "White Concrete",
   "minecraft:white_concrete_powder": "White Concrete Powder",
@@ -1141,15 +1271,17 @@
   "minecraft:white_stained_glass_pane": "White Stained Glass Pane",
   "minecraft:white_terracotta": "White Terracotta",
   "minecraft:white_tulip": "White Tulip",
+  "minecraft:white_wall_banner": "White Wall Banner",
   "minecraft:white_wool": "White Wool",
   "minecraft:witch": "Witch",
   "minecraft:witch_spawn_egg": "Witch Spawn Egg",
-  "minecraft:wither": "Wither boss",
+  "minecraft:wither": "Wither",
   "minecraft:wither_rose": "Wither Rose",
-  "minecraft:wither_skeleton": "Wither skeleton",
+  "minecraft:wither_skeleton": "Wither Skeleton",
   "minecraft:wither_skeleton_skull": "Wither Skeleton Skull",
   "minecraft:wither_skeleton_spawn_egg": "Wither Skeleton Spawn Egg",
-  "minecraft:wither_skull": "Wither skeleton skull",
+  "minecraft:wither_skeleton_wall_skull": "Wither Skeleton Wall Skull",
+  "minecraft:wither_skull": "Wither Skull",
   "minecraft:wolf": "Wolf",
   "minecraft:wolf_spawn_egg": "Wolf Spawn Egg",
   "minecraft:wooden_axe": "Wooden Axe",
@@ -1162,6 +1294,7 @@
   "minecraft:yellow_banner": "Yellow Banner",
   "minecraft:yellow_bed": "Yellow Bed",
   "minecraft:yellow_candle": "Yellow Candle",
+  "minecraft:yellow_candle_cake": "Cake with Yellow Candle",
   "minecraft:yellow_carpet": "Yellow Carpet",
   "minecraft:yellow_concrete": "Yellow Concrete",
   "minecraft:yellow_concrete_powder": "Yellow Concrete Powder",
@@ -1171,16 +1304,18 @@
   "minecraft:yellow_stained_glass": "Yellow Stained Glass",
   "minecraft:yellow_stained_glass_pane": "Yellow Stained Glass Pane",
   "minecraft:yellow_terracotta": "Yellow Terracotta",
+  "minecraft:yellow_wall_banner": "Yellow Wall Banner",
   "minecraft:yellow_wool": "Yellow Wool",
   "minecraft:zoglin": "Zoglin",
   "minecraft:zoglin_spawn_egg": "Zoglin Spawn Egg",
   "minecraft:zombie": "Zombie",
   "minecraft:zombie_head": "Zombie Head",
-  "minecraft:zombie_horse": "Zombie horse",
+  "minecraft:zombie_horse": "Zombie Horse",
   "minecraft:zombie_horse_spawn_egg": "Zombie Horse Spawn Egg",
   "minecraft:zombie_spawn_egg": "Zombie Spawn Egg",
   "minecraft:zombie_villager": "Zombie Villager",
   "minecraft:zombie_villager_spawn_egg": "Zombie Villager Spawn Egg",
+  "minecraft:zombie_wall_head": "Zombie Wall Head",
   "minecraft:zombified_piglin": "Zombified Piglin",
   "minecraft:zombified_piglin_spawn_egg": "Zombified Piglin Spawn Egg"
 }
\ No newline at end of file
diff --git a/litematica_tools/config/unstackables.json b/litematica_tools/config/unstackables.json
new file mode 100644
index 0000000..09b674b
--- /dev/null
+++ b/litematica_tools/config/unstackables.json
@@ -0,0 +1,161 @@
+[
+  "minecraft:acacia_boat",
+  "minecraft:axolotl_bucket",
+  "minecraft:beetroot_soup",
+  "minecraft:birch_boat",
+  "minecraft:black_bed",
+  "minecraft:black_shulker_box",
+  "minecraft:blue_bed",
+  "minecraft:blue_shulker_box",
+  "minecraft:bow",
+  "minecraft:brown_bed",
+  "minecraft:brown_shulker_box",
+  "minecraft:bundle",
+  "minecraft:cake",
+  "minecraft:carrot_on_a_stick",
+  "minecraft:chainmail_boots",
+  "minecraft:chainmail_chestplate",
+  "minecraft:chainmail_helmet",
+  "minecraft:chainmail_leggings",
+  "minecraft:chest_minecart",
+  "minecraft:cod_bucket",
+  "minecraft:command_block_minecart",
+  "minecraft:creeper_banner_pattern",
+  "minecraft:crossbow",
+  "minecraft:cyan_bed",
+  "minecraft:cyan_shulker_box",
+  "minecraft:dark_oak_boat",
+  "minecraft:debug_stick",
+  "minecraft:diamond_axe",
+  "minecraft:diamond_boots",
+  "minecraft:diamond_chestplate",
+  "minecraft:diamond_helmet",
+  "minecraft:diamond_hoe",
+  "minecraft:diamond_horse_armor",
+  "minecraft:diamond_leggings",
+  "minecraft:diamond_pickaxe",
+  "minecraft:diamond_shovel",
+  "minecraft:diamond_sword",
+  "minecraft:elytra",
+  "minecraft:enchanted_book",
+  "minecraft:fishing_rod",
+  "minecraft:flint_and_steel",
+  "minecraft:flower_banner_pattern",
+  "minecraft:furnace_minecart",
+  "minecraft:globe_banner_pattern",
+  "minecraft:golden_axe",
+  "minecraft:golden_boots",
+  "minecraft:golden_chestplate",
+  "minecraft:golden_helmet",
+  "minecraft:golden_hoe",
+  "minecraft:golden_horse_armor",
+  "minecraft:golden_leggings",
+  "minecraft:golden_pickaxe",
+  "minecraft:golden_shovel",
+  "minecraft:golden_sword",
+  "minecraft:gray_bed",
+  "minecraft:gray_shulker_box",
+  "minecraft:green_bed",
+  "minecraft:green_shulker_box",
+  "minecraft:hopper_minecart",
+  "minecraft:iron_axe",
+  "minecraft:iron_boots",
+  "minecraft:iron_chestplate",
+  "minecraft:iron_helmet",
+  "minecraft:iron_hoe",
+  "minecraft:iron_horse_armor",
+  "minecraft:iron_leggings",
+  "minecraft:iron_pickaxe",
+  "minecraft:iron_shovel",
+  "minecraft:iron_sword",
+  "minecraft:jungle_boat",
+  "minecraft:knowledge_book",
+  "minecraft:lava_bucket",
+  "minecraft:leather_boots",
+  "minecraft:leather_chestplate",
+  "minecraft:leather_helmet",
+  "minecraft:leather_horse_armor",
+  "minecraft:leather_leggings",
+  "minecraft:light_blue_bed",
+  "minecraft:light_blue_shulker_box",
+  "minecraft:light_gray_bed",
+  "minecraft:light_gray_shulker_box",
+  "minecraft:lime_bed",
+  "minecraft:lime_shulker_box",
+  "minecraft:lingering_potion",
+  "minecraft:magenta_bed",
+  "minecraft:magenta_shulker_box",
+  "minecraft:milk_bucket",
+  "minecraft:minecart",
+  "minecraft:mojang_banner_pattern",
+  "minecraft:mushroom_stew",
+  "minecraft:music_disc_11",
+  "minecraft:music_disc_13",
+  "minecraft:music_disc_blocks",
+  "minecraft:music_disc_cat",
+  "minecraft:music_disc_chirp",
+  "minecraft:music_disc_far",
+  "minecraft:music_disc_mall",
+  "minecraft:music_disc_mellohi",
+  "minecraft:music_disc_otherside",
+  "minecraft:music_disc_pigstep",
+  "minecraft:music_disc_stal",
+  "minecraft:music_disc_strad",
+  "minecraft:music_disc_wait",
+  "minecraft:music_disc_ward",
+  "minecraft:netherite_axe",
+  "minecraft:netherite_boots",
+  "minecraft:netherite_chestplate",
+  "minecraft:netherite_helmet",
+  "minecraft:netherite_hoe",
+  "minecraft:netherite_leggings",
+  "minecraft:netherite_pickaxe",
+  "minecraft:netherite_shovel",
+  "minecraft:netherite_sword",
+  "minecraft:oak_boat",
+  "minecraft:orange_bed",
+  "minecraft:orange_shulker_box",
+  "minecraft:piglin_banner_pattern",
+  "minecraft:pink_bed",
+  "minecraft:pink_shulker_box",
+  "minecraft:potion",
+  "minecraft:powder_snow_bucket",
+  "minecraft:pufferfish_bucket",
+  "minecraft:purple_bed",
+  "minecraft:purple_shulker_box",
+  "minecraft:rabbit_stew",
+  "minecraft:red_bed",
+  "minecraft:red_shulker_box",
+  "minecraft:saddle",
+  "minecraft:salmon_bucket",
+  "minecraft:shears",
+  "minecraft:shield",
+  "minecraft:shulker_box",
+  "minecraft:skull_banner_pattern",
+  "minecraft:splash_potion",
+  "minecraft:spruce_boat",
+  "minecraft:spyglass",
+  "minecraft:stone_axe",
+  "minecraft:stone_hoe",
+  "minecraft:stone_pickaxe",
+  "minecraft:stone_shovel",
+  "minecraft:stone_sword",
+  "minecraft:suspicious_stew",
+  "minecraft:tnt_minecart",
+  "minecraft:totem_of_undying",
+  "minecraft:trident",
+  "minecraft:tropical_fish_bucket",
+  "minecraft:turtle_helmet",
+  "minecraft:warped_fungus_on_a_stick",
+  "minecraft:water_bucket",
+  "minecraft:white_bed",
+  "minecraft:white_shulker_box",
+  "minecraft:wooden_axe",
+  "minecraft:wooden_hoe",
+  "minecraft:wooden_pickaxe",
+  "minecraft:wooden_shovel",
+  "minecraft:wooden_sword",
+  "minecraft:writable_book",
+  "minecraft:yellow_bed",
+  "minecraft:yellow_shulker_box"
+]
\ No newline at end of file
diff --git a/litematica_tools/material_list.py b/litematica_tools/material_list.py
new file mode 100644
index 0000000..c5eca06
--- /dev/null
+++ b/litematica_tools/material_list.py
@@ -0,0 +1,291 @@
+import json
+import os
+import tempfile
+
+from .schematic_parse import *
+from mezmorize import Cache
+
+cache = Cache(CACHE_TYPE='filesystem', CACHE_DIR=os.path.join(tempfile.gettempdir(), 'litematica_cache'))
+
+
+def dsort(data: dict):
+    return {i: v for i, v in sorted(data.items(), key=lambda item: item[1], reverse=True)}
+
+
+def localise(data: dict):
+    source_location = os.path.dirname(os.path.abspath(__file__))
+    config_location = os.path.join(source_location, 'config')
+
+    with open(os.path.join(config_location, 'name_references.json'), 'r') as f:
+        names = json.load(f)
+
+    r = re.compile('.+Flight:\d+.+')
+    rockets = list(filter(r.match, data))
+
+    if rockets:
+        for i in rockets:
+            duration = re.search('(?<=Flight:)\d+', i).group()
+            names[i] = f"{names['minecraft:firework_rocket']} [{duration}]"
+
+    return {names[i]: v for i, v in data.items()}
+
+
+class MaterialList:
+    def __init__(self, nbt: NBT_File):
+        self.regions = nbt.data.regions
+
+    @cache.memoize()
+    def block_list(self, block_mode=False, waterlogging=True):
+        out = Counter()
+        for i in self.regions.values():
+            out += RegionMatList(i).block_list(block_mode, waterlogging)
+
+        return out
+
+    @cache.memoize()
+    def item_list(self, tile_entities=True, entities=True, item_frames=True, armor_stands=True, rocket_duration=True):
+        out = Counter()
+        for i in self.regions.values():
+            out += RegionMatList(i).item_list(tile_entities, entities, item_frames, armor_stands)
+
+        return out
+
+    @cache.memoize()
+    def entity_list(self):
+        out = Counter()
+        for i in self.regions.values():
+            out += RegionMatList(i).entity_list()
+
+        return out
+
+    @cache.memoize()
+    def totals_list(self, block_mode=False, waterlogging=True, tile_entities=True,
+                    entities=True, item_frames=True, armor_stands=True, rocket_duration=True):
+        out = Counter()
+
+        out += self.block_list(block_mode, waterlogging)
+        out += self.item_list(tile_entities, entities, item_frames, armor_stands, rocket_duration)
+        out += self.entity_list()
+
+        return out
+
+    @cache.memoize()
+    def composite_list(self, blocks: bool, items: bool, entities: bool,
+                       block_mode=False, waterlogging=True, tile_entities=True,
+                       entity_items=True, item_frames=True, armor_stands=True, rocket_duration=True):
+        out = Counter()
+        if blocks:
+            out += self.block_list(block_mode, waterlogging)
+        if items:
+            out += self.item_list(tile_entities, entity_items, item_frames,
+                                                  armor_stands, rocket_duration)
+        if entities:
+            out += self.entity_list()
+
+        return out
+
+
+class RegionMatList:
+    __multi = re.compile(
+        '(eggs)|(pickles)|(candles)')  # used in __block_state_handler() to match one of similar properties
+
+    def __init__(self, data):
+        self.region = data
+        self.__options = {
+            'block_mode': False,
+            'waterlogging': True,
+            'tile_entities': True,
+            'entities': True,
+            'item_frames': True,
+            'armor_stands': True,
+            'rocket_duration': True
+        }
+
+    @cache.memoize()
+    def block_list(self, block_mode=False, waterlogging=True):
+        self.__options['block_mode'] = block_mode
+        self.__options['waterlogging'] = waterlogging
+
+        self.__cache_palette()  # apply configs to the region block state palette
+        out = Counter()
+
+        for entry in range(self.region.volume):
+            index = self.region.get_block_state(entry)
+            if index not in self.__cache: continue
+            out += self.__cache[index]
+
+        return out
+
+    @cache.memoize()
+    def item_list(self, tile_entities=True, entities=True, item_frames=True, armor_stands=True, rocket_duration=True):
+        self.__options['rocket_duration'] = rocket_duration
+        out = Counter()
+
+        if tile_entities:
+            out += self.__tile_entity_items()
+        if entities:
+            out += self.__entity_items()
+        if item_frames:
+            out += self.__item_frames()
+        if armor_stands:
+            out += self.__armor_stand_items()
+
+        return out
+
+    @cache.memoize()
+    def entity_list(self):
+        out = Counter()
+        for i in self.region.entities:
+            if i['id'] == 'minecraft:item':
+                out += self.__get_items([i['Item']])
+            else:
+                out += {i['id']: 1}
+
+        return out
+
+    def __cache_palette(self):
+        """
+        Precomputes items for block state palette entries for faster lookup.
+        """
+        self.__load_config()
+
+        self.__cache = {}
+        for i, v in enumerate(self.region.block_state_palette):
+            self.__name = v['Name']
+
+            if self.__name in self.__ignored_blocks: continue
+            self.__block_buffer = {self.__name: 1}
+            self.__block_state_handler(v)
+            if not self.__options['block_mode']:
+                self.__block_handler()
+
+            self.__cache[i] = self.__block_buffer
+
+    def __load_config(self):
+        """
+        block_ignore.json - List of blocks that will be excluded from the material list.
+        By default contains blocks that don't have an item.
+
+        block_config.json - List of items matching the blocks.
+        """
+        source_location = os.path.dirname(os.path.abspath(__file__))
+        config_location = os.path.join(source_location, 'config')
+
+        with open(os.path.join(config_location, 'block_ignore.json'), 'r') as f:
+            self.__ignored_blocks = json.load(f)
+        with open(os.path.join(config_location, 'block_config.json'), 'r') as f:
+            self.__block_configs = json.load(f)
+
+    def __block_state_handler(self, var):
+        """
+        Modifies counter according to the block state
+        :param var:
+        
+        """
+        if 'Properties' not in var: return None
+        block_states = var['Properties']
+
+        if ('half', 'upper') in block_states.items():
+            del self.__block_buffer[self.__name]
+
+        if self.__options['block_mode']: return None  # prevents modifying counter when block mode is enabled
+
+        if self.__options['waterlogging']:
+            if ('waterlogged', 'true') in block_states.items():
+                self.__block_buffer['minecraft:water_bucket'] = 1
+
+        test = list(filter(self.__multi.match, block_states))
+        if test:
+            self.__block_buffer[self.__name] = int(block_states[test[0]])
+
+    def __block_handler(self):
+        """
+        Applies modifications from block_config.json
+        """
+        if self.__name not in self.__block_buffer: return None
+        if self.__name not in self.__block_configs: return None
+
+        new = self.__block_configs[self.__name]
+        if type(new) == str:
+            self.__block_configs[self.__name] = [new]
+            new = [new]
+
+        del self.__block_buffer[self.__name]
+        for v in new:
+            self.__block_buffer[v] = 1
+
+    def __get_items(self, values: list):  # Pass list of 'Items' key
+        """
+        Recursively searches for items in provided list.
+        """
+        out = Counter()
+
+        for i in values:
+            if not i: continue
+
+            if 'tag' in i:
+                if 'BlockEntityTag' in i['tag']:
+                    container = i['tag']['BlockEntityTag']
+                else:
+                    container = i['tag']
+
+                if 'Items' in container:
+                    out += self.__get_items(container['Items'])
+
+                if self.__options['rocket_duration']:
+                    if (i['id'] == 'minecraft:firework_rocket') and 'Fireworks' in i['tag']:
+                        tag = f"{{Fireworks:{{Flight:{i['tag']['Fireworks']['Flight']}}}}}"
+                        out += {f"{i['id']}{tag}": i['Count']}
+                        continue
+            out += {i['id']: i['Count']}
+
+        return out
+
+    def __tile_entity_items(self):
+        out = Counter()
+        for i in self.region.tile_entities:
+            if 'Items' not in i: continue
+            out += self.__get_items(i['Items'])
+        return out
+
+    def __entity_items(self):
+        out = Counter()
+        for i in self.region.entities:
+            if 'Items' not in i: continue
+            out += self.__get_items(i['Items'])
+        return out
+
+    def __item_frames(self):
+        out = Counter()
+        for i in self.region.entities:
+            if i['id'] != ('minecraft:item_frame' or 'minecraft:glow_item_frame'): continue
+            if 'Item' in i:
+                out += self.__get_items([i['Item']])
+        return out
+
+    def __armor_stand_items(self):
+        out = Counter()
+        for i in self.region.entities:
+            if i['id'] != 'minecraft:armor_stand': continue
+            out += self.__get_items(i['ArmorItems'] + i['HandItems'])
+        return out
+
+
+class Counter(dict):
+    def __init__(self, *args, **kw):
+        super(Counter, self).__init__(*args, **kw)
+
+    def __merge(self, other):
+        out = self
+        for i, v in other.items():
+            if i in out:
+                out[i] = out[i] + v
+            else:
+                out[i] = v
+        return out
+
+    def __add__(self, other):
+        return self.__merge(other)
+
+    def __iadd__(self, other):
+        return self.__merge(other)
diff --git a/litematica_tools/schematic_parse.py b/litematica_tools/schematic_parse.py
new file mode 100644
index 0000000..12c5069
--- /dev/null
+++ b/litematica_tools/schematic_parse.py
@@ -0,0 +1,154 @@
+import re
+import nbtlib as nbt
+from mezmorize import Cache
+from hashlib import md5
+
+cache = Cache(CACHE_TYPE='filesystem', CACHE_DIR='cache')
+
+
+class NBT_File:
+    def __init__(self, filepath):
+        self.file = filepath
+
+        with open(filepath, 'rb') as f:
+            self.raw_nbt = nbt.File.load(f, gzipped=True).unpack()
+
+        self.file_format = re.search('((?!\.)[^.]+)$', filepath).group()
+        self.data = {}
+        name = self.file.replace(' ', '_')
+        name = re.search('\w+(?=\.\w+$)', name).group()
+        match self.file_format:
+            case 'litematic':
+                self.data = Litematic(self.raw_nbt)
+            case 'schem':
+                self.data = Schem(self.raw_nbt, name)
+            case 'nbt':
+                self.data = NBT(self.raw_nbt, name)
+            case _:
+                raise ValueError('Unsupported file format')
+
+
+class Structure:
+    def __init__(self, nbt: dict):
+        self.hash = md5(str(nbt).encode('utf-8')).hexdigest()
+        self.regions = {}
+
+
+class Litematic(Structure):
+    def __init__(self, nbt: dict):
+        super().__init__(nbt)
+
+        for i, v in nbt['Regions'].items():
+            self.regions[i] = LitematicRegion(i, v)
+
+
+class Schem(Structure):
+    def __init__(self, nbt: dict, name):
+        super().__init__(nbt)
+        self.regions[name] = SchemRegion(name, nbt)
+
+
+class NBT(Structure):
+    def __init__(self, nbt: dict, name):
+        super().__init__(nbt)
+        self.regions[name] = NBTRegion(name, nbt)
+
+
+class Region:
+    def __init__(self, name):
+        self.name = name
+        self.block_state_palette = []
+        self.block_states = []
+        self.tile_entities = []
+        self.entities = []
+        self.volume = 0
+        self.bit_span = 0
+
+
+class LitematicRegion(Region):
+    def __init__(self, i, v):
+        super().__init__(i)
+        self.block_state_palette = v['BlockStatePalette']
+        self.block_states = v['BlockStates']
+        self.tile_entities = v['TileEntities']
+        self.entities = v['Entities']
+        self.volume = abs(v['Size']['x'] * v['Size']['y'] * v['Size']['z'])
+        self.bit_span = int.bit_length(len(self.block_state_palette) - 1)
+
+    def get_block_state(self, index):
+        start_offset = index * self.bit_span
+        start_arr_index = start_offset >> 6
+        end_arr_index = ((index + 1) * self.bit_span - 1) >> 6
+        start_bit_offset = start_offset & 0x3F
+        shift = (1 << self.bit_span) - 1
+
+        if start_arr_index == end_arr_index:
+            out = self.block_states[start_arr_index] >> start_bit_offset & shift
+        else:
+            end_offset = 64 - start_bit_offset
+            out = (abs(self.block_states[start_arr_index] >> start_bit_offset) | self.block_states[
+                end_arr_index] << end_offset) & shift
+        return out
+
+
+class SchemRegion(Region):
+    def __init__(self, i, v):
+        super().__init__(i)
+        self.block_state_palette = self.__convert_palette(v['Palette'])
+        self.block_states = v['BlockData']
+        if 'BlockEntities' in v:
+            self.tile_entities = v['BlockEntities']
+        if 'Entities' in v:
+            self.entities = v['Entities']
+        self.volume = v['Length'] * v['Height'] * v['Width']
+        self.bit_span = int.bit_length(len(self.block_state_palette) - 1)
+
+    @staticmethod
+    def __convert_palette(data: dict):
+        out = [None] * len(data)
+        for i, v in data.items():
+            res = {'Name': re.search('^\w+:\w+', i).group()}
+            properties = re.findall('\w+=\w+', i)
+            if properties:
+                res['Properties'] = {}
+                for entry in properties:
+                    key, value = entry.split('=')
+                    res['Properties'][key] = value
+
+            out[v] = res
+        return out
+
+    def get_block_state(self, index):
+        return self.block_states[index]
+
+
+class NBTRegion(Region):
+    def __init__(self, i, v):
+        super().__init__(i)
+        self.block_state_palette = v['palette']
+        self.block_states = v['blocks']
+        self.tile_entities = self.__get_tile_entities(self.block_states)
+        self.entities = self.__get_entities(v['entities'])
+        # pretty much a bodge for material list to work,
+        # but to make it work properly need to rework much more
+        # so later
+        self.volume = abs(v['size'][0] * v['size'][1] * v['size'][2])
+        self.bit_span = int.bit_length(len(self.block_state_palette) - 1)
+
+    @staticmethod
+    def __get_tile_entities(blocks):
+        out = []
+        for i in blocks:
+            if 'nbt' in i:
+                out.append(i['nbt'])
+        return out
+
+    @staticmethod
+    def __get_entities(entities):
+        out = []
+        for i in entities:
+            out.append(i['nbt'])
+        return out
+
+    def get_block_state(self, index):
+        return self.block_states[index]['state']
diff --git a/litematica_tools/scripts/__init__.py b/litematica_tools/scripts/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/litematica_tools/scripts/cli.py b/litematica_tools/scripts/cli.py
new file mode 100644
index 0000000..405eb1b
--- /dev/null
+++ b/litematica_tools/scripts/cli.py
@@ -0,0 +1,79 @@
+import csv
+import io
+import json
+
+from click import command, group, echo, option, argument, Choice
+from ..material_list import MaterialList, dsort
+from ..schematic_parse import NBT_File
+
+
+item_name = "Item"
+total_name = "Total"
+
+
+# Root command
+@group()
+def cli():
+    """This is the CLI for litematica-tools."""
+    pass
+
+
+# Define as command
+@cli.command('list')
+@argument('file')
+# Which categories to list
+@option('--blocks/--no-blocks', '-b/-B', 'blocks', default=False, help='Include blocks.')
+@option('--inventories/--no-inventories', '-i/-I', 'inventories', default=False, help='Include inventory contents.')
+@option('--entities/--no-entities', '-e/-E', 'entities', default=False, help='Include entities.')
+# Options for the listing
+#@option('--blocks/--no-blocks', '-b/-B', 'blocks') TODO
+# Output formatting option
+@option('--format', '-f', 'formatting', default='basic',
+        type=Choice(['basic', 'json', 'csv', 'ascii'], case_sensitive=False), help='Output format.')
+def list_schem(file, blocks, inventories, entities, formatting):
+    """Options for counting and listing schematic contents."""
+    if not (blocks or inventories or entities):
+        blocks = True
+
+    mat_list = dsort(MaterialList(NBT_File(file)).composite_list(blocks, inventories, entities))
+
+    echo(format_list(mat_list, formatting))
+
+
+def format_list(mat_list, formatting):
+    out = ''
+    match formatting:
+        case 'basic':
+            for k, v in mat_list.items():
+                out += f'{k}: {v}\n'
+        case 'json':
+            out = json.dumps(mat_list, indent=4)
+        case 'csv':
+            output = io.StringIO()
+            writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
+            writer.writerow((item_name, total_name))
+            writer.writerows([(k, v) for k, v in mat_list.items()])
+            out = output.getvalue()
+        case 'ascii':
+            out = format_ascii(mat_list)
+    return out
+
+
+def format_ascii(mat_list):
+    max_name_len = max(max([len(i) for i in mat_list.keys()]), len(item_name))
+    max_amount_len = max(max([len(str(i)) for i in mat_list.values()]), len(total_name))
+
+    def make_row(key, value):
+        return "| " + key + " " * (max_name_len - len(key)) + " | " + \
+               str(value) + " " * (max_amount_len - len(str(value))) + " |\n"
+
+    divider = "+" + "-" * (max_name_len + 2) + "+" + "-" * (max_amount_len + 2) + "+\n"
+    header = divider + make_row(item_name, total_name) + divider
+
+    out = header
+    for k, v in mat_list.items():
+        out += make_row(k, v)
+    out += header
+
+    return out
+
diff --git a/litematicparse/__init__.py b/litematicparse/__init__.py
deleted file mode 100644
index 1aeef40..0000000
--- a/litematicparse/__init__.py
+++ /dev/null
@@ -1,248 +0,0 @@
-import json
-import os
-
-import python_nbt.nbt as nbt
-from bitstring import BitStream, BitArray, InterpretError
-
-dir_path = os.path.dirname(os.path.realpath(__file__))
-
-with open(os.path.join(dir_path, 'name_references.json'), 'r') as f:
-    name_references = json.load(f)
-with open(os.path.join(dir_path, 'block_items.json'), 'r') as f:
-    block_items = json.load(f)
-
-
-def increment_dict(dictionary, index, value=1):
-    if type(index) == list:
-        for i in index:
-            dictionary = increment_dict(dictionary, i)
-    else:
-        try:
-            dictionary[index] += value
-        except KeyError:
-            dictionary[index] = value
-    return dictionary
-
-
-class Litematic:
-    def __init__(self, file: str):
-        self.raw_schem = nbt.NBTTagCompound.json_obj(nbt.read_from_nbt_file(file), full_json=False)
-        self.metadata = self.raw_schem['Metadata']
-        self.regions = {}
-        for i, v in self.raw_schem['Regions'].items():
-            self.regions[i] = Region(v)
-
-    def block_count(self):
-        return sum([region.block_count() for region in self.regions.values()], MaterialList())
-
-    def inventory_count(self):
-        return sum([region.inventory_count() for region in self.regions.values()], MaterialList())
-
-    def entity_count(self):
-        return sum([region.entity_count() for region in self.regions.values()], MaterialList())
-
-    def total_count(self):
-        return sum([region.total_count() for region in self.regions.values()], MaterialList())
-
-    def write_json(self, file):
-        with open(file, 'w') as f:
-            json.dump(self.raw_schem, f, indent=2)
-
-
-class Region:
-    def __init__(self, data):
-        self.dimensions = {k: abs(v) for k, v in data['Size'].items()}
-        self.volume = self.dimensions['x'] * self.dimensions['y'] * self.dimensions['z']
-        self.palette = data['BlockStatePalette']
-        self.block_states = BitStream()
-        for i in reversed(data['BlockStates']):
-            self.block_states.append(BitArray(int=i, length=64))
-        self.entities = data['Entities']
-        self.tile_entities = data['TileEntities']
-
-    def get_id_span(self):
-        return int.bit_length(len(self.palette) - 1)
-
-    def block_count(self):
-        block_counts = {}
-        for block in self.block_iterator():
-            item = self.get_block_item(block)
-            if item:
-                block_counts = increment_dict(block_counts, item)
-        return MaterialList(block_counts)
-
-    def inventory_count(self):
-        tile_entity_items = self.item_count(self.tile_entities)
-        entity_items = self.item_count(self.entities)
-        return tile_entity_items + entity_items
-
-    def entity_count(self):
-        entities = {}
-        for i in self.entities:
-            entities = increment_dict(entities, i['id'])
-        return MaterialList(entities)
-
-    def total_count(self):
-        return self.block_count() + self.inventory_count() + self.entity_count()
-
-    def get_block(self, x, y, z):
-        id_span = self.get_id_span()
-        pos = x
-        pos += z * self.dimensions['x']
-        pos += y * self.dimensions['x'] * self.dimensions['z']
-
-        try:
-            self.block_states.pos = self.block_states.len - (pos + 1) * id_span
-            return self.palette[self.block_states.peek(f'uint:{id_span}')]
-        except InterpretError:
-            return OutOfBoundsError("Block location outside of region boundaries.")
-
-    def block_iterator(self):
-        id_span = self.get_id_span()
-        try:
-            for i in range(self.volume):
-                pos = self.block_states.len - (i + 1) * id_span
-                block_num = self.block_states[pos:pos + id_span].uint
-                yield self.get_block_from_num(block_num)
-        except InterpretError:
-            return []
-
-    def get_block_from_num(self, block_num):
-        return self.palette[block_num]  # this is here so we can replace it with a method to generate a BlockState later
-
-    @staticmethod
-    def get_block_item(block):
-        global block_items
-        try:
-            return block_items[block]
-        except KeyError:
-            return block
-
-    @staticmethod
-    def item_count(data: dict):
-        results = []
-        keys = 'id', 'Count'
-
-        def decode_dict(a_dict):
-            temp = []
-            try:
-                for i in keys:
-                    temp.append(a_dict[i])
-                results.append(temp)
-            except KeyError:
-                pass
-            return a_dict
-
-        json_repr = json.dumps(data)  # Convert to JSON format.
-        json.loads(json_repr, object_hook=decode_dict)  # Return value ignored.
-
-        out = {}
-        for i in results:
-            try:
-                out[i[0]] += i[1]
-            except KeyError:
-                out[i[0]] = i[1]
-
-        if 'minecraft:air' in out:
-            del out['minecraft:air']
-
-        return MaterialList(out)
-
-
-class Block:
-    def __init__(self, block_id, properties):
-        self.block_id = block_id
-        self.name = ''  # match from names json
-        # tags moved to the item level
-
-
-class BlockState:
-    def __init__(self, pos, values: dict):
-        self.pos = tuple(pos)
-        self.properties = values.pop('Properties')  # properties will be handled at the block state level
-        self.block = Block(values['Name'])
-        self.tile_entity_data = TileEntity(pos)  # link to tile entity data, if no tile entity return null
-        self.block_item = []  # list of ItemStack objects
-
-
-class Entity:
-    def __init__(self, entity):
-        self.entity_id = entity.pop('id')
-        self.items = []  # method to lookup and handle item stacks
-        self.entity_data = entity
-
-
-class TileEntity:
-    def __init__(self, pos):
-        pass  # some method to yoink tile entity from the region object
-
-
-class Inventory:
-    def __init__(self):
-        self.items = []  # list of ItemStack objects idk handle it somehow
-
-
-class ItemStack:
-    def __init__(self, values: dict):
-        self.slot = values['Slot']
-        self.count = values['Count']
-        # need some way to handle nested inventories
-
-
-class Item:
-    def __init__(self, item_id):
-        self.item_id = item_id
-        self.name = ''
-        self.stack_size = 0
-        self.tags = []
-
-
-class MaterialList:
-    def __init__(self, values: dict = None):
-        if values is None:
-            values = {}
-        self.raw_counts = values
-        self.keys = []
-        self.values = []
-        self.names = []
-        self.stack_sizes = []
-
-    def __add__(self, other):
-        res = self.raw_counts
-        for i, v in other.raw_counts.items():
-            try:
-                res[i] += v
-            except KeyError:
-                res[i] = v
-        return MaterialList(res)
-
-    def __str__(self):
-        if not self.raw_counts:
-            return ""
-        spacing = max(len(self.get_item_name(k)) for k in self.raw_counts.keys()) + 1
-        result = ""
-        for k, v in self.sorted_counts().items():
-            result += "{:<{s}} {}\n".format(self.get_item_name(k) + ":", v, s=spacing)
-        return result
-
-    def sorted_counts(self):
-        return {k: v for k, v in sorted(self.raw_counts.items(), key=lambda item: item[1], reverse=True)}
-
-    @staticmethod
-    def get_item_name(item_id):
-        global name_references
-        try:
-            return name_references[item_id]
-        except KeyError:
-            return item_id
-
-
-class OutOfBoundsError(Exception):
-    def __init__(self, *params):
-        self.msg = params[0] if params else ''
-        self.params = params[1:]
-
-    def __str__(self):
-        if self.params:
-            return self.msg.format(*self.params)
-        return self.msg
diff --git a/litematicparse/block_items.json b/litematicparse/block_items.json
deleted file mode 100644
index 60b3b3d..0000000
--- a/litematicparse/block_items.json
+++ /dev/null
@@ -1,131 +0,0 @@
-{
-  "minecraft:cave_air": null,
-  "minecraft:lime_wall_banner": "minecraft:lime_banner",
-  "minecraft:moving_piston": null,
-  "minecraft:potted_fern": ["minecraft:flower_pot", "minecraft:fern"],
-  "minecraft:pink_wall_banner": "minecraft:pink_banner",
-  "minecraft:magenta_candle_cake": ["minecraft:cake", "minecraft:magenta_candle"],
-  "minecraft:potted_flowering_azalea_bush": ["minecraft:flower_pot", "minecraft:flowering_azalea_bush"],
-  "minecraft:dragon_wall_head": "minecraft:dragon_head",
-  "minecraft:fire": null,
-  "minecraft:purple_candle_cake": ["minecraft:cake", "minecraft:purple_candle"],
-  "minecraft:cyan_candle_cake": ["minecraft:cake", "minecraft:cyan_candle"],
-  "minecraft:dark_oak_wall_sign": "minecraft:dark_oak_sign",
-  "minecraft:gray_wall_banner": "minecraft:gray_banner",
-  "minecraft:birch_wall_sign": "minecraft:birch_sign",
-  "minecraft:tripwire": "minecraft:string",
-  "minecraft:potted_poppy": ["minecraft:flower_pot", "minecraft:poppy"],
-  "minecraft:cave_vines": "minecraft:glow_berries",
-  "minecraft:carrots": "minecraft:carrot",
-  "minecraft:player_wall_head": "minecraft:player_head",
-  "minecraft:brown_wall_banner": "minecraft:brown_banner",
-  "minecraft:potted_crimson_fungus": ["minecraft:flower_pot", "minecraft:crimson_fungus"],
-  "minecraft:potted_azure_bluet": ["minecraft:flower_pot", "minecraft:azure_bluet"],
-  "minecraft:potted_azalea_bush": ["minecraft:flower_pot", "minecraft:azalea_bush"],
-  "minecraft:potted_spruce_sapling": ["minecraft:flower_pot", "minecraft:spruce_sapling"],
-  "minecraft:skeleton_wall_skull": "minecraft:skeleton_skull",
-  "minecraft:potted_dark_oak_sapling": ["minecraft:flower_pot", "minecraft:dark_oak_sapling"],
-  "minecraft:dead_tube_coral_wall_fan": "minecraft:dead_tube_coral_fan",
-  "minecraft:green_wall_banner": "minecraft:green_banner",
-  "minecraft:orange_candle_cake": ["minecraft:cake", "minecraft:orange_candle"],
-  "minecraft:wall_torch": "minecraft:torch",
-  "minecraft:kelp_plant": "minecraft:kelp",
-  "minecraft:potted_dead_bush": ["minecraft:flower_pot", "minecraft:dead_bush"],
-  "minecraft:light_blue_wall_banner": "minecraft:light_blue_banner",
-  "minecraft:potted_jungle_sapling": ["minecraft:flower_pot", "minecraft:jungle_sapling"],
-  "minecraft:wheat": "minecraft:wheat_seeds",
-  "minecraft:potted_cactus": ["minecraft:flower_pot", "minecraft:cactus"],
-  "minecraft:yellow_candle_cake": ["minecraft:cake", "minecraft:yellow_candle"],
-  "minecraft:end_gateway": null,
-  "minecraft:potted_oxeye_daisy": ["minecraft:flower_pot", "minecraft:oxeye_daisy"],
-  "minecraft:zombie_wall_head": "minecraft:zombie_head",
-  "minecraft:candle_cake": ["minecraft:cake", "minecraft:candle"],
-  "minecraft:potted_bamboo": ["minecraft:flower_pot", "minecraft:bamboo"],
-  "minecraft:acacia_wall_sign": "minecraft:acacia_sign",
-  "minecraft:magenta_wall_banner": "minecraft:magenta_banner",
-  "minecraft:horn_coral_wall_fan": "minecraft:horn_coral_fan",
-  "minecraft:sweet_berry_bush": "minecraft:sweet_berries",
-  "minecraft:end_portal": null,
-  "minecraft:white_wall_banner": "minecraft:white_banner",
-  "minecraft:big_dripleaf_stem": "minecraft:big_dripleaf",
-  "minecraft:powder_snow_cauldron": "minecraft:cauldron",
-  "minecraft:light_gray_candle_cake": ["minecraft:cake", "minecraft:light_gray_candle"],
-  "minecraft:pumpkin_stem": "minecraft:pumpkin_seeds",
-  "minecraft:fire_coral_wall_fan": "minecraft:fire_coral_fan",
-  "minecraft:piston_head": null,
-  "minecraft:potted_birch_sapling": ["minecraft:flower_pot", "minecraft:birch_sapling"],
-  "minecraft:redstone_wall_torch": "minecraft:redstone_torch",
-  "minecraft:frosted_ice": "minecraft:water_bucket",
-  "minecraft:jungle_wall_sign": "minecraft:jungle_sign",
-  "minecraft:potted_crimson_roots": ["minecraft:flower_pot", "minecraft:crimson_roots"],
-  "minecraft:potatoes": "minecraft:potato",
-  "minecraft:lava": "minecraft:lava_bucket",
-  "minecraft:tall_seagrass": "tall_seagrass",
-  "minecraft:cave_vines_plant": "minecraft:glow_berries",
-  "minecraft:powder_snow": "minecraft:powder_snow_bucket",
-  "minecraft:potted_orange_tulip": ["minecraft:flower_pot", "minecraft:orange_tulip"],
-  "minecraft:red_wall_banner": "minecraft:red_banner",
-  "minecraft:black_candle_cake": ["minecraft:cake", "minecraft:black_candle"],
-  "minecraft:brown_candle_cake": ["minecraft:cake", "minecraft:brown_candle"],
-  "minecraft:gray_candle_cake": ["minecraft:cake", "minecraft:gray_candle"],
-  "minecraft:dead_fire_coral_wall_fan": "minecraft:dead_fire_coral_fan",
-  "minecraft:weeping_vines_plant": "minecraft:weeping_vines",
-  "minecraft:light_blue_candle_cake": ["minecraft:cake", "minecraft:light_blue_candle"],
-  "minecraft:potted_blue_orchid": ["minecraft:flower_pot", "minecraft:blue_orchid"],
-  "minecraft:pink_candle_cake": ["minecraft:cake", "minecraft:pink_candle"],
-  "minecraft:lava_cauldron": "minecraft:cauldron",
-  "minecraft:spruce_wall_sign": "minecraft:spruce_sign",
-  "minecraft:light_gray_wall_banner": "minecraft:light_gray_banner",
-  "minecraft:purple_wall_banner": "minecraft:purple_banner",
-  "minecraft:tube_coral_wall_fan": "minecraft:tube_coral_fan",
-  "minecraft:potted_warped_fungus": ["minecraft:flower_pot", "minecraft:warped_fungus"],
-  "minecraft:water": "minecraft:water_bucket",
-  "minecraft:air": null,
-  "minecraft:void_air": null,
-  "minecraft:oak_wall_sign": "minecraft:oak_sign",
-  "minecraft:cyan_wall_banner": "minecraft:cyan_banner",
-  "minecraft:bubble_coral_wall_fan": "minecraft:bubble_coral_fan",
-  "minecraft:melon_stem": "minecraft:melon_seeds",
-  "minecraft:black_wall_banner": "minecraft:black_banner",
-  "minecraft:red_candle_cake": ["minecraft:cake", "minecraft:red_candle"],
-  "minecraft:potted_wither_rose": ["minecraft:flower_pot", "minecraft:wither_rose"],
-  "minecraft:nether_portal": null,
-  "minecraft:brain_coral_wall_fan": "minecraft:brain_coral_fan",
-  "minecraft:potted_dandelion": ["minecraft:flower_pot", "minecraft:dandelion"],
-  "minecraft:wither_skeleton_wall_skull": "minecraft:wither_skeleton_skull",
-  "minecraft:bubble_column": "minecraft:water_bucket",
-  "minecraft:creeper_wall_head": "minecraft:creeper_head",
-  "minecraft:potted_red_tulip": ["minecraft:flower_pot", "minecraft:red_tulip"],
-  "minecraft:lime_candle_cake": ["minecraft:cake", "minecraft:lime_candle"],
-  "minecraft:dead_horn_coral_wall_fan": "minecraft:dead_horn_coral_fan",
-  "minecraft:potted_oak_sapling": ["minecraft:flower_pot", "minecraft:oak_sapling"],
-  "minecraft:potted_warped_roots": ["minecraft:flower_pot", "minecraft:warped_roots"],
-  "minecraft:soul_wall_torch": "minecraft:soul_torch",
-  "minecraft:water_cauldron": "minecraft:cauldron",
-  "minecraft:blue_wall_banner": "minecraft:blue_banner",
-  "minecraft:crimson_wall_sign": "minecraft:crimson_sign",
-  "minecraft:white_candle_cake": ["minecraft:cake", "minecraft:white_candle"],
-  "minecraft:redstone_wire": "minecraft:redstone",
-  "minecraft:attached_melon_stem": "minecraft:melon_seeds",
-  "minecraft:warped_wall_sign": "minecraft:warped_sign",
-  "minecraft:attached_pumpkin_stem": "minecraft:pumpkin_seeds",
-  "minecraft:bamboo_sapling": "minecraft:bamboo",
-  "minecraft:beetroots": "minecraft:beetroot_seeds",
-  "minecraft:potted_pink_tulip": ["minecraft:flower_pot", "minecraft:pink_tulip"],
-  "minecraft:yellow_wall_banner": "minecraft:yellow_banner",
-  "minecraft:potted_brown_mushroom": ["minecraft:flower_pot", "minecraft:brown_mushroom"],
-  "minecraft:potted_red_mushroom": ["minecraft:flower_pot", "minecraft:red_mushroom"],
-  "minecraft:dead_bubble_coral_wall_fan": "minecraft:dead_bubble_coral_fan",
-  "minecraft:twisting_vines_plant": "twisting_vines",
-  "minecraft:potted_cornflower": ["minecraft:flower_pot", "minecraft:cornflower"],
-  "minecraft:potted_allium": ["minecraft:flower_pot", "minecraft:allium"],
-  "minecraft:potted_acacia_sapling": ["minecraft:flower_pot", "minecraft:acacia_sapling"],
-  "minecraft:dead_brain_coral_wall_fan": "minecraft:dead_brain_coral_fan",
-  "minecraft:orange_wall_banner": "minecraft:orange_banner",
-  "minecraft:blue_candle_cake": ["minecraft:cake", "minecraft:blue_candle"],
-  "minecraft:potted_lily_of_the_valley": ["minecraft:flower_pot", "minecraft:lily_of_the_valley"],
-  "minecraft:green_candle_cake": ["minecraft:cake", "minecraft:green_candle"],
-  "minecraft:cocoa": "minecraft:cocoa_beans",
-  "minecraft:potted_white_tulip": ["minecraft:flower_pot", "minecraft:white_tulip"],
-  "minecraft:soul_fire": null
-}
\ No newline at end of file
diff --git a/litematicparse/block_items.old.json b/litematicparse/block_items.old.json
deleted file mode 100644
index 88964e6..0000000
--- a/litematicparse/block_items.old.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-  "minecraft:air": null,
-  "minecraft:piston_head": null,
-  "minecraft:nether_portal": null,
-  "minecraft:fire": null,
-  "minecraft:oak_wall_sign": "minecraft:oak_sign",
-  "minecraft:redstone_wire": "minecraft:redstone"
-}
\ No newline at end of file
diff --git a/litematicparse/stack_sizes.json b/litematicparse/stack_sizes.json
deleted file mode 100644
index 9790e70..0000000
--- a/litematicparse/stack_sizes.json
+++ /dev/null
@@ -1,1102 +0,0 @@
-{
-  "minecraft:stone": 64,
-  "minecraft:granite": 64,
-  "minecraft:polished_granite": 64,
-  "minecraft:diorite": 64,
-  "minecraft:polished_diorite": 64,
-  "minecraft:andesite": 64,
-  "minecraft:polished_andesite": 64,
-  "minecraft:deepslate": 64,
-  "minecraft:cobbled_deepslate": 64,
-  "minecraft:polished_deepslate": 64,
-  "minecraft:calcite": 64,
-  "minecraft:tuff": 64,
-  "minecraft:dripstone_block": 64,
-  "minecraft:grass_block": 64,
-  "minecraft:dirt": 64,
-  "minecraft:coarse_dirt": 64,
-  "minecraft:podzol": 64,
-  "minecraft:rooted_dirt": 64,
-  "minecraft:crimson_nylium": 64,
-  "minecraft:warped_nylium": 64,
-  "minecraft:cobblestone": 64,
-  "minecraft:oak_planks": 64,
-  "minecraft:spruce_planks": 64,
-  "minecraft:birch_planks": 64,
-  "minecraft:jungle_planks": 64,
-  "minecraft:acacia_planks": 64,
-  "minecraft:dark_oak_planks": 64,
-  "minecraft:crimson_planks": 64,
-  "minecraft:warped_planks": 64,
-  "minecraft:oak_sapling": 64,
-  "minecraft:spruce_sapling": 64,
-  "minecraft:birch_sapling": 64,
-  "minecraft:jungle_sapling": 64,
-  "minecraft:acacia_sapling": 64,
-  "minecraft:dark_oak_sapling": 64,
-  "minecraft:sand": 64,
-  "minecraft:red_sand": 64,
-  "minecraft:gravel": 64,
-  "minecraft:coal_ore": 64,
-  "minecraft:deepslate_coal_ore": 64,
-  "minecraft:iron_ore": 64,
-  "minecraft:deepslate_iron_ore": 64,
-  "minecraft:copper_ore": 64,
-  "minecraft:deepslate_copper_ore": 64,
-  "minecraft:gold_ore": 64,
-  "minecraft:deepslate_gold_ore": 64,
-  "minecraft:redstone_ore": 64,
-  "minecraft:deepslate_redstone_ore": 64,
-  "minecraft:emerald_ore": 64,
-  "minecraft:deepslate_emerald_ore": 64,
-  "minecraft:lapis_ore": 64,
-  "minecraft:deepslate_lapis_ore": 64,
-  "minecraft:diamond_ore": 64,
-  "minecraft:deepslate_diamond_ore": 64,
-  "minecraft:nether_gold_ore": 64,
-  "minecraft:nether_quartz_ore": 64,
-  "minecraft:ancient_debris": 64,
-  "minecraft:coal_block": 64,
-  "minecraft:raw_iron_block": 64,
-  "minecraft:raw_copper_block": 64,
-  "minecraft:raw_gold_block": 64,
-  "minecraft:amethyst_block": 64,
-  "minecraft:iron_block": 64,
-  "minecraft:copper_block": 64,
-  "minecraft:gold_block": 64,
-  "minecraft:diamond_block": 64,
-  "minecraft:netherite_block": 64,
-  "minecraft:exposed_copper": 64,
-  "minecraft:weathered_copper": 64,
-  "minecraft:oxidized_copper": 64,
-  "minecraft:cut_copper": 64,
-  "minecraft:exposed_cut_copper": 64,
-  "minecraft:weathered_cut_copper": 64,
-  "minecraft:oxidized_cut_copper": 64,
-  "minecraft:cut_copper_stairs": 64,
-  "minecraft:exposed_cut_copper_stairs": 64,
-  "minecraft:weathered_cut_copper_stairs": 64,
-  "minecraft:oxidized_cut_copper_stairs": 64,
-  "minecraft:cut_copper_slab": 64,
-  "minecraft:exposed_cut_copper_slab": 64,
-  "minecraft:weathered_cut_copper_slab": 64,
-  "minecraft:oxidized_cut_copper_slab": 64,
-  "minecraft:waxed_copper_block": 64,
-  "minecraft:waxed_exposed_copper": 64,
-  "minecraft:waxed_weathered_copper": 64,
-  "minecraft:waxed_oxidized_copper": 64,
-  "minecraft:waxed_cut_copper": 64,
-  "minecraft:waxed_exposed_cut_copper": 64,
-  "minecraft:waxed_weathered_cut_copper": 64,
-  "minecraft:waxed_oxidized_cut_copper": 64,
-  "minecraft:waxed_cut_copper_stairs": 64,
-  "minecraft:waxed_exposed_cut_copper_stairs": 64,
-  "minecraft:waxed_weathered_cut_copper_stairs": 64,
-  "minecraft:waxed_oxidized_cut_copper_stairs": 64,
-  "minecraft:waxed_cut_copper_slab": 64,
-  "minecraft:waxed_exposed_cut_copper_slab": 64,
-  "minecraft:waxed_weathered_cut_copper_slab": 64,
-  "minecraft:waxed_oxidized_cut_copper_slab": 64,
-  "minecraft:oak_log": 64,
-  "minecraft:spruce_log": 64,
-  "minecraft:birch_log": 64,
-  "minecraft:jungle_log": 64,
-  "minecraft:acacia_log": 64,
-  "minecraft:dark_oak_log": 64,
-  "minecraft:crimson_stem": 64,
-  "minecraft:warped_stem": 64,
-  "minecraft:stripped_oak_log": 64,
-  "minecraft:stripped_spruce_log": 64,
-  "minecraft:stripped_birch_log": 64,
-  "minecraft:stripped_jungle_log": 64,
-  "minecraft:stripped_acacia_log": 64,
-  "minecraft:stripped_dark_oak_log": 64,
-  "minecraft:stripped_crimson_stem": 64,
-  "minecraft:stripped_warped_stem": 64,
-  "minecraft:stripped_oak_wood": 64,
-  "minecraft:stripped_spruce_wood": 64,
-  "minecraft:stripped_birch_wood": 64,
-  "minecraft:stripped_jungle_wood": 64,
-  "minecraft:stripped_acacia_wood": 64,
-  "minecraft:stripped_dark_oak_wood": 64,
-  "minecraft:stripped_crimson_hyphae": 64,
-  "minecraft:stripped_warped_hyphae": 64,
-  "minecraft:oak_wood": 64,
-  "minecraft:spruce_wood": 64,
-  "minecraft:birch_wood": 64,
-  "minecraft:jungle_wood": 64,
-  "minecraft:acacia_wood": 64,
-  "minecraft:dark_oak_wood": 64,
-  "minecraft:crimson_hyphae": 64,
-  "minecraft:warped_hyphae": 64,
-  "minecraft:oak_leaves": 64,
-  "minecraft:spruce_leaves": 64,
-  "minecraft:birch_leaves": 64,
-  "minecraft:jungle_leaves": 64,
-  "minecraft:acacia_leaves": 64,
-  "minecraft:dark_oak_leaves": 64,
-  "minecraft:azalea_leaves": 64,
-  "minecraft:flowering_azalea_leaves": 64,
-  "minecraft:sponge": 64,
-  "minecraft:wet_sponge": 64,
-  "minecraft:glass": 64,
-  "minecraft:tinted_glass": 64,
-  "minecraft:lapis_block": 64,
-  "minecraft:sandstone": 64,
-  "minecraft:chiseled_sandstone": 64,
-  "minecraft:cut_sandstone": 64,
-  "minecraft:cobweb": 64,
-  "minecraft:grass": 64,
-  "minecraft:fern": 64,
-  "minecraft:azalea": 64,
-  "minecraft:flowering_azalea": 64,
-  "minecraft:dead_bush": 64,
-  "minecraft:seagrass": 64,
-  "minecraft:sea_pickle": 64,
-  "minecraft:white_wool": 64,
-  "minecraft:orange_wool": 64,
-  "minecraft:magenta_wool": 64,
-  "minecraft:light_blue_wool": 64,
-  "minecraft:yellow_wool": 64,
-  "minecraft:lime_wool": 64,
-  "minecraft:pink_wool": 64,
-  "minecraft:gray_wool": 64,
-  "minecraft:light_gray_wool": 64,
-  "minecraft:cyan_wool": 64,
-  "minecraft:purple_wool": 64,
-  "minecraft:blue_wool": 64,
-  "minecraft:brown_wool": 64,
-  "minecraft:green_wool": 64,
-  "minecraft:red_wool": 64,
-  "minecraft:black_wool": 64,
-  "minecraft:dandelion": 64,
-  "minecraft:poppy": 64,
-  "minecraft:blue_orchid": 64,
-  "minecraft:allium": 64,
-  "minecraft:azure_bluet": 64,
-  "minecraft:red_tulip": 64,
-  "minecraft:orange_tulip": 64,
-  "minecraft:white_tulip": 64,
-  "minecraft:pink_tulip": 64,
-  "minecraft:oxeye_daisy": 64,
-  "minecraft:cornflower": 64,
-  "minecraft:lily_of_the_valley": 64,
-  "minecraft:wither_rose": 64,
-  "minecraft:brown_mushroom": 64,
-  "minecraft:red_mushroom": 64,
-  "minecraft:crimson_fungus": 64,
-  "minecraft:warped_fungus": 64,
-  "minecraft:crimson_roots": 64,
-  "minecraft:warped_roots": 64,
-  "minecraft:nether_sprouts": 64,
-  "minecraft:weeping_vines": 64,
-  "minecraft:twisting_vines": 64,
-  "minecraft:sugar_cane": 64,
-  "minecraft:kelp": 64,
-  "minecraft:moss_carpet": 64,
-  "minecraft:moss_block": 64,
-  "minecraft:hanging_roots": 64,
-  "minecraft:big_dripleaf": 64,
-  "minecraft:small_dripleaf": 64,
-  "minecraft:bamboo": 64,
-  "minecraft:oak_slab": 64,
-  "minecraft:spruce_slab": 64,
-  "minecraft:birch_slab": 64,
-  "minecraft:jungle_slab": 64,
-  "minecraft:acacia_slab": 64,
-  "minecraft:dark_oak_slab": 64,
-  "minecraft:crimson_slab": 64,
-  "minecraft:warped_slab": 64,
-  "minecraft:stone_slab": 64,
-  "minecraft:smooth_stone_slab": 64,
-  "minecraft:sandstone_slab": 64,
-  "minecraft:cut_sandstone_slab": 64,
-  "minecraft:cobblestone_slab": 64,
-  "minecraft:brick_slab": 64,
-  "minecraft:stone_brick_slab": 64,
-  "minecraft:nether_brick_slab": 64,
-  "minecraft:quartz_slab": 64,
-  "minecraft:red_sandstone_slab": 64,
-  "minecraft:cut_red_sandstone_slab": 64,
-  "minecraft:purpur_slab": 64,
-  "minecraft:prismarine_slab": 64,
-  "minecraft:prismarine_brick_slab": 64,
-  "minecraft:dark_prismarine_slab": 64,
-  "minecraft:smooth_quartz": 64,
-  "minecraft:smooth_red_sandstone": 64,
-  "minecraft:smooth_sandstone": 64,
-  "minecraft:smooth_stone": 64,
-  "minecraft:bricks": 64,
-  "minecraft:bookshelf": 64,
-  "minecraft:mossy_cobblestone": 64,
-  "minecraft:obsidian": 64,
-  "minecraft:torch": 64,
-  "minecraft:end_rod": 64,
-  "minecraft:chorus_flower": 64,
-  "minecraft:purpur_block": 64,
-  "minecraft:purpur_pillar": 64,
-  "minecraft:purpur_stairs": 64,
-  "minecraft:oak_stairs": 64,
-  "minecraft:chest": 64,
-  "minecraft:crafting_table": 64,
-  "minecraft:furnace": 64,
-  "minecraft:ladder": 64,
-  "minecraft:cobblestone_stairs": 64,
-  "minecraft:snow": 64,
-  "minecraft:ice": 64,
-  "minecraft:snow_block": 64,
-  "minecraft:cactus": 64,
-  "minecraft:clay": 64,
-  "minecraft:jukebox": 64,
-  "minecraft:oak_fence": 64,
-  "minecraft:spruce_fence": 64,
-  "minecraft:birch_fence": 64,
-  "minecraft:jungle_fence": 64,
-  "minecraft:acacia_fence": 64,
-  "minecraft:dark_oak_fence": 64,
-  "minecraft:crimson_fence": 64,
-  "minecraft:warped_fence": 64,
-  "minecraft:pumpkin": 64,
-  "minecraft:carved_pumpkin": 64,
-  "minecraft:jack_o_lantern": 64,
-  "minecraft:netherrack": 64,
-  "minecraft:soul_sand": 64,
-  "minecraft:soul_soil": 64,
-  "minecraft:basalt": 64,
-  "minecraft:polished_basalt": 64,
-  "minecraft:smooth_basalt": 64,
-  "minecraft:soul_torch": 64,
-  "minecraft:glowstone": 64,
-  "minecraft:stone_bricks": 64,
-  "minecraft:mossy_stone_bricks": 64,
-  "minecraft:cracked_stone_bricks": 64,
-  "minecraft:chiseled_stone_bricks": 64,
-  "minecraft:deepslate_bricks": 64,
-  "minecraft:cracked_deepslate_bricks": 64,
-  "minecraft:deepslate_tiles": 64,
-  "minecraft:cracked_deepslate_tiles": 64,
-  "minecraft:chiseled_deepslate": 64,
-  "minecraft:brown_mushroom_block": 64,
-  "minecraft:red_mushroom_block": 64,
-  "minecraft:mushroom_stem": 64,
-  "minecraft:iron_bars": 64,
-  "minecraft:chain": 64,
-  "minecraft:glass_pane": 64,
-  "minecraft:melon": 64,
-  "minecraft:vine": 64,
-  "minecraft:glow_lichen": 64,
-  "minecraft:brick_stairs": 64,
-  "minecraft:stone_brick_stairs": 64,
-  "minecraft:mycelium": 64,
-  "minecraft:lily_pad": 64,
-  "minecraft:nether_bricks": 64,
-  "minecraft:cracked_nether_bricks": 64,
-  "minecraft:chiseled_nether_bricks": 64,
-  "minecraft:nether_brick_fence": 64,
-  "minecraft:nether_brick_stairs": 64,
-  "minecraft:enchanting_table": 64,
-  "minecraft:end_stone": 64,
-  "minecraft:end_stone_bricks": 64,
-  "minecraft:dragon_egg": 64,
-  "minecraft:sandstone_stairs": 64,
-  "minecraft:ender_chest": 64,
-  "minecraft:emerald_block": 64,
-  "minecraft:spruce_stairs": 64,
-  "minecraft:birch_stairs": 64,
-  "minecraft:jungle_stairs": 64,
-  "minecraft:crimson_stairs": 64,
-  "minecraft:warped_stairs": 64,
-  "minecraft:beacon": 64,
-  "minecraft:cobblestone_wall": 64,
-  "minecraft:mossy_cobblestone_wall": 64,
-  "minecraft:brick_wall": 64,
-  "minecraft:prismarine_wall": 64,
-  "minecraft:red_sandstone_wall": 64,
-  "minecraft:mossy_stone_brick_wall": 64,
-  "minecraft:granite_wall": 64,
-  "minecraft:stone_brick_wall": 64,
-  "minecraft:nether_brick_wall": 64,
-  "minecraft:andesite_wall": 64,
-  "minecraft:red_nether_brick_wall": 64,
-  "minecraft:sandstone_wall": 64,
-  "minecraft:end_stone_brick_wall": 64,
-  "minecraft:diorite_wall": 64,
-  "minecraft:blackstone_wall": 64,
-  "minecraft:polished_blackstone_wall": 64,
-  "minecraft:polished_blackstone_brick_wall": 64,
-  "minecraft:cobbled_deepslate_wall": 64,
-  "minecraft:polished_deepslate_wall": 64,
-  "minecraft:deepslate_brick_wall": 64,
-  "minecraft:deepslate_tile_wall": 64,
-  "minecraft:anvil": 64,
-  "minecraft:chipped_anvil": 64,
-  "minecraft:damaged_anvil": 64,
-  "minecraft:chiseled_quartz_block": 64,
-  "minecraft:quartz_block": 64,
-  "minecraft:quartz_bricks": 64,
-  "minecraft:quartz_pillar": 64,
-  "minecraft:quartz_stairs": 64,
-  "minecraft:white_terracotta": 64,
-  "minecraft:orange_terracotta": 64,
-  "minecraft:magenta_terracotta": 64,
-  "minecraft:light_blue_terracotta": 64,
-  "minecraft:yellow_terracotta": 64,
-  "minecraft:lime_terracotta": 64,
-  "minecraft:pink_terracotta": 64,
-  "minecraft:gray_terracotta": 64,
-  "minecraft:light_gray_terracotta": 64,
-  "minecraft:cyan_terracotta": 64,
-  "minecraft:purple_terracotta": 64,
-  "minecraft:blue_terracotta": 64,
-  "minecraft:brown_terracotta": 64,
-  "minecraft:green_terracotta": 64,
-  "minecraft:red_terracotta": 64,
-  "minecraft:black_terracotta": 64,
-  "minecraft:hay_block": 64,
-  "minecraft:white_carpet": 64,
-  "minecraft:orange_carpet": 64,
-  "minecraft:magenta_carpet": 64,
-  "minecraft:light_blue_carpet": 64,
-  "minecraft:yellow_carpet": 64,
-  "minecraft:lime_carpet": 64,
-  "minecraft:pink_carpet": 64,
-  "minecraft:gray_carpet": 64,
-  "minecraft:light_gray_carpet": 64,
-  "minecraft:cyan_carpet": 64,
-  "minecraft:purple_carpet": 64,
-  "minecraft:blue_carpet": 64,
-  "minecraft:brown_carpet": 64,
-  "minecraft:green_carpet": 64,
-  "minecraft:red_carpet": 64,
-  "minecraft:black_carpet": 64,
-  "minecraft:terracotta": 64,
-  "minecraft:packed_ice": 64,
-  "minecraft:acacia_stairs": 64,
-  "minecraft:dark_oak_stairs": 64,
-  "minecraft:sunflower": 64,
-  "minecraft:lilac": 64,
-  "minecraft:rose_bush": 64,
-  "minecraft:peony": 64,
-  "minecraft:tall_grass": 64,
-  "minecraft:large_fern": 64,
-  "minecraft:white_stained_glass": 64,
-  "minecraft:orange_stained_glass": 64,
-  "minecraft:magenta_stained_glass": 64,
-  "minecraft:light_blue_stained_glass": 64,
-  "minecraft:yellow_stained_glass": 64,
-  "minecraft:lime_stained_glass": 64,
-  "minecraft:pink_stained_glass": 64,
-  "minecraft:gray_stained_glass": 64,
-  "minecraft:light_gray_stained_glass": 64,
-  "minecraft:cyan_stained_glass": 64,
-  "minecraft:purple_stained_glass": 64,
-  "minecraft:blue_stained_glass": 64,
-  "minecraft:brown_stained_glass": 64,
-  "minecraft:green_stained_glass": 64,
-  "minecraft:red_stained_glass": 64,
-  "minecraft:black_stained_glass": 64,
-  "minecraft:white_stained_glass_pane": 64,
-  "minecraft:orange_stained_glass_pane": 64,
-  "minecraft:magenta_stained_glass_pane": 64,
-  "minecraft:light_blue_stained_glass_pane": 64,
-  "minecraft:yellow_stained_glass_pane": 64,
-  "minecraft:lime_stained_glass_pane": 64,
-  "minecraft:pink_stained_glass_pane": 64,
-  "minecraft:gray_stained_glass_pane": 64,
-  "minecraft:light_gray_stained_glass_pane": 64,
-  "minecraft:cyan_stained_glass_pane": 64,
-  "minecraft:purple_stained_glass_pane": 64,
-  "minecraft:blue_stained_glass_pane": 64,
-  "minecraft:brown_stained_glass_pane": 64,
-  "minecraft:green_stained_glass_pane": 64,
-  "minecraft:red_stained_glass_pane": 64,
-  "minecraft:black_stained_glass_pane": 64,
-  "minecraft:prismarine": 64,
-  "minecraft:prismarine_bricks": 64,
-  "minecraft:dark_prismarine": 64,
-  "minecraft:prismarine_stairs": 64,
-  "minecraft:prismarine_brick_stairs": 64,
-  "minecraft:dark_prismarine_stairs": 64,
-  "minecraft:sea_lantern": 64,
-  "minecraft:red_sandstone": 64,
-  "minecraft:chiseled_red_sandstone": 64,
-  "minecraft:cut_red_sandstone": 64,
-  "minecraft:red_sandstone_stairs": 64,
-  "minecraft:magma_block": 64,
-  "minecraft:nether_wart_block": 64,
-  "minecraft:warped_wart_block": 64,
-  "minecraft:red_nether_bricks": 64,
-  "minecraft:bone_block": 64,
-  "minecraft:shulker_box": 1,
-  "minecraft:white_shulker_box": 1,
-  "minecraft:orange_shulker_box": 1,
-  "minecraft:magenta_shulker_box": 1,
-  "minecraft:light_blue_shulker_box": 1,
-  "minecraft:yellow_shulker_box": 1,
-  "minecraft:lime_shulker_box": 1,
-  "minecraft:pink_shulker_box": 1,
-  "minecraft:gray_shulker_box": 1,
-  "minecraft:light_gray_shulker_box": 1,
-  "minecraft:cyan_shulker_box": 1,
-  "minecraft:purple_shulker_box": 1,
-  "minecraft:blue_shulker_box": 1,
-  "minecraft:brown_shulker_box": 1,
-  "minecraft:green_shulker_box": 1,
-  "minecraft:red_shulker_box": 1,
-  "minecraft:black_shulker_box": 1,
-  "minecraft:white_glazed_terracotta": 64,
-  "minecraft:orange_glazed_terracotta": 64,
-  "minecraft:magenta_glazed_terracotta": 64,
-  "minecraft:light_blue_glazed_terracotta": 64,
-  "minecraft:yellow_glazed_terracotta": 64,
-  "minecraft:lime_glazed_terracotta": 64,
-  "minecraft:pink_glazed_terracotta": 64,
-  "minecraft:gray_glazed_terracotta": 64,
-  "minecraft:light_gray_glazed_terracotta": 64,
-  "minecraft:cyan_glazed_terracotta": 64,
-  "minecraft:purple_glazed_terracotta": 64,
-  "minecraft:blue_glazed_terracotta": 64,
-  "minecraft:brown_glazed_terracotta": 64,
-  "minecraft:green_glazed_terracotta": 64,
-  "minecraft:red_glazed_terracotta": 64,
-  "minecraft:black_glazed_terracotta": 64,
-  "minecraft:white_concrete": 64,
-  "minecraft:orange_concrete": 64,
-  "minecraft:magenta_concrete": 64,
-  "minecraft:light_blue_concrete": 64,
-  "minecraft:yellow_concrete": 64,
-  "minecraft:lime_concrete": 64,
-  "minecraft:pink_concrete": 64,
-  "minecraft:gray_concrete": 64,
-  "minecraft:light_gray_concrete": 64,
-  "minecraft:cyan_concrete": 64,
-  "minecraft:purple_concrete": 64,
-  "minecraft:blue_concrete": 64,
-  "minecraft:brown_concrete": 64,
-  "minecraft:green_concrete": 64,
-  "minecraft:red_concrete": 64,
-  "minecraft:black_concrete": 64,
-  "minecraft:white_concrete_powder": 64,
-  "minecraft:orange_concrete_powder": 64,
-  "minecraft:magenta_concrete_powder": 64,
-  "minecraft:light_blue_concrete_powder": 64,
-  "minecraft:yellow_concrete_powder": 64,
-  "minecraft:lime_concrete_powder": 64,
-  "minecraft:pink_concrete_powder": 64,
-  "minecraft:gray_concrete_powder": 64,
-  "minecraft:light_gray_concrete_powder": 64,
-  "minecraft:cyan_concrete_powder": 64,
-  "minecraft:purple_concrete_powder": 64,
-  "minecraft:blue_concrete_powder": 64,
-  "minecraft:brown_concrete_powder": 64,
-  "minecraft:green_concrete_powder": 64,
-  "minecraft:red_concrete_powder": 64,
-  "minecraft:black_concrete_powder": 64,
-  "minecraft:turtle_egg": 64,
-  "minecraft:dead_tube_coral_block": 64,
-  "minecraft:dead_brain_coral_block": 64,
-  "minecraft:dead_bubble_coral_block": 64,
-  "minecraft:dead_fire_coral_block": 64,
-  "minecraft:dead_horn_coral_block": 64,
-  "minecraft:tube_coral_block": 64,
-  "minecraft:brain_coral_block": 64,
-  "minecraft:bubble_coral_block": 64,
-  "minecraft:fire_coral_block": 64,
-  "minecraft:horn_coral_block": 64,
-  "minecraft:tube_coral": 64,
-  "minecraft:brain_coral": 64,
-  "minecraft:bubble_coral": 64,
-  "minecraft:fire_coral": 64,
-  "minecraft:horn_coral": 64,
-  "minecraft:dead_brain_coral": 64,
-  "minecraft:dead_bubble_coral": 64,
-  "minecraft:dead_fire_coral": 64,
-  "minecraft:dead_horn_coral": 64,
-  "minecraft:dead_tube_coral": 64,
-  "minecraft:tube_coral_fan": 64,
-  "minecraft:brain_coral_fan": 64,
-  "minecraft:bubble_coral_fan": 64,
-  "minecraft:fire_coral_fan": 64,
-  "minecraft:horn_coral_fan": 64,
-  "minecraft:dead_tube_coral_fan": 64,
-  "minecraft:dead_brain_coral_fan": 64,
-  "minecraft:dead_bubble_coral_fan": 64,
-  "minecraft:dead_fire_coral_fan": 64,
-  "minecraft:dead_horn_coral_fan": 64,
-  "minecraft:blue_ice": 64,
-  "minecraft:conduit": 64,
-  "minecraft:polished_granite_stairs": 64,
-  "minecraft:smooth_red_sandstone_stairs": 64,
-  "minecraft:mossy_stone_brick_stairs": 64,
-  "minecraft:polished_diorite_stairs": 64,
-  "minecraft:mossy_cobblestone_stairs": 64,
-  "minecraft:end_stone_brick_stairs": 64,
-  "minecraft:stone_stairs": 64,
-  "minecraft:smooth_sandstone_stairs": 64,
-  "minecraft:smooth_quartz_stairs": 64,
-  "minecraft:granite_stairs": 64,
-  "minecraft:andesite_stairs": 64,
-  "minecraft:red_nether_brick_stairs": 64,
-  "minecraft:polished_andesite_stairs": 64,
-  "minecraft:diorite_stairs": 64,
-  "minecraft:cobbled_deepslate_stairs": 64,
-  "minecraft:polished_deepslate_stairs": 64,
-  "minecraft:deepslate_brick_stairs": 64,
-  "minecraft:deepslate_tile_stairs": 64,
-  "minecraft:polished_granite_slab": 64,
-  "minecraft:smooth_red_sandstone_slab": 64,
-  "minecraft:mossy_stone_brick_slab": 64,
-  "minecraft:polished_diorite_slab": 64,
-  "minecraft:mossy_cobblestone_slab": 64,
-  "minecraft:end_stone_brick_slab": 64,
-  "minecraft:smooth_sandstone_slab": 64,
-  "minecraft:smooth_quartz_slab": 64,
-  "minecraft:granite_slab": 64,
-  "minecraft:andesite_slab": 64,
-  "minecraft:red_nether_brick_slab": 64,
-  "minecraft:polished_andesite_slab": 64,
-  "minecraft:diorite_slab": 64,
-  "minecraft:cobbled_deepslate_slab": 64,
-  "minecraft:polished_deepslate_slab": 64,
-  "minecraft:deepslate_brick_slab": 64,
-  "minecraft:deepslate_tile_slab": 64,
-  "minecraft:scaffolding": 64,
-  "minecraft:redstone": 64,
-  "minecraft:redstone_torch": 64,
-  "minecraft:redstone_block": 64,
-  "minecraft:repeater": 64,
-  "minecraft:comparator": 64,
-  "minecraft:piston": 64,
-  "minecraft:sticky_piston": 64,
-  "minecraft:slime_block": 64,
-  "minecraft:honey_block": 64,
-  "minecraft:observer": 64,
-  "minecraft:hopper": 64,
-  "minecraft:dispenser": 64,
-  "minecraft:dropper": 64,
-  "minecraft:lectern": 64,
-  "minecraft:target": 64,
-  "minecraft:lever": 64,
-  "minecraft:lightning_rod": 64,
-  "minecraft:daylight_detector": 64,
-  "minecraft:tripwire_hook": 64,
-  "minecraft:trapped_chest": 64,
-  "minecraft:tnt": 64,
-  "minecraft:redstone_lamp": 64,
-  "minecraft:note_block": 64,
-  "minecraft:stone_button": 64,
-  "minecraft:polished_blackstone_button": 64,
-  "minecraft:oak_button": 64,
-  "minecraft:spruce_button": 64,
-  "minecraft:birch_button": 64,
-  "minecraft:jungle_button": 64,
-  "minecraft:acacia_button": 64,
-  "minecraft:dark_oak_button": 64,
-  "minecraft:crimson_button": 64,
-  "minecraft:warped_button": 64,
-  "minecraft:stone_pressure_plate": 64,
-  "minecraft:polished_blackstone_pressure_plate": 64,
-  "minecraft:light_weighted_pressure_plate": 64,
-  "minecraft:heavy_weighted_pressure_plate": 64,
-  "minecraft:oak_pressure_plate": 64,
-  "minecraft:spruce_pressure_plate": 64,
-  "minecraft:birch_pressure_plate": 64,
-  "minecraft:jungle_pressure_plate": 64,
-  "minecraft:acacia_pressure_plate": 64,
-  "minecraft:dark_oak_pressure_plate": 64,
-  "minecraft:crimson_pressure_plate": 64,
-  "minecraft:warped_pressure_plate": 64,
-  "minecraft:iron_door": 64,
-  "minecraft:oak_door": 64,
-  "minecraft:spruce_door": 64,
-  "minecraft:birch_door": 64,
-  "minecraft:jungle_door": 64,
-  "minecraft:acacia_door": 64,
-  "minecraft:dark_oak_door": 64,
-  "minecraft:crimson_door": 64,
-  "minecraft:warped_door": 64,
-  "minecraft:iron_trapdoor": 64,
-  "minecraft:oak_trapdoor": 64,
-  "minecraft:spruce_trapdoor": 64,
-  "minecraft:birch_trapdoor": 64,
-  "minecraft:jungle_trapdoor": 64,
-  "minecraft:acacia_trapdoor": 64,
-  "minecraft:dark_oak_trapdoor": 64,
-  "minecraft:crimson_trapdoor": 64,
-  "minecraft:warped_trapdoor": 64,
-  "minecraft:oak_fence_gate": 64,
-  "minecraft:spruce_fence_gate": 64,
-  "minecraft:birch_fence_gate": 64,
-  "minecraft:jungle_fence_gate": 64,
-  "minecraft:acacia_fence_gate": 64,
-  "minecraft:dark_oak_fence_gate": 64,
-  "minecraft:crimson_fence_gate": 64,
-  "minecraft:warped_fence_gate": 64,
-  "minecraft:powered_rail": 64,
-  "minecraft:detector_rail": 64,
-  "minecraft:rail": 64,
-  "minecraft:activator_rail": 64,
-  "minecraft:saddle": 1,
-  "minecraft:minecart": 1,
-  "minecraft:chest_minecart": 1,
-  "minecraft:furnace_minecart": 1,
-  "minecraft:tnt_minecart": 1,
-  "minecraft:hopper_minecart": 1,
-  "minecraft:carrot_on_a_stick": 1,
-  "minecraft:warped_fungus_on_a_stick": 1,
-  "minecraft:elytra": 1,
-  "minecraft:oak_boat": 1,
-  "minecraft:spruce_boat": 1,
-  "minecraft:birch_boat": 1,
-  "minecraft:jungle_boat": 1,
-  "minecraft:acacia_boat": 1,
-  "minecraft:dark_oak_boat": 1,
-  "minecraft:turtle_helmet": 1,
-  "minecraft:scute": 64,
-  "minecraft:flint_and_steel": 1,
-  "minecraft:apple": 64,
-  "minecraft:bow": 1,
-  "minecraft:arrow": 64,
-  "minecraft:coal": 64,
-  "minecraft:charcoal": 64,
-  "minecraft:diamond": 64,
-  "minecraft:emerald": 64,
-  "minecraft:lapis_lazuli": 64,
-  "minecraft:quartz": 64,
-  "minecraft:amethyst_shard": 64,
-  "minecraft:raw_iron": 64,
-  "minecraft:iron_ingot": 64,
-  "minecraft:raw_copper": 64,
-  "minecraft:copper_ingot": 64,
-  "minecraft:raw_gold": 64,
-  "minecraft:gold_ingot": 64,
-  "minecraft:netherite_ingot": 64,
-  "minecraft:netherite_scrap": 64,
-  "minecraft:wooden_sword": 1,
-  "minecraft:wooden_shovel": 1,
-  "minecraft:wooden_pickaxe": 1,
-  "minecraft:wooden_axe": 1,
-  "minecraft:wooden_hoe": 1,
-  "minecraft:stone_sword": 1,
-  "minecraft:stone_shovel": 1,
-  "minecraft:stone_pickaxe": 1,
-  "minecraft:stone_axe": 1,
-  "minecraft:stone_hoe": 1,
-  "minecraft:golden_sword": 1,
-  "minecraft:golden_shovel": 1,
-  "minecraft:golden_pickaxe": 1,
-  "minecraft:golden_axe": 1,
-  "minecraft:golden_hoe": 1,
-  "minecraft:iron_sword": 1,
-  "minecraft:iron_shovel": 1,
-  "minecraft:iron_pickaxe": 1,
-  "minecraft:iron_axe": 1,
-  "minecraft:iron_hoe": 1,
-  "minecraft:diamond_sword": 1,
-  "minecraft:diamond_shovel": 1,
-  "minecraft:diamond_pickaxe": 1,
-  "minecraft:diamond_axe": 1,
-  "minecraft:diamond_hoe": 1,
-  "minecraft:netherite_sword": 1,
-  "minecraft:netherite_shovel": 1,
-  "minecraft:netherite_pickaxe": 1,
-  "minecraft:netherite_axe": 1,
-  "minecraft:netherite_hoe": 1,
-  "minecraft:stick": 64,
-  "minecraft:bowl": 64,
-  "minecraft:mushroom_stew": 1,
-  "minecraft:string": 64,
-  "minecraft:feather": 64,
-  "minecraft:gunpowder": 64,
-  "minecraft:wheat_seeds": 64,
-  "minecraft:wheat": 64,
-  "minecraft:bread": 64,
-  "minecraft:leather_helmet": 1,
-  "minecraft:leather_chestplate": 1,
-  "minecraft:leather_leggings": 1,
-  "minecraft:leather_boots": 1,
-  "minecraft:chainmail_helmet": 1,
-  "minecraft:chainmail_chestplate": 1,
-  "minecraft:chainmail_leggings": 1,
-  "minecraft:chainmail_boots": 1,
-  "minecraft:iron_helmet": 1,
-  "minecraft:iron_chestplate": 1,
-  "minecraft:iron_leggings": 1,
-  "minecraft:iron_boots": 1,
-  "minecraft:diamond_helmet": 1,
-  "minecraft:diamond_chestplate": 1,
-  "minecraft:diamond_leggings": 1,
-  "minecraft:diamond_boots": 1,
-  "minecraft:golden_helmet": 1,
-  "minecraft:golden_chestplate": 1,
-  "minecraft:golden_leggings": 1,
-  "minecraft:golden_boots": 1,
-  "minecraft:netherite_helmet": 1,
-  "minecraft:netherite_chestplate": 1,
-  "minecraft:netherite_leggings": 1,
-  "minecraft:netherite_boots": 1,
-  "minecraft:flint": 64,
-  "minecraft:porkchop": 64,
-  "minecraft:cooked_porkchop": 64,
-  "minecraft:painting": 64,
-  "minecraft:golden_apple": 64,
-  "minecraft:enchanted_golden_apple": 64,
-  "minecraft:oak_sign": 16,
-  "minecraft:spruce_sign": 16,
-  "minecraft:birch_sign": 16,
-  "minecraft:jungle_sign": 16,
-  "minecraft:acacia_sign": 16,
-  "minecraft:dark_oak_sign": 16,
-  "minecraft:crimson_sign": 16,
-  "minecraft:warped_sign": 16,
-  "minecraft:bucket": 16,
-  "minecraft:water_bucket": 1,
-  "minecraft:lava_bucket": 1,
-  "minecraft:powder_snow_bucket": 1,
-  "minecraft:snowball": 16,
-  "minecraft:leather": 64,
-  "minecraft:milk_bucket": 1,
-  "minecraft:pufferfish_bucket": 1,
-  "minecraft:salmon_bucket": 1,
-  "minecraft:cod_bucket": 1,
-  "minecraft:tropical_fish_bucket": 1,
-  "minecraft:axolotl_bucket": 1,
-  "minecraft:brick": 64,
-  "minecraft:clay_ball": 64,
-  "minecraft:dried_kelp_block": 64,
-  "minecraft:paper": 64,
-  "minecraft:book": 64,
-  "minecraft:slime_ball": 64,
-  "minecraft:egg": 16,
-  "minecraft:compass": 64,
-  "minecraft:fishing_rod": 1,
-  "minecraft:clock": 64,
-  "minecraft:spyglass": 1,
-  "minecraft:glowstone_dust": 64,
-  "minecraft:cod": 64,
-  "minecraft:salmon": 64,
-  "minecraft:tropical_fish": 64,
-  "minecraft:pufferfish": 64,
-  "minecraft:cooked_cod": 64,
-  "minecraft:cooked_salmon": 64,
-  "minecraft:ink_sac": 64,
-  "minecraft:glow_ink_sac": 64,
-  "minecraft:cocoa_beans": 64,
-  "minecraft:white_dye": 64,
-  "minecraft:orange_dye": 64,
-  "minecraft:magenta_dye": 64,
-  "minecraft:light_blue_dye": 64,
-  "minecraft:yellow_dye": 64,
-  "minecraft:lime_dye": 64,
-  "minecraft:pink_dye": 64,
-  "minecraft:gray_dye": 64,
-  "minecraft:light_gray_dye": 64,
-  "minecraft:cyan_dye": 64,
-  "minecraft:purple_dye": 64,
-  "minecraft:blue_dye": 64,
-  "minecraft:brown_dye": 64,
-  "minecraft:green_dye": 64,
-  "minecraft:red_dye": 64,
-  "minecraft:black_dye": 64,
-  "minecraft:bone_meal": 64,
-  "minecraft:bone": 64,
-  "minecraft:sugar": 64,
-  "minecraft:cake": 1,
-  "minecraft:white_bed": 1,
-  "minecraft:orange_bed": 1,
-  "minecraft:magenta_bed": 1,
-  "minecraft:light_blue_bed": 1,
-  "minecraft:yellow_bed": 1,
-  "minecraft:lime_bed": 1,
-  "minecraft:pink_bed": 1,
-  "minecraft:gray_bed": 1,
-  "minecraft:light_gray_bed": 1,
-  "minecraft:cyan_bed": 1,
-  "minecraft:purple_bed": 1,
-  "minecraft:blue_bed": 1,
-  "minecraft:brown_bed": 1,
-  "minecraft:green_bed": 1,
-  "minecraft:red_bed": 1,
-  "minecraft:black_bed": 1,
-  "minecraft:cookie": 64,
-  "minecraft:filled_map": 64,
-  "minecraft:shears": 1,
-  "minecraft:melon_slice": 64,
-  "minecraft:dried_kelp": 64,
-  "minecraft:pumpkin_seeds": 64,
-  "minecraft:melon_seeds": 64,
-  "minecraft:beef": 64,
-  "minecraft:cooked_beef": 64,
-  "minecraft:chicken": 64,
-  "minecraft:cooked_chicken": 64,
-  "minecraft:rotten_flesh": 64,
-  "minecraft:ender_pearl": 16,
-  "minecraft:blaze_rod": 64,
-  "minecraft:ghast_tear": 64,
-  "minecraft:gold_nugget": 64,
-  "minecraft:nether_wart": 64,
-  "minecraft:potion": 1,
-  "minecraft:glass_bottle": 64,
-  "minecraft:spider_eye": 64,
-  "minecraft:fermented_spider_eye": 64,
-  "minecraft:blaze_powder": 64,
-  "minecraft:magma_cream": 64,
-  "minecraft:brewing_stand": 64,
-  "minecraft:cauldron": 64,
-  "minecraft:ender_eye": 64,
-  "minecraft:glistering_melon_slice": 64,
-  "minecraft:experience_bottle": 64,
-  "minecraft:fire_charge": 64,
-  "minecraft:writable_book": 1,
-  "minecraft:written_book": 16,
-  "minecraft:item_frame": 64,
-  "minecraft:glow_item_frame": 64,
-  "minecraft:flower_pot": 64,
-  "minecraft:carrot": 64,
-  "minecraft:potato": 64,
-  "minecraft:baked_potato": 64,
-  "minecraft:poisonous_potato": 64,
-  "minecraft:map": 64,
-  "minecraft:golden_carrot": 64,
-  "minecraft:skeleton_skull": 64,
-  "minecraft:wither_skeleton_skull": 64,
-  "minecraft:zombie_head": 64,
-  "minecraft:creeper_head": 64,
-  "minecraft:dragon_head": 64,
-  "minecraft:nether_star": 64,
-  "minecraft:pumpkin_pie": 64,
-  "minecraft:firework_rocket": 64,
-  "minecraft:firework_star": 64,
-  "minecraft:enchanted_book": 1,
-  "minecraft:nether_brick": 64,
-  "minecraft:prismarine_shard": 64,
-  "minecraft:prismarine_crystals": 64,
-  "minecraft:rabbit": 64,
-  "minecraft:cooked_rabbit": 64,
-  "minecraft:rabbit_stew": 1,
-  "minecraft:rabbit_foot": 64,
-  "minecraft:rabbit_hide": 64,
-  "minecraft:armor_stand": 16,
-  "minecraft:iron_horse_armor": 1,
-  "minecraft:golden_horse_armor": 1,
-  "minecraft:diamond_horse_armor": 1,
-  "minecraft:leather_horse_armor": 1,
-  "minecraft:lead": 64,
-  "minecraft:name_tag": 64,
-  "minecraft:mutton": 64,
-  "minecraft:cooked_mutton": 64,
-  "minecraft:white_banner": 16,
-  "minecraft:orange_banner": 16,
-  "minecraft:magenta_banner": 16,
-  "minecraft:light_blue_banner": 16,
-  "minecraft:yellow_banner": 16,
-  "minecraft:lime_banner": 16,
-  "minecraft:pink_banner": 16,
-  "minecraft:gray_banner": 16,
-  "minecraft:light_gray_banner": 16,
-  "minecraft:cyan_banner": 16,
-  "minecraft:purple_banner": 16,
-  "minecraft:blue_banner": 16,
-  "minecraft:brown_banner": 16,
-  "minecraft:green_banner": 16,
-  "minecraft:red_banner": 16,
-  "minecraft:black_banner": 16,
-  "minecraft:end_crystal": 64,
-  "minecraft:chorus_fruit": 64,
-  "minecraft:popped_chorus_fruit": 64,
-  "minecraft:beetroot": 64,
-  "minecraft:beetroot_seeds": 64,
-  "minecraft:beetroot_soup": 1,
-  "minecraft:dragon_breath": 64,
-  "minecraft:splash_potion": 1,
-  "minecraft:spectral_arrow": 64,
-  "minecraft:tipped_arrow": 64,
-  "minecraft:lingering_potion": 1,
-  "minecraft:shield": 1,
-  "minecraft:totem_of_undying": 1,
-  "minecraft:shulker_shell": 64,
-  "minecraft:iron_nugget": 64,
-  "minecraft:music_disc_13": 1,
-  "minecraft:music_disc_cat": 1,
-  "minecraft:music_disc_blocks": 1,
-  "minecraft:music_disc_chirp": 1,
-  "minecraft:music_disc_far": 1,
-  "minecraft:music_disc_mall": 1,
-  "minecraft:music_disc_mellohi": 1,
-  "minecraft:music_disc_stal": 1,
-  "minecraft:music_disc_strad": 1,
-  "minecraft:music_disc_ward": 1,
-  "minecraft:music_disc_11": 1,
-  "minecraft:music_disc_wait": 1,
-  "minecraft:music_disc_pigstep": 1,
-  "minecraft:music_disc_otherside": 1,
-  "minecraft:trident": 1,
-  "minecraft:phantom_membrane": 64,
-  "minecraft:nautilus_shell": 64,
-  "minecraft:heart_of_the_sea": 64,
-  "minecraft:crossbow": 1,
-  "minecraft:suspicious_stew": 1,
-  "minecraft:loom": 64,
-  "minecraft:flower_banner_pattern": 1,
-  "minecraft:creeper_banner_pattern": 1,
-  "minecraft:skull_banner_pattern": 1,
-  "minecraft:mojang_banner_pattern": 1,
-  "minecraft:globe_banner_pattern": 1,
-  "minecraft:piglin_banner_pattern": 1,
-  "minecraft:composter": 64,
-  "minecraft:barrel": 64,
-  "minecraft:smoker": 64,
-  "minecraft:blast_furnace": 64,
-  "minecraft:cartography_table": 64,
-  "minecraft:fletching_table": 64,
-  "minecraft:grindstone": 64,
-  "minecraft:smithing_table": 64,
-  "minecraft:stonecutter": 64,
-  "minecraft:bell": 64,
-  "minecraft:lantern": 64,
-  "minecraft:soul_lantern": 64,
-  "minecraft:sweet_berries": 64,
-  "minecraft:glow_berries": 64,
-  "minecraft:campfire": 64,
-  "minecraft:soul_campfire": 64,
-  "minecraft:shroomlight": 64,
-  "minecraft:honeycomb": 64,
-  "minecraft:bee_nest": 64,
-  "minecraft:beehive": 64,
-  "minecraft:honey_bottle": 16,
-  "minecraft:honeycomb_block": 64,
-  "minecraft:lodestone": 64,
-  "minecraft:crying_obsidian": 64,
-  "minecraft:blackstone": 64,
-  "minecraft:blackstone_slab": 64,
-  "minecraft:blackstone_stairs": 64,
-  "minecraft:gilded_blackstone": 64,
-  "minecraft:polished_blackstone": 64,
-  "minecraft:polished_blackstone_slab": 64,
-  "minecraft:polished_blackstone_stairs": 64,
-  "minecraft:chiseled_polished_blackstone": 64,
-  "minecraft:polished_blackstone_bricks": 64,
-  "minecraft:polished_blackstone_brick_slab": 64,
-  "minecraft:polished_blackstone_brick_stairs": 64,
-  "minecraft:cracked_polished_blackstone_bricks": 64,
-  "minecraft:respawn_anchor": 64,
-  "minecraft:candle": 64,
-  "minecraft:white_candle": 64,
-  "minecraft:orange_candle": 64,
-  "minecraft:magenta_candle": 64,
-  "minecraft:light_blue_candle": 64,
-  "minecraft:yellow_candle": 64,
-  "minecraft:lime_candle": 64,
-  "minecraft:pink_candle": 64,
-  "minecraft:gray_candle": 64,
-  "minecraft:light_gray_candle": 64,
-  "minecraft:cyan_candle": 64,
-  "minecraft:purple_candle": 64,
-  "minecraft:blue_candle": 64,
-  "minecraft:brown_candle": 64,
-  "minecraft:green_candle": 64,
-  "minecraft:red_candle": 64,
-  "minecraft:black_candle": 64,
-  "minecraft:small_amethyst_bud": 64,
-  "minecraft:medium_amethyst_bud": 64,
-  "minecraft:large_amethyst_bud": 64,
-  "minecraft:amethyst_cluster": 64,
-  "minecraft:pointed_dripstone": 64,
-  "minecraft:bedrock": 64,
-  "minecraft:end_portal_frame": 64,
-  "minecraft:barrier": 64,
-  "minecraft:light": 64,
-  "minecraft:command_block": 64,
-  "minecraft:repeating_command_block": 64,
-  "minecraft:chain_command_block": 64,
-  "minecraft:structure_void": 64,
-  "minecraft:structure_block": 64,
-  "minecraft:jigsaw": 64,
-  "minecraft:sculk_sensor": 64,
-  "minecraft:petrified_oak_slab": 64,
-  "minecraft:spawner": 64,
-  "minecraft:player_head": 64,
-  "minecraft:budding_amethyst": 64,
-  "minecraft:spore_blossom": 64,
-  "minecraft:chorus_plant": 64,
-  "minecraft:dirt_path": 64,
-  "minecraft:farmland": 64,
-  "minecraft:infested_stone": 64,
-  "minecraft:infested_cobblestone": 64,
-  "minecraft:infested_stone_bricks": 64,
-  "minecraft:infested_mossy_stone_bricks": 64,
-  "minecraft:infested_cracked_stone_bricks": 64,
-  "minecraft:infested_chiseled_stone_bricks": 64,
-  "minecraft:infested_deepslate": 64,
-  "minecraft:command_block_minecart": 1,
-  "minecraft:knowledge_book": 1,
-  "minecraft:debug_stick": 1,
-  "minecraft:bundle": 1,
-  "minecraft:axolotl_spawn_egg": 64,
-  "minecraft:bat_spawn_egg": 64,
-  "minecraft:bee_spawn_egg": 64,
-  "minecraft:blaze_spawn_egg": 64,
-  "minecraft:cat_spawn_egg": 64,
-  "minecraft:cave_spider_spawn_egg": 64,
-  "minecraft:chicken_spawn_egg": 64,
-  "minecraft:cod_spawn_egg": 64,
-  "minecraft:cow_spawn_egg": 64,
-  "minecraft:creeper_spawn_egg": 64,
-  "minecraft:dolphin_spawn_egg": 64,
-  "minecraft:donkey_spawn_egg": 64,
-  "minecraft:drowned_spawn_egg": 64,
-  "minecraft:elder_guardian_spawn_egg": 64,
-  "minecraft:enderman_spawn_egg": 64,
-  "minecraft:endermite_spawn_egg": 64,
-  "minecraft:evoker_spawn_egg": 64,
-  "minecraft:fox_spawn_egg": 64,
-  "minecraft:ghast_spawn_egg": 64,
-  "minecraft:glow_squid_spawn_egg": 64,
-  "minecraft:goat_spawn_egg": 64,
-  "minecraft:guardian_spawn_egg": 64,
-  "minecraft:hoglin_spawn_egg": 64,
-  "minecraft:horse_spawn_egg": 64,
-  "minecraft:husk_spawn_egg": 64,
-  "minecraft:llama_spawn_egg": 64,
-  "minecraft:magma_cube_spawn_egg": 64,
-  "minecraft:mooshroom_spawn_egg": 64,
-  "minecraft:mule_spawn_egg": 64,
-  "minecraft:ocelot_spawn_egg": 64,
-  "minecraft:panda_spawn_egg": 64,
-  "minecraft:parrot_spawn_egg": 64,
-  "minecraft:phantom_spawn_egg": 64,
-  "minecraft:pig_spawn_egg": 64,
-  "minecraft:piglin_spawn_egg": 64,
-  "minecraft:piglin_brute_spawn_egg": 64,
-  "minecraft:pillager_spawn_egg": 64,
-  "minecraft:polar_bear_spawn_egg": 64,
-  "minecraft:pufferfish_spawn_egg": 64,
-  "minecraft:rabbit_spawn_egg": 64,
-  "minecraft:ravager_spawn_egg": 64,
-  "minecraft:salmon_spawn_egg": 64,
-  "minecraft:sheep_spawn_egg": 64,
-  "minecraft:shulker_spawn_egg": 64,
-  "minecraft:silverfish_spawn_egg": 64,
-  "minecraft:skeleton_spawn_egg": 64,
-  "minecraft:skeleton_horse_spawn_egg": 64,
-  "minecraft:slime_spawn_egg": 64,
-  "minecraft:spider_spawn_egg": 64,
-  "minecraft:squid_spawn_egg": 64,
-  "minecraft:stray_spawn_egg": 64,
-  "minecraft:strider_spawn_egg": 64,
-  "minecraft:trader_llama_spawn_egg": 64,
-  "minecraft:tropical_fish_spawn_egg": 64,
-  "minecraft:turtle_spawn_egg": 64,
-  "minecraft:vex_spawn_egg": 64,
-  "minecraft:villager_spawn_egg": 64,
-  "minecraft:vindicator_spawn_egg": 64,
-  "minecraft:wandering_trader_spawn_egg": 64,
-  "minecraft:witch_spawn_egg": 64,
-  "minecraft:wither_skeleton_spawn_egg": 64,
-  "minecraft:wolf_spawn_egg": 64,
-  "minecraft:zoglin_spawn_egg": 64,
-  "minecraft:zombie_spawn_egg": 64,
-  "minecraft:zombie_horse_spawn_egg": 64,
-  "minecraft:zombie_villager_spawn_egg": 64,
-  "minecraft:zombified_piglin_spawn_egg": 64
-}
\ No newline at end of file
diff --git a/litematicparse/tags.json b/litematicparse/tags.json
deleted file mode 100644
index 843529a..0000000
--- a/litematicparse/tags.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
-  "minecraft:iron_door": "door",
-  "minecraft:oak_door": "door",
-  "minecraft:spruce_door": "door",
-  "minecraft:birch_door": "door",
-  "minecraft:jungle_door": "door",
-  "minecraft:acacia_door": "door",
-  "minecraft:dark_oak_door": "door",
-  "minecraft:crimson_door": "door",
-  "minecraft:warped_door": "door",
-  "minecraft:sea_pickle": ["multiblock", "pickles"],
-  "minecraft:turtle_egg": ["multiblock", "eggs"],
-  "minecraft:black_candle": ["multiblock", "candles"],
-  "minecraft:gray_candle": ["multiblock", "candles"],
-  "minecraft:light_gray_candle": ["multiblock", "candles"],
-  "minecraft:white_candle": ["multiblock", "candles"],
-  "minecraft:red_candle": ["multiblock", "candles"],
-  "minecraft:orange_candle": ["multiblock", "candles"],
-  "minecraft:yellow_candle": ["multiblock", "candles"],
-  "minecraft:lime_candle": ["multiblock", "candles"],
-  "minecraft:green_candle": ["multiblock", "candles"],
-  "minecraft:cyan_candle": ["multiblock", "candles"],
-  "minecraft:light_blue_candle": ["multiblock", "candles"],
-  "minecraft:blue_candle": ["multiblock", "candles"],
-  "minecraft:purple_candle": ["multiblock", "candles"],
-  "minecraft:magenta_candle": ["multiblock", "candles"],
-  "minecraft:pink_candle": ["multiblock", "candles"],
-  "minecraft:brown_candle": ["multiblock", "candles"],
-  "minecraft:candle": ["multiblock", "candles"]
-}
\ No newline at end of file
diff --git a/requirements.txt b/requirements.txt
index a364317..bc4de0c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
-bitstring~=3.1.9
-python_nbt~=1.2.0
\ No newline at end of file
+nbtlib~=2.0.4
+mezmorize~=0.28.2
+click~=8.0.4
\ No newline at end of file
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..2f3bf02
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,16 @@
+from setuptools import setup, find_packages
+
+setup(
+    name='litematica-tools',
+    version='1.0.0',
+    packages=find_packages(),
+    include_package_data=True,
+    install_requires=[
+        'Click',
+    ],
+    entry_points={
+        'console_scripts': [
+            'litematica = litematica_tools.scripts.cli:cli',
+        ],
+    },
+)


Test patch:
diff --git a/tests/test.py b/tests/test.py
index 91707df..4e97097 100644
--- a/tests/test.py
+++ b/tests/test.py
@@ -1,38 +1,23 @@
-import json
-import litematicparse
+import time
 
-schem = litematicparse.Litematic('CCS_Raid_Full.litematic')
-schem.write_json('test.json')
+from litematica_tools import MaterialList, NBT_File
+from litematica_tools.material_list import localise, dsort
 
-#print(schem.block_count())
+x = {}
+times = []
+start = time.time()
+schem = NBT_File('schematics/test.nbt')
+print(f'File: {schem.file}')
+bmatl = localise(dsort(MaterialList(schem).block_list()))
+imatl = localise(dsort(MaterialList(schem).item_list()))
+ematl = localise(dsort(MaterialList(schem).entity_list()))
+tmatl = localise(dsort(MaterialList(schem).totals_list()))
+end = time.time()
+times.append(end - start)
 
-print(schem.regions)
+print(f'Blocks: {bmatl}')
+print(f'Items: {imatl}')
+print(f'Entities: {ematl}')
+print(f'Totals: {tmatl}')
 
-
-rg = 'Y:63, Chunk coords: 0, 0'
-
-#print(schem.regions[rg].get_block(0, 0, 1))
-print(schem.regions[rg].block_count())
-
-for i in schem.regions[rg].block_iterator():
-    print(i)
-#
-#
-# blocks = schem.regions[rg].block_count()
-# items = schem.regions[rg].inventory_count()
-# entities = schem.regions[rg].entity_count()
-# total = blocks + items + entities
-#
-# print(f"Blocks: {blocks.raw_counts}\n")
-# print(f"Items: {items.raw_counts}\n")
-# print(f"Entities: {entities.raw_counts}\n")
-# print(f"Total: {total.raw_counts}")
-#
-# with open(f'blocks.json', 'w') as f:
-#     json.dump(blocks.sorted_counts(), f, indent=2)
-# with open('items.json', 'w') as f:
-#     json.dump(items.sorted_counts(), f, indent=2)
-# with open('entities.json', 'w') as f:
-#     json.dump(entities.sorted_counts(), f, indent=2)
-# with open('total.json', 'w') as f:
-#     json.dump(total.sorted_counts(), f, indent=2)
+print(f'Total time: {sum(times) / len(times)} s')